add javadoc
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@814602 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/sigil/common/core/src/org/apache/felix/sigil/model/ICompoundModelElement.java b/sigil/common/core/src/org/apache/felix/sigil/model/ICompoundModelElement.java
index 374ef2b..143c7cd 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/model/ICompoundModelElement.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/model/ICompoundModelElement.java
@@ -23,20 +23,54 @@
import java.util.Set;
+/**
+ * Represents a model element that is made up of sub model elements.
+ *
+ * @author dave
+ *
+ */
public interface ICompoundModelElement extends IModelElement
{
+ /**
+ * Calls the applicable set/add method of this model to add the element to this part of the model.
+ *
+ * @param children
+ * @return
+ * @throws InvalidModelException
+ */
boolean addChild( IModelElement children ) throws InvalidModelException;
+ /**
+ * Calls the applicable set/remove method of this model to remove the element from this part of the model
+ * @param children
+ * @return
+ */
boolean removeChild( IModelElement children );
+ /**
+ * List all direct child elements of this model element.
+ * @return
+ */
IModelElement[] children();
+ /**
+ * Visits child elements of this model element, recursing down to sub compound elements when found.
+ *
+ * @param walker
+ */
void visit( IModelWalker walker );
+ /**
+ * Searches the model to find all child model elements which match the specified type
+ *
+ * @param <T>
+ * @param type
+ * @return
+ */
<T extends IModelElement> T[] childrenOfType( Class<T> type );
diff --git a/sigil/common/core/src/org/apache/felix/sigil/model/IModelElement.java b/sigil/common/core/src/org/apache/felix/sigil/model/IModelElement.java
index 6dc521a..073b4ce 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/model/IModelElement.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/model/IModelElement.java
@@ -25,8 +25,7 @@
/**
- * Descriptors represent static information about component, composite or system. They allow other services to decide
- * how to deal with the given entity without the need to directly interact with the entity.
+ * IModelElement represent static information about a part of a model.
*
* @author dave
*
@@ -34,7 +33,7 @@
public interface IModelElement extends Cloneable
{
/**
- * A brief human readable description of the component, composite or system.
+ * A brief human readable description of the element.
*
* @return
*/
@@ -42,7 +41,7 @@
/**
- * A set of key value pairs designed for use by a machine to classify a particular component, composite or system.
+ * A set of key value pairs designed for use by a machine to classify a particular element.
*
* @return
*/
@@ -51,7 +50,7 @@
/**
* Set meta data on this descriptor. Meta data is designed for use by a machine to classify or further enhance a
- * particular component, composite or system.
+ * particular element.
*
* @param meta
*/
@@ -59,7 +58,7 @@
/**
- * Check to see if this descriptor defines a complete set of properties. The definition of what constitutes a
+ * Check to see if this element defines a complete set of properties. The definition of what constitutes a
* complete set is up to the implementing class.
*
* @throws InvalidModelException
diff --git a/sigil/common/core/src/org/apache/felix/sigil/model/IModelWalker.java b/sigil/common/core/src/org/apache/felix/sigil/model/IModelWalker.java
index b058efa..93de16f 100644
--- a/sigil/common/core/src/org/apache/felix/sigil/model/IModelWalker.java
+++ b/sigil/common/core/src/org/apache/felix/sigil/model/IModelWalker.java
@@ -20,7 +20,22 @@
package org.apache.felix.sigil.model;
+/**
+ * Visitor pattern to traverse nodes in the model.
+ *
+ * @see ICompoundModelElement#visit(IModelWalker);
+ *
+ * @author dave
+ *
+ */
public interface IModelWalker
{
+ /**
+ * Callback method providing the part of the model currently being visited.
+ *
+ * @param element the element being visited
+ *
+ * @return true to continue walking the model, false otherwise
+ */
boolean visit( IModelElement element );
}