[dna-commits] DNA SVN: r506 - in trunk/extensions/dna-sequencer-java/src: test/java/org/jboss/dna/sequencer/java and 1 other directory.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Mon Sep 8 12:25:57 EDT 2008


Author: spagop
Date: 2008-09-08 12:25:57 -0400 (Mon, 08 Sep 2008)
New Revision: 506

Added:
   trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/ArrayTypeFieldMetadataSequencer.java
   trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/VariableSequencer.java
Modified:
   trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/AbstractJavaMetadata.java
   trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/CompilationUnitParser.java
   trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/JavaMetadataSequencer.java
   trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/JavaSourceCndDefinition.java
   trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/SimpleTypeMetadataSequencer.java
   trunk/extensions/dna-sequencer-java/src/test/java/org/jboss/dna/sequencer/java/JavaMetadataSequencerTest.java
   trunk/extensions/dna-sequencer-java/src/test/java/org/jboss/dna/sequencer/java/JavaMetadataTest.java
Log:
enhancement of sequencer and meta data to support array type

Modified: trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/AbstractJavaMetadata.java
===================================================================
--- trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/AbstractJavaMetadata.java	2008-09-05 20:01:49 UTC (rev 505)
+++ trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/AbstractJavaMetadata.java	2008-09-08 16:25:57 UTC (rev 506)
@@ -45,6 +45,7 @@
 import org.eclipse.jdt.core.dom.Type;
 import org.eclipse.jdt.core.dom.TypeDeclaration;
 import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
+import org.jboss.dna.common.util.ArgCheck;
 import org.jboss.dna.sequencer.java.metadata.ArrayTypeFieldMetadata;
 import org.jboss.dna.sequencer.java.metadata.ClassMetadata;
 import org.jboss.dna.sequencer.java.metadata.ConstructorMetadata;
@@ -301,57 +302,28 @@
     @SuppressWarnings( "unchecked" )
     protected void processParametersOfMethodDeclaration( MethodDeclaration methodDeclaration,
                                                          MethodMetadata methodMetadata ) {
-        List<SingleVariableDeclaration> params = methodDeclaration.parameters();
-        for (SingleVariableDeclaration singleVariableDeclaration : params) {
+        for (SingleVariableDeclaration singleVariableDeclaration : (List<SingleVariableDeclaration>)methodDeclaration.parameters()) {
             Type type = singleVariableDeclaration.getType();
             if (type.isPrimitiveType()) {
-                PrimitiveFieldMetadata primitiveFieldMetadata = new PrimitiveFieldMetadata();
-                primitiveFieldMetadata.setType(((PrimitiveType)type).getPrimitiveTypeCode().toString());
-                Variable variable = new Variable();
-                variable.setName(JavaMetadataUtil.getName(singleVariableDeclaration.getName()));
-                primitiveFieldMetadata.getVariables().add(variable);
-                List<IExtendedModifier> extendedModifiers = singleVariableDeclaration.modifiers();
-                for (IExtendedModifier extendedModifier : extendedModifiers) {
-                    ModifierMetadata modifierMetadata = new ModifierMetadata();
-                    if (extendedModifier.isAnnotation()) {
-                        // TODO
-                    } else {
-                        Modifier modifier = (Modifier)extendedModifier;
-                        modifierMetadata.setName(modifier.getKeyword().toString());
-                        primitiveFieldMetadata.getModifiers().add(modifierMetadata);
-                    }
-                }
+                PrimitiveFieldMetadata primitiveFieldMetadata = (PrimitiveFieldMetadata)processVariableDeclaration(singleVariableDeclaration,
+                                                                                                                   type);
                 methodMetadata.getParameters().add(primitiveFieldMetadata);
             }
             if (type.isParameterizedType()) {
-                // TODO
+                ParameterizedTypeFieldMetadata parameterizedTypeFieldMetadata = (ParameterizedTypeFieldMetadata)processVariableDeclaration(singleVariableDeclaration,
+                                                                                                                                           type);
+                methodMetadata.getParameters().add(parameterizedTypeFieldMetadata);
             }
             if (type.isQualifiedType()) {
                 // TODO
             }
             if (type.isSimpleType()) {
-                SimpleType simpleType = (SimpleType)type;
-                SimpleTypeFieldMetadata simpleTypeFieldMetadata = new SimpleTypeFieldMetadata();
-                simpleTypeFieldMetadata.setType(JavaMetadataUtil.getName(simpleType.getName()));
-                Variable variable = new Variable();
-                variable.setName(JavaMetadataUtil.getName(singleVariableDeclaration.getName()));
-                simpleTypeFieldMetadata.getVariables().add(variable);
-                List<IExtendedModifier> extendedModifiers = singleVariableDeclaration.modifiers();
-                for (IExtendedModifier extendedModifier2 : extendedModifiers) {
-                    ModifierMetadata modifierMetadata = new ModifierMetadata();
-                    if (extendedModifier2.isAnnotation()) {
-                        // TODO
-                    } else {
-                        Modifier modifier = (Modifier)extendedModifier2;
-                        modifierMetadata.setName(modifier.getKeyword().toString());
-                        simpleTypeFieldMetadata.getModifiers().add(modifierMetadata);
-                    }
-                }
+                SimpleTypeFieldMetadata simpleTypeFieldMetadata = (SimpleTypeFieldMetadata)processVariableDeclaration(singleVariableDeclaration, type);
                 methodMetadata.getParameters().add(simpleTypeFieldMetadata);
             }
             if (type.isArrayType()) {
-                
-                
+                ArrayTypeFieldMetadata arrayTypeFieldMetadata = (ArrayTypeFieldMetadata)processVariableDeclaration(singleVariableDeclaration, type);
+                methodMetadata.getParameters().add(arrayTypeFieldMetadata);
             }
             if (type.isWildcardType()) {
                 // TODO
@@ -361,6 +333,131 @@
     }
 
     /**
+     * Process a {@link SingleVariableDeclaration} of a {@link MethodDeclaration}.
+     * 
+     * @param singleVariableDeclaration
+     * @param type
+     * @return a field meta data.
+     */
+    @SuppressWarnings( "unchecked" )
+    private FieldMetadata processVariableDeclaration( SingleVariableDeclaration singleVariableDeclaration,
+                                                      Type type ) {
+
+        Variable variable;
+        if (type.isPrimitiveType()) {
+            PrimitiveFieldMetadata primitiveFieldMetadata = new PrimitiveFieldMetadata();
+            primitiveFieldMetadata.setType(((PrimitiveType)type).getPrimitiveTypeCode().toString());
+            variable = new Variable();
+            variable.setName(JavaMetadataUtil.getName(singleVariableDeclaration.getName()));
+            primitiveFieldMetadata.getVariables().add(variable);
+            for (IExtendedModifier extendedModifier : (List<IExtendedModifier>)singleVariableDeclaration.modifiers()) {
+                ModifierMetadata modifierMetadata = new ModifierMetadata();
+                if (extendedModifier.isAnnotation()) {
+                    // TODO
+                } else {
+                    Modifier modifier = (Modifier)extendedModifier;
+                    modifierMetadata.setName(modifier.getKeyword().toString());
+                    primitiveFieldMetadata.getModifiers().add(modifierMetadata);
+                }
+            }
+            return primitiveFieldMetadata;
+        }
+        if(type.isSimpleType()) {
+            SimpleType simpleType = (SimpleType)type;
+            SimpleTypeFieldMetadata simpleTypeFieldMetadata = new SimpleTypeFieldMetadata();
+            simpleTypeFieldMetadata.setType(JavaMetadataUtil.getName(simpleType.getName()));
+            variable = new Variable();
+            variable.setName(JavaMetadataUtil.getName(singleVariableDeclaration.getName()));
+            simpleTypeFieldMetadata.getVariables().add(variable);
+            for (IExtendedModifier simpleTypeExtendedModifier : (List<IExtendedModifier> )singleVariableDeclaration.modifiers()) {
+                ModifierMetadata modifierMetadata = new ModifierMetadata();
+                if (simpleTypeExtendedModifier.isAnnotation()) {
+                    // TODO
+                } else {
+                    Modifier modifier = (Modifier)simpleTypeExtendedModifier;
+                    modifierMetadata.setName(modifier.getKeyword().toString());
+                    simpleTypeFieldMetadata.getModifiers().add(modifierMetadata);
+                }
+            }
+            return simpleTypeFieldMetadata;
+        }
+        if (type.isParameterizedType()) {
+            ParameterizedTypeFieldMetadata parameterizedTypeFieldMetadata = new ParameterizedTypeFieldMetadata();
+            ParameterizedType parameterizedType = (ParameterizedType)type;
+            parameterizedTypeFieldMetadata.setType(getTypeName(parameterizedType));
+            variable = new Variable();
+            variable.setName(JavaMetadataUtil.getName(singleVariableDeclaration.getName()));
+            parameterizedTypeFieldMetadata.getVariables().add(variable);
+            for (IExtendedModifier parameterizedExtendedModifier : (List<IExtendedModifier>)singleVariableDeclaration.modifiers()) {
+                ModifierMetadata modifierMetadata = new ModifierMetadata();
+                if(parameterizedExtendedModifier.isAnnotation()) {
+                    // TODO
+                } else {
+                    Modifier modifier = (Modifier)parameterizedExtendedModifier;
+                    modifierMetadata.setName(modifier.getKeyword().toString());
+                    parameterizedTypeFieldMetadata.getModifiers().add(modifierMetadata); 
+                }
+            }
+            return parameterizedTypeFieldMetadata;
+        }
+        if(type.isArrayType()) {
+            ArrayTypeFieldMetadata arrayTypeFieldMetadata = new ArrayTypeFieldMetadata();
+            ArrayType arrayType = (ArrayType)type;
+            arrayTypeFieldMetadata.setType(getTypeName(arrayType));
+            variable = new Variable();
+            variable.setName(JavaMetadataUtil.getName(singleVariableDeclaration.getName()));
+            arrayTypeFieldMetadata.getVariables().add(variable);
+            
+            for (IExtendedModifier arrayTypeExtendedModifier : (List<IExtendedModifier>)singleVariableDeclaration.modifiers()) {
+                ModifierMetadata modifierMetadata = new ModifierMetadata();
+                if(arrayTypeExtendedModifier.isAnnotation()) {
+                    // TODO
+                } else {
+                    Modifier modifier = (Modifier)arrayTypeExtendedModifier;
+                    modifierMetadata.setName(modifier.getKeyword().toString());
+                    arrayTypeFieldMetadata.getModifiers().add(modifierMetadata); 
+                }
+            }
+            return arrayTypeFieldMetadata;
+        }
+        return null;
+    }
+
+    /**
+     * Extract the type name
+     * 
+     * @param type - the type to be processed. This can be primitive, simple, parameterized ...
+     * @return the name of a type.
+     * @throws IllegalArgumentException if type is null.
+     */
+    private String getTypeName( Type type ) {
+        ArgCheck.isNotNull(type, "type");
+        if (type.isPrimitiveType()) {
+            PrimitiveType primitiveType = (PrimitiveType)type;
+            return primitiveType.getPrimitiveTypeCode().toString();
+        }
+        if (type.isSimpleType()) {
+            SimpleType simpleType = (SimpleType)type;
+            return JavaMetadataUtil.getName(simpleType.getName());
+        }
+        if(type.isArrayType()) {
+            ArrayType arrayType = (ArrayType)type;
+            // the element type is never an array type
+            Type elementType = arrayType.getElementType();
+            if (elementType.isPrimitiveType()) {
+             return ((PrimitiveType)elementType).getPrimitiveTypeCode().toString();
+
+            }
+            // can't be an array type
+            if (elementType.isSimpleType()) {
+                return JavaMetadataUtil.getName(((SimpleType)elementType).getName());
+            }
+            
+        }
+        return null;
+    }
+
+    /**
      * Get {@link ConstructorMetadata}
      * 
      * @param methodDeclaration
@@ -446,7 +543,7 @@
             processModifiersAndVariablesOfFieldDeclaration(fieldDeclaration, arrayTypeFieldMetadata);
             return arrayTypeFieldMetadata;
         }
-        
+
         return null;
     }
 

Added: trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/ArrayTypeFieldMetadataSequencer.java
===================================================================
--- trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/ArrayTypeFieldMetadataSequencer.java	                        (rev 0)
+++ trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/ArrayTypeFieldMetadataSequencer.java	2008-09-08 16:25:57 UTC (rev 506)
@@ -0,0 +1,118 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors. 
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.dna.sequencer.java;
+
+import java.util.List;
+import org.jboss.dna.sequencer.java.metadata.ArrayTypeFieldMetadata;
+import org.jboss.dna.sequencer.java.metadata.ModifierMetadata;
+import org.jboss.dna.sequencer.java.metadata.Variable;
+import org.jboss.dna.spi.graph.NameFactory;
+import org.jboss.dna.spi.graph.Path;
+import org.jboss.dna.spi.graph.PathFactory;
+import org.jboss.dna.spi.sequencers.SequencerOutput;
+
+/**
+ * Sequencer for array types.
+ * 
+ * @author Serge Pagop
+ */
+public class ArrayTypeFieldMetadataSequencer implements JavaSourceCndDefinition {
+
+    /**
+     * Sequence all formal parameters of a method.
+     * 
+     * @param output - the {@link SequencerOutput}.
+     * @param nameFactory - the {@link NameFactory}.
+     * @param pathFactory - the {@link PathFactory}.
+     * @param arrayTypeFieldMetadata - the meta data of a array type.
+     * @param methodParamRootPath - Base path of the method declaration.
+     */
+    public static void sequenceMethodFormalParam( SequencerOutput output,
+                                                  NameFactory nameFactory,
+                                                  PathFactory pathFactory,
+                                                  ArrayTypeFieldMetadata arrayTypeFieldMetadata,
+                                                  String methodParamRootPath ) {
+        String methodFormalParamRootPath = ArrayTypeFieldMetadataSequencer.createRootPath(methodParamRootPath);
+        Path methodParamChildNode = pathFactory.create(methodFormalParamRootPath);
+        output.setProperty(methodParamChildNode, nameFactory.create(JAVA_ARRAY_TYPE_NAME), arrayTypeFieldMetadata.getType());
+        Path ArrayTypeVariableChildNode = pathFactory.create(JavaMetadataUtil.createPath(methodFormalParamRootPath + SLASH
+                                                                                         + JAVA_ARRAY_TYPE_VARIABLE + SLASH
+                                                                                         + JAVA_VARIABLE));
+        for (Variable variable : arrayTypeFieldMetadata.getVariables()) {
+            VariableSequencer.sequenceTheVariable(output, nameFactory, variable, ArrayTypeVariableChildNode);
+        }
+
+    }
+
+    /**
+     * the root path.
+     * 
+     * @param basePath - the base path to use to build a root path.
+     * @return the root path, that is compose from other base path.
+     */
+    public static String createRootPath( String basePath ) {
+        return JavaMetadataUtil.createPath(basePath + SLASH + JAVA_TYPE_CHILD_NODE + SLASH + JAVA_ARRAY_TYPE_CHILD_NODE);
+    }
+
+    /**
+     * Sequence member data of array type.
+     * 
+     * @param arrayTypeFieldMetadata
+     * @param pathFactory
+     * @param nameFactory
+     * @param output
+     * @param path
+     * @param index
+     */
+    public static void sequenceFieldMemberData( ArrayTypeFieldMetadata arrayTypeFieldMetadata,
+                                                PathFactory pathFactory,
+                                                NameFactory nameFactory,
+                                                SequencerOutput output,
+                                                String path,
+                                                int index ) {
+
+        // type
+        Path arryTypeChildNode = pathFactory.create(path);
+        output.setProperty(arryTypeChildNode, nameFactory.create(JAVA_ARRAY_TYPE_NAME), arrayTypeFieldMetadata.getType());
+        // modifiers
+        List<ModifierMetadata> modifiers = arrayTypeFieldMetadata.getModifiers();
+        int arrayModifierIndex = 1;
+        for (ModifierMetadata modifierMetadata : modifiers) {
+            String modifierPath = JavaMetadataUtil.createPathWithIndex(path + SLASH + JAVA_ARRAY_TYPE_MODIFIER_CHILD_NODE + SLASH
+                                                                       + JAVA_MODIFIER_DECLARATION_CHILD_NODE, arrayModifierIndex);
+            Path modifierChildNode = pathFactory.create(modifierPath);
+            output.setProperty(modifierChildNode, nameFactory.create(JAVA_MODIFIER_NAME), modifierMetadata.getName());
+            arrayModifierIndex++;
+        }
+        // variables
+        List<Variable> variables = arrayTypeFieldMetadata.getVariables();
+        int arrayVariableIndex = 1;
+        for (Variable variable : variables) {
+            String variablePath = JavaMetadataUtil.createPathWithIndex(path + SLASH + JAVA_ARRAY_TYPE_VARIABLE + SLASH
+                                                                       + JAVA_VARIABLE, arrayVariableIndex);
+            Path primitiveChildNode = pathFactory.create(variablePath);
+            VariableSequencer.sequenceTheVariable(output, nameFactory, variable, primitiveChildNode);
+            arrayVariableIndex++;
+        }
+    }
+
+}

Modified: trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/CompilationUnitParser.java
===================================================================
--- trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/CompilationUnitParser.java	2008-09-05 20:01:49 UTC (rev 505)
+++ trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/CompilationUnitParser.java	2008-09-08 16:25:57 UTC (rev 506)
@@ -26,7 +26,7 @@
 import org.eclipse.jdt.core.dom.ASTParser;
 
 /**
- * The Parser, tha process the a compilation unit.
+ * The Parser, that process the a compilation unit.
  * 
  * @author Serge Pagop
  */

Modified: trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/JavaMetadataSequencer.java
===================================================================
--- trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/JavaMetadataSequencer.java	2008-09-05 20:01:49 UTC (rev 505)
+++ trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/JavaMetadataSequencer.java	2008-09-08 16:25:57 UTC (rev 506)
@@ -301,11 +301,13 @@
             for (TypeMetadata typeMetadata : javaMetadata.getTypeMetadata()) {
                 // class declaration
                 if (typeMetadata instanceof ClassMetadata) {
+
+                    String normalClassRootPath = JAVA_COMPILATION_UNIT_NODE + SLASH + JAVA_UNIT_TYPE_CHILD_NODE + SLASH
+                                                 + JAVA_CLASS_DECLARATION_CHILD_NODE + SLASH + JAVA_NORMAL_CLASS_CHILD_NODE
+                                                 + SLASH + JAVA_NORMAL_CLASS_DECLARATION_CHILD_NODE;
+
                     ClassMetadata classMetadata = (ClassMetadata)typeMetadata;
-                    Path classChildNode = pathFactory.create(JAVA_COMPILATION_UNIT_NODE + SLASH + JAVA_UNIT_TYPE_CHILD_NODE
-                                                             + SLASH + JAVA_CLASS_DECLARATION_CHILD_NODE + SLASH
-                                                             + JAVA_NORMAL_CLASS_CHILD_NODE + SLASH
-                                                             + JAVA_NORMAL_CLASS_DECLARATION_CHILD_NODE);
+                    Path classChildNode = pathFactory.create(normalClassRootPath);
                     output.setProperty(classChildNode, nameFactory.create(JAVA_NORMAL_CLASS_NAME), classMetadata.getName());
 
                     // process modifiers of the class declaration
@@ -313,13 +315,8 @@
                     int modifierIndex = 1;
                     for (ModifierMetadata modifierMetadata : classModifiers) {
 
-                        Path classModifierChildNode = pathFactory.create(JAVA_COMPILATION_UNIT_NODE + SLASH
-                                                                         + JAVA_UNIT_TYPE_CHILD_NODE + SLASH
-                                                                         + JAVA_CLASS_DECLARATION_CHILD_NODE + SLASH
-                                                                         + JAVA_NORMAL_CLASS_CHILD_NODE + SLASH
-                                                                         + JAVA_NORMAL_CLASS_DECLARATION_CHILD_NODE + SLASH
-                                                                         + JAVA_MODIFIER_CHILD_NODE + SLASH
-                                                                         + JAVA_MODIFIER_DECLARATION_CHILD_NODE + "["
+                        Path classModifierChildNode = pathFactory.create(normalClassRootPath + SLASH + JAVA_MODIFIER_CHILD_NODE
+                                                                         + SLASH + JAVA_MODIFIER_DECLARATION_CHILD_NODE + "["
                                                                          + modifierIndex + "]");
 
                         output.setProperty(classModifierChildNode,
@@ -331,24 +328,16 @@
                     int primitiveIndex = 1;
                     int simpleIndex = 1;
                     int parameterizedIndex = 1;
+                    int arrayIndex = 1;
                     for (FieldMetadata fieldMetadata : classMetadata.getFields()) {
+                        String fieldMemberDataRootPath = JavaMetadataUtil.createPath(normalClassRootPath + SLASH
+                                                                                     + JAVA_FIELD_CHILD_NODE + SLASH
+                                                                                     + JAVA_FIELD_TYPE_CHILD_NODE + SLASH
+                                                                                     + JAVA_TYPE_CHILD_NODE);
                         if (fieldMetadata instanceof PrimitiveFieldMetadata) {
                             // primitive type
                             PrimitiveFieldMetadata primitiveFieldMetadata = (PrimitiveFieldMetadata)fieldMetadata;
-                            String primitiveFieldRootPath = JavaMetadataUtil.createPathWithIndex(JAVA_COMPILATION_UNIT_NODE
-                                                                                                 + SLASH
-                                                                                                 + JAVA_UNIT_TYPE_CHILD_NODE
-                                                                                                 + SLASH
-                                                                                                 + JAVA_CLASS_DECLARATION_CHILD_NODE
-                                                                                                 + SLASH
-                                                                                                 + JAVA_NORMAL_CLASS_CHILD_NODE
-                                                                                                 + SLASH
-                                                                                                 + JAVA_NORMAL_CLASS_DECLARATION_CHILD_NODE
-                                                                                                 + SLASH + JAVA_FIELD_CHILD_NODE
-                                                                                                 + SLASH
-                                                                                                 + JAVA_FIELD_TYPE_CHILD_NODE
-                                                                                                 + SLASH + JAVA_TYPE_CHILD_NODE
-                                                                                                 + SLASH
+                            String primitiveFieldRootPath = JavaMetadataUtil.createPathWithIndex(fieldMemberDataRootPath + SLASH
                                                                                                  + JAVA_PRIMITIVE_TYPE_CHILD_NODE,
                                                                                                  primitiveIndex);
                             // type
@@ -379,7 +368,7 @@
                                                                                            + JAVA_VARIABLE,
                                                                                            primitiveVariableIndex);
                                 Path primitiveChildNode = pathFactory.create(variablePath);
-                                sequenceTheVariable(output, nameFactory, variable, primitiveChildNode);
+                                VariableSequencer.sequenceTheVariable(output, nameFactory, variable, primitiveChildNode);
                                 primitiveVariableIndex++;
                             }
                             primitiveIndex++;
@@ -387,8 +376,17 @@
 
                         // Array type
                         if (fieldMetadata instanceof ArrayTypeFieldMetadata) {
-                            @SuppressWarnings( "unused" )
                             ArrayTypeFieldMetadata arrayTypeFieldMetadata = (ArrayTypeFieldMetadata)fieldMetadata;
+                            String arrayTypeRootPath = JavaMetadataUtil.createPathWithIndex(fieldMemberDataRootPath + SLASH
+                                                                                            + JAVA_ARRAY_TYPE_CHILD_NODE,
+                                                                                            arrayIndex);
+                            ArrayTypeFieldMetadataSequencer.sequenceFieldMemberData(arrayTypeFieldMetadata,
+                                                                                    pathFactory,
+                                                                                    nameFactory,
+                                                                                    output,
+                                                                                    arrayTypeRootPath,
+                                                                                    arrayIndex);
+                            arrayIndex++;
                         }
 
                         // Simple type
@@ -441,7 +439,7 @@
                                                                                            + JAVA_VARIABLE,
                                                                                            simpleTypeVariableIndex);
                                 Path primitiveChildNode = pathFactory.create(variablePath);
-                                sequenceTheVariable(output, nameFactory, variable, primitiveChildNode);
+                                VariableSequencer.sequenceTheVariable(output, nameFactory, variable, primitiveChildNode);
                                 simpleTypeVariableIndex++;
                             }
 
@@ -484,7 +482,10 @@
                                 Path parameterizedTypeVariableChildNode = ParameterizedTypeFieldMetadataSequencer.getParameterizedTypeFieldVariablePath(pathFactory,
                                                                                                                                                         parameterizedTypeFieldRootPath,
                                                                                                                                                         parameterizedTypeVariableIndex);
-                                sequenceTheVariable(output, nameFactory, variable, parameterizedTypeVariableChildNode);
+                                VariableSequencer.sequenceTheVariable(output,
+                                                                      nameFactory,
+                                                                      variable,
+                                                                      parameterizedTypeVariableChildNode);
                                 parameterizedTypeVariableIndex++;
                             }
 
@@ -562,16 +563,20 @@
                                                                                                                             constructPrimitiveFormalParamRootPath);
                                     // variables
                                     for (Variable variable : primitiveMetadata.getVariables()) {
-                                        sequenceTheVariable(output, nameFactory, variable, constructorPrimitiveParamChildNode);
+                                        VariableSequencer.sequenceTheVariable(output,
+                                                                              nameFactory,
+                                                                              variable,
+                                                                              constructorPrimitiveParamChildNode);
                                     }
                                 }
                                 // Simple type
                                 if (fieldMetadata instanceof SimpleTypeFieldMetadata) {
-                                    processMethodFormalParamOfSimpleType(output,
-                                                                         nameFactory,
-                                                                         pathFactory,
-                                                                         fieldMetadata,
-                                                                         constructorParameterRootPath);
+                                    SimpleTypeFieldMetadata simpleTypeFieldMetadata = (SimpleTypeFieldMetadata)fieldMetadata;
+                                    SimpleTypeMetadataSequencer.sequenceMethodFormalParam(output,
+                                                                                          nameFactory,
+                                                                                          pathFactory,
+                                                                                          simpleTypeFieldMetadata,
+                                                                                          constructorParameterRootPath);
 
                                 }
                                 // parameterized type
@@ -645,7 +650,7 @@
                                                                                                               methodPrimitiveFormalParamRootPath);
                                     // variables
                                     for (Variable variable : primitive.getVariables()) {
-                                        sequenceTheVariable(output, nameFactory, variable, methodParamChildNode);
+                                        VariableSequencer.sequenceTheVariable(output, nameFactory, variable, methodParamChildNode);
                                     }
                                     // type
                                     Path methodPrimitiveTypeParamChildNode = pathFactory.create(methodPrimitiveFormalParamRootPath);
@@ -656,13 +661,23 @@
                                 }
 
                                 if (fieldMetadata instanceof SimpleTypeFieldMetadata) {
-                                    processMethodFormalParamOfSimpleType(output,
-                                                                         nameFactory,
-                                                                         pathFactory,
-                                                                         fieldMetadata,
-                                                                         methodParamRootPath);
+                                    SimpleTypeFieldMetadata simpleTypeFieldMetadata = (SimpleTypeFieldMetadata)fieldMetadata;
+                                    SimpleTypeMetadataSequencer.sequenceMethodFormalParam(output,
+                                                                                          nameFactory,
+                                                                                          pathFactory,
+                                                                                          simpleTypeFieldMetadata,
+                                                                                          methodParamRootPath);
                                 }
+                                if (fieldMetadata instanceof ArrayTypeFieldMetadata) {
+                                    ArrayTypeFieldMetadata arrayTypeFieldMetadata = (ArrayTypeFieldMetadata)fieldMetadata;
+                                    ArrayTypeFieldMetadataSequencer.sequenceMethodFormalParam(output,
+                                                                                              nameFactory,
+                                                                                              pathFactory,
+                                                                                              arrayTypeFieldMetadata,
+                                                                                              methodParamRootPath);
 
+                                }
+
                                 // TODO parameter reference types
 
                                 methodParameterIndex++;
@@ -684,6 +699,10 @@
                                                    methodReturnPrimitiveType.getType());
 
                             }
+                            if(methodReturnType instanceof SimpleTypeFieldMetadata) {
+                                SimpleTypeFieldMetadata simpleTypeFieldMetadata = (SimpleTypeFieldMetadata) methodReturnType;
+                                SimpleTypeMetadataSequencer.sequenceMethodReturnType(output,nameFactory,pathFactory,simpleTypeFieldMetadata,methodRootPath);
+                            }
 
                             // TODO method return reference type
 
@@ -699,48 +718,4 @@
 
         progressMonitor.done();
     }
-
-    /**
-     * Process formal parameter of type simple type .
-     * 
-     * @param output - the {@link SequencerOutput}.
-     * @param nameFactory - The {@link NameFactory}.
-     * @param pathFactory - the {@link PathFactory}.
-     * @param fieldMetadata - the meta data.
-     * @param methodParamRootPath - base path of the parameter.
-     */
-    private void processMethodFormalParamOfSimpleType( SequencerOutput output,
-                                                       NameFactory nameFactory,
-                                                       PathFactory pathFactory,
-                                                       FieldMetadata fieldMetadata,
-                                                       String methodParamRootPath ) {
-        SimpleTypeFieldMetadata simpleTypeFieldMetadata = (SimpleTypeFieldMetadata)fieldMetadata;
-        String methodSimpleTypeFormalParamRootPath = SimpleTypeMetadataSequencer.createRootPath(methodParamRootPath);
-        SimpleTypeMetadataSequencer.sequenceConstructorSimpleTypeName(simpleTypeFieldMetadata,
-                                                                      methodSimpleTypeFormalParamRootPath,
-                                                                      output,
-                                                                      nameFactory,
-                                                                      pathFactory);
-        Path constructorSimpleTypeParamChildNode = SimpleTypeMetadataSequencer.createSimpleTypeParamPath(pathFactory,
-                                                                                                         methodSimpleTypeFormalParamRootPath);
-        for (Variable variable : simpleTypeFieldMetadata.getVariables()) {
-            sequenceTheVariable(output, nameFactory, variable, constructorSimpleTypeParamChildNode);
-        }
-    }
-
-    /**
-     * Sequence a variable.
-     * 
-     * @param output - the {@link SequencerOutput}.
-     * @param nameFactory - the {@link NameFactory}.
-     * @param variable - the variable to be added in the tree.
-     * @param path - the path
-     */
-    private void sequenceTheVariable( SequencerOutput output,
-                                      NameFactory nameFactory,
-                                      Variable variable,
-                                      Path path ) {
-        output.setProperty(path, nameFactory.create(JAVA_VARIABLE_NAME), variable.getName());
-    }
-
 }

Modified: trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/JavaSourceCndDefinition.java
===================================================================
--- trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/JavaSourceCndDefinition.java	2008-09-05 20:01:49 UTC (rev 505)
+++ trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/JavaSourceCndDefinition.java	2008-09-08 16:25:57 UTC (rev 506)
@@ -125,5 +125,12 @@
     public static final String JAVA_PARAMETERIZED_TYPE_MODIFIER_CHILD_NODE ="java:parameterizedTypeModifier";
     public static final String JAVA_PARAMETERIZED_TYPE_NAME ="java:parameterizedTypeName";
     public static final String JAVA_PARAMETERIZED_TYPE_VARIABLE ="java:parameterizedTypeVariable";
+    
+    // Array type
+    public static final String JAVA_ARRAY_TYPE_CHILD_NODE="java:arrayType";
+    public static final String JAVA_ARRAY_TYPE_DESCRIPTION ="java:arrayTypeDescription";
+    public static final String JAVA_ARRAY_TYPE_MODIFIER_CHILD_NODE ="java:arrayTypeModifier";
+    public static final String JAVA_ARRAY_TYPE_NAME ="java:arrayTypeName";
+    public static final String JAVA_ARRAY_TYPE_VARIABLE ="java:arrayTypeVariable";
 
 }

Modified: trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/SimpleTypeMetadataSequencer.java
===================================================================
--- trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/SimpleTypeMetadataSequencer.java	2008-09-05 20:01:49 UTC (rev 505)
+++ trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/SimpleTypeMetadataSequencer.java	2008-09-08 16:25:57 UTC (rev 506)
@@ -22,6 +22,7 @@
 package org.jboss.dna.sequencer.java;
 
 import org.jboss.dna.sequencer.java.metadata.SimpleTypeFieldMetadata;
+import org.jboss.dna.sequencer.java.metadata.Variable;
 import org.jboss.dna.spi.graph.NameFactory;
 import org.jboss.dna.spi.graph.Path;
 import org.jboss.dna.spi.graph.PathFactory;
@@ -39,6 +40,32 @@
     }
 
     /**
+     * @param output
+     * @param nameFactory
+     * @param pathFactory
+     * @param simpleTypeFieldMetadata
+     * @param methodParamRootPath
+     */
+    public static void sequenceMethodFormalParam( SequencerOutput output,
+                                                  NameFactory nameFactory,
+                                                  PathFactory pathFactory,
+                                                  SimpleTypeFieldMetadata simpleTypeFieldMetadata,
+                                                  String methodParamRootPath ) {
+
+        String methodSimpleTypeFormalParamRootPath = SimpleTypeMetadataSequencer.createRootPath(methodParamRootPath);
+        SimpleTypeMetadataSequencer.sequenceConstructorSimpleTypeName(simpleTypeFieldMetadata,
+                                                                      methodSimpleTypeFormalParamRootPath,
+                                                                      output,
+                                                                      nameFactory,
+                                                                      pathFactory);
+        Path methodSimpleTypeParamChildNode = SimpleTypeMetadataSequencer.createSimpleTypeParamPath(pathFactory,
+                                                                                                    methodSimpleTypeFormalParamRootPath);
+        for (Variable variable : simpleTypeFieldMetadata.getVariables()) {
+            VariableSequencer.sequenceTheVariable(output, nameFactory, variable, methodSimpleTypeParamChildNode);
+        }
+    }
+
+    /**
      * the root path.
      * 
      * @param basePath - the base path to use to build a root path.
@@ -79,8 +106,32 @@
      */
     public static Path createSimpleTypeParamPath( PathFactory pathFactory,
                                                   String rootPath ) {
-        String paramVariablePath = JavaMetadataUtil.createPath(rootPath + SLASH + JAVA_SIMPLE_TYPE_VARIABLE + SLASH + JAVA_VARIABLE);
+        String paramVariablePath = JavaMetadataUtil.createPath(rootPath + SLASH + JAVA_SIMPLE_TYPE_VARIABLE + SLASH
+                                                               + JAVA_VARIABLE);
         return pathFactory.create(paramVariablePath);
     }
 
+    /**
+     * Sequence the return type of a method.
+     * 
+     * @param output
+     * @param nameFactory
+     * @param pathFactory
+     * @param simpleTypeFieldMetadata
+     * @param methodRootPath
+     */
+    public static void sequenceMethodReturnType( SequencerOutput output,
+                                                 NameFactory nameFactory,
+                                                 PathFactory pathFactory,
+                                                 SimpleTypeFieldMetadata simpleTypeFieldMetadata,
+                                                 String methodRootPath ) {
+        String methodReturnSimpleTypePath = JavaMetadataUtil.createPath(methodRootPath + SLASH + JAVA_RETURN_TYPE + SLASH
+                                                                        + JAVA_SIMPLE_TYPE_CHILD_NODE);
+
+        Path methodReturnPrimitiveTypeChildNode = pathFactory.create(methodReturnSimpleTypePath);
+        output.setProperty(methodReturnPrimitiveTypeChildNode,
+                           nameFactory.create(JAVA_SIMPLE_TYPE_NAME),
+                           simpleTypeFieldMetadata.getType());
+    }
+
 }

Added: trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/VariableSequencer.java
===================================================================
--- trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/VariableSequencer.java	                        (rev 0)
+++ trunk/extensions/dna-sequencer-java/src/main/java/org/jboss/dna/sequencer/java/VariableSequencer.java	2008-09-08 16:25:57 UTC (rev 506)
@@ -0,0 +1,50 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors. 
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.dna.sequencer.java;
+
+import org.jboss.dna.sequencer.java.metadata.Variable;
+import org.jboss.dna.spi.graph.NameFactory;
+import org.jboss.dna.spi.graph.Path;
+import org.jboss.dna.spi.sequencers.SequencerOutput;
+
+/**
+ * Sequencer for variabels.
+ * @author Perge Pagop
+ *
+ */
+public class VariableSequencer implements JavaSourceCndDefinition {
+    
+    /**
+     * Sequence a variable.
+     * 
+     * @param output - the {@link SequencerOutput}.
+     * @param nameFactory - the {@link NameFactory}.
+     * @param variable - the variable to be added in the tree.
+     * @param path - the path
+     */
+    public static void sequenceTheVariable( SequencerOutput output,
+                                      NameFactory nameFactory,
+                                      Variable variable,
+                                      Path path ) {
+        output.setProperty(path, nameFactory.create(JAVA_VARIABLE_NAME), variable.getName());
+    }
+}

Modified: trunk/extensions/dna-sequencer-java/src/test/java/org/jboss/dna/sequencer/java/JavaMetadataSequencerTest.java
===================================================================
--- trunk/extensions/dna-sequencer-java/src/test/java/org/jboss/dna/sequencer/java/JavaMetadataSequencerTest.java	2008-09-05 20:01:49 UTC (rev 505)
+++ trunk/extensions/dna-sequencer-java/src/test/java/org/jboss/dna/sequencer/java/JavaMetadataSequencerTest.java	2008-09-08 16:25:57 UTC (rev 506)
@@ -161,6 +161,27 @@
                                             "java:variableName"),
                    is(new Object[] {"x"}));
 
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:field/java:fieldType/java:type/java:arrayType[1]",
+                                            "java:arrayTypeName"),
+                   is(new Object[] {"int"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:field/java:fieldType/java:type/java:arrayType[1]/java:arrayTypeVariable/java:variable[1]",
+                                            "java:variableName"),
+                   is(new Object[] {"ia"}));
+
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:field/java:fieldType/java:type/java:arrayType[2]",
+                                            "java:arrayTypeName"),
+                   is(new Object[] {"Object"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:field/java:fieldType/java:type/java:arrayType[2]/java:arrayTypeVariable/java:variable[1]",
+                                            "java:variableName"),
+                   is(new Object[] {"oa"}));
+
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:field/java:fieldType/java:type/java:arrayType[3]",
+                                            "java:arrayTypeName"),
+                   is(new Object[] {"Collection"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:field/java:fieldType/java:type/java:arrayType[3]/java:arrayTypeVariable/java:variable[1]",
+                                            "java:variableName"),
+                   is(new Object[] {"ca"}));
+
         // support for methods sequencing (modifiers, return type, method name, parameters).Not supported are javadoc
 
         // MySource() constructor
@@ -256,6 +277,40 @@
                                             "java:variableName"),
                    is(new Object[] {"o"}));
 
+        // private double doSomething2(Object[] oa, int[] ia) method
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:method/java:methodDeclaration[5]/java:modifier/java:modifierDeclaration[1]",
+                                            "java:modifierName"),
+                   is(new Object[] {"private"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:method/java:methodDeclaration[5]/java:resultType/java:primitiveType",
+                                            "java:primitiveTypeName"),
+                   is(new Object[] {"double"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:method/java:methodDeclaration[5]",
+                                            "java:methodName"),
+                   is(new Object[] {"doSomething2"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:method/java:methodDeclaration[5]/java:parameter/java:formalParameter[1]/java:type/java:arrayType",
+                                            "java:arrayTypeName"),
+                   is(new Object[] {"Object"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:method/java:methodDeclaration[5]/java:parameter/java:formalParameter[1]/java:type/java:arrayType/java:arrayTypeVariable/java:variable",
+                                            "java:variableName"),
+                   is(new Object[] {"oa"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:method/java:methodDeclaration[5]/java:parameter/java:formalParameter[2]/java:type/java:arrayType",
+                                            "java:arrayTypeName"),
+                   is(new Object[] {"int"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:method/java:methodDeclaration[5]/java:parameter/java:formalParameter[2]/java:type/java:arrayType/java:arrayTypeVariable/java:variable",
+                                            "java:variableName"),
+                   is(new Object[] {"ia"}));
+        
+     // public Object doSomething3() method
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:method/java:methodDeclaration[6]/java:modifier/java:modifierDeclaration[1]",
+                                            "java:modifierName"),
+                   is(new Object[] {"public"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:method/java:methodDeclaration[6]/java:resultType/java:simpleType",
+                                            "java:simpleTypeName"),
+                   is(new Object[] {"Object"}));
+        assertThat(output.getPropertyValues("java:compilationUnit/java:unitType/java:classDeclaration/java:normalClass/java:normalClassDeclaration/java:method/java:methodDeclaration[6]",
+                                            "java:methodName"),
+                   is(new Object[] {"doSomething3"}));
+
     }
 
 }

Modified: trunk/extensions/dna-sequencer-java/src/test/java/org/jboss/dna/sequencer/java/JavaMetadataTest.java
===================================================================
--- trunk/extensions/dna-sequencer-java/src/test/java/org/jboss/dna/sequencer/java/JavaMetadataTest.java	2008-09-05 20:01:49 UTC (rev 505)
+++ trunk/extensions/dna-sequencer-java/src/test/java/org/jboss/dna/sequencer/java/JavaMetadataTest.java	2008-09-08 16:25:57 UTC (rev 506)
@@ -157,7 +157,7 @@
                         assertThat(marker.getName(), is("MyClassAnnotation"));
                     }
                 }
-                // get fields
+                // get fields (member data)
                 List<FieldMetadata> fields = classMetadata.getFields();
                 assertNotNull(fields);
                 assertTrue(fields.size() > 0);
@@ -196,15 +196,15 @@
                 assertNotNull(arrayTypeFieldMetadata1);
                 assertTrue(arrayTypeFieldMetadata1.getModifiers().size() > 0);
                 assertThat(arrayTypeFieldMetadata1.getType(), is("int"));
-                assertThat(arrayTypeFieldMetadata1.getVariables().get(0).getName(), is("ai"));
+                assertThat(arrayTypeFieldMetadata1.getVariables().get(0).getName(), is("ia"));
                 
                 ArrayTypeFieldMetadata arrayTypeFieldMetadata2 = (ArrayTypeFieldMetadata)fields.get(6);
                 assertNotNull(arrayTypeFieldMetadata2);
                 assertTrue(arrayTypeFieldMetadata2.getModifiers().size() > 0);
                 assertThat(arrayTypeFieldMetadata2.getType(), is("Object"));
-                assertThat(arrayTypeFieldMetadata2.getVariables().get(0).getName(), is("ao"));
+                assertThat(arrayTypeFieldMetadata2.getVariables().get(0).getName(), is("oa"));
 
-                // get methods
+                // get methods (member functions)
                 List<MethodMetadata> methods = classMetadata.getMethods();
                 assertNotNull(methods);
                 assertTrue(methods.size() > 0);
@@ -250,6 +250,13 @@
                 assertNotNull(methodTypeMemberMetadata5);
                 assertThat(methodTypeMemberMetadata5.getName(), is("doSomething"));
                 assertTrue(methodTypeMemberMetadata5.getParameters().size() > 0);
+                
+                MethodTypeMemberMetadata methodTypeMemberMetadata6 = (MethodTypeMemberMetadata)methods.get(6);
+                assertTrue(methodTypeMemberMetadata6.getModifiers().size() == 1);
+                assertEquals(methodTypeMemberMetadata6.getReturnType().getType(), "double");
+                assertNotNull(methodTypeMemberMetadata6);
+                assertThat(methodTypeMemberMetadata6.getName(), is("doSomething2"));
+                assertTrue(methodTypeMemberMetadata6.getParameters().size() > 0);
             }
         }
     }




More information about the dna-commits mailing list