| Descriptor.java |
/*
* $Id: Descriptor.java,v 1.21 2012/03/03 10:41:19 agoubard Exp $
*
* See the COPYRIGHT file for redistribution and use restrictions.
*/
package org.xins.common.service;
import java.io.Serializable;
import java.util.Iterator;
/**
* Descriptor for a service or group of services.
*
* @version $Revision: 1.21 $ $Date: 2012/03/03 10:41:19 $
* @author <a href="mailto:ernst@ernstdehaan.com">Ernst de Haan</a>
*
* @since XINS 1.0.0
*/
public abstract class Descriptor implements Serializable, Iterable<TargetDescriptor> {
/**
* Constructs a new <code>Descriptor</code>.
*/
Descriptor() {
// empty
}
/**
* Checks if this descriptor denotes a group of descriptor of descriptorss.
*
* @return
* <code>true</code> if this descriptor denotes a group,
* <code>false</code> otherwise.
*/
public abstract boolean isGroup();
/**
* Iterates over all leaves, the target descriptors.
*
* <p>The returned {@link Iterator} will not support
* {@link Iterator#remove()}. The iterator will only return
* {@link TargetDescriptor} instances, no instances of other classes and
* no <code>null</code> values.
*
* <p>Also, this iterator is guaranteed to return {@link #getTargetCount()}
* instances of class {@link TargetDescriptor}.
*
* @return
* iterator over the leaves, the target descriptors, in this
* descriptor, in the correct order, never <code>null</code>.
* @deprecated use the {@link #iterator()} method or even better the for each loop.
*/
@Deprecated
public abstract Iterator iterateTargets();
/**
* Counts the total number of target descriptors in/under this descriptor.
*
* @return
* the total number of target descriptors, always >= 1.
*/
public abstract int getTargetCount();
/**
* Returns the <code>TargetDescriptor</code> that matches the specified
* CRC-32 checksum.
*
* @param crc
* the CRC-32 checksum.
*
* @return
* the {@link TargetDescriptor} that matches the specified checksum, or
* <code>null</code>, if none could be found in this descriptor.
*/
public abstract TargetDescriptor getTargetByCRC(int crc);
}