QualifiedTypeFieldMetadata qualifiedTypeFieldMetadata = (QualifiedTypeFieldMetadata)fieldMetadata;
}
// Parameterized type
if (fieldMetadata instanceof ParameterizedTypeFieldMetadata) {
ParameterizedTypeFieldMetadata parameterizedTypeFieldMetadata = (ParameterizedTypeFieldMetadata)fieldMetadata;
String parameterizedTypeFieldRootPath = ParameterizedTypeFieldMetadataSequencer.getParameterizedTypeFieldRootPath(parameterizedIndex);
ParameterizedTypeFieldMetadataSequencer.sequenceTheParameterizedTypeName(parameterizedTypeFieldMetadata,
parameterizedTypeFieldRootPath,
pathFactory,
nameFactory,
output);
// Parameterized type modifiers
List<ModifierMetadata> parameterizedTypeModifiers = parameterizedTypeFieldMetadata.getModifiers();
int parameterizedTypeModifierIndex = 1;
for (ModifierMetadata modifierMetadata : parameterizedTypeModifiers) {
String parameterizedTypeModifierPath = ParameterizedTypeFieldMetadataSequencer.getParameterizedTypeFieldRModifierPath(parameterizedTypeFieldRootPath,
parameterizedTypeModifierIndex);
ParameterizedTypeFieldMetadataSequencer.sequenceTheParameterizedTypeModifier(modifierMetadata,
parameterizedTypeModifierPath,
pathFactory,
nameFactory,
output);
parameterizedTypeModifierIndex++;
}
// Parameterized type variables
List<Variable> parameterizedTypeVariables = parameterizedTypeFieldMetadata.getVariables();
int parameterizedTypeVariableIndex = 1;
for (Variable variable : parameterizedTypeVariables) {
Path parameterizedTypeVariableChildNode = ParameterizedTypeFieldMetadataSequencer.getParameterizedTypeFieldVariablePath(pathFactory,
parameterizedTypeFieldRootPath,
parameterizedTypeVariableIndex);
VariableSequencer.sequenceTheVariable(output,
nameFactory,
variable,
parameterizedTypeVariableChildNode);
parameterizedTypeVariableIndex++;
}
parameterizedIndex++;
}
}
// process methods of the unit.
List<MethodMetadata> methods = classMetadata.getMethods();
int methodIndex = 1;
int constructorIndex = 1;
for (MethodMetadata methodMetadata : methods) {
if (methodMetadata.isContructor()) {
// process constructor
ConstructorMetadata constructorMetadata = (ConstructorMetadata)methodMetadata;
String constructorRootPath = 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_CONSTRUCTOR_CHILD_NODE
+ SLASH
+ JAVA_CONSTRUCTOR_DECLARATION_CHILD_NODE,
constructorIndex);
Path constructorChildNode = pathFactory.create(constructorRootPath);
output.setProperty(constructorChildNode,
nameFactory.create(JAVA_CONSTRUCTOR_NAME),
constructorMetadata.getName());
List<ModifierMetadata> modifiers = constructorMetadata.getModifiers();
// modifiers
int constructorModifierIndex = 1;
for (ModifierMetadata modifierMetadata : modifiers) {
String contructorModifierPath = JavaMetadataUtil.createPathWithIndex(constructorRootPath
+ SLASH
+ JAVA_MODIFIER_CHILD_NODE
+ SLASH
+ JAVA_MODIFIER_DECLARATION_CHILD_NODE,
constructorModifierIndex);
Path constructorModifierChildNode = pathFactory.create(contructorModifierPath);
output.setProperty(constructorModifierChildNode,
nameFactory.create(JAVA_MODIFIER_NAME),
modifierMetadata.getName());
constructorModifierIndex++;
}
// constructor parameters
int constructorParameterIndex = 1;
for (FieldMetadata fieldMetadata : constructorMetadata.getParameters()) {
String constructorParameterRootPath = JavaMetadataUtil.createPathWithIndex(constructorRootPath
+ SLASH
+ JAVA_PARAMETER
+ SLASH
+ JAVA_FORMAL_PARAMETER,
constructorParameterIndex);
// primitive type
if (fieldMetadata instanceof PrimitiveFieldMetadata) {
PrimitiveFieldMetadata primitiveMetadata = (PrimitiveFieldMetadata)fieldMetadata;
String constructPrimitiveFormalParamRootPath = MethodMetadataSequencer.createMethodParamRootPath(constructorParameterRootPath);
// type
Path constructorPrimitiveTypeParamChildNode = pathFactory.create(constructPrimitiveFormalParamRootPath);
output.setProperty(constructorPrimitiveTypeParamChildNode,
nameFactory.create(JAVA_PRIMITIVE_TYPE_NAME),
primitiveMetadata.getType());
Path constructorPrimitiveParamChildNode = MethodMetadataSequencer.createMethodParamPath(pathFactory,
constructPrimitiveFormalParamRootPath);
// variables
for (Variable variable : primitiveMetadata.getVariables()) {
VariableSequencer.sequenceTheVariable(output,
nameFactory,
variable,
constructorPrimitiveParamChildNode);
}
}
// Simple type
if (fieldMetadata instanceof SimpleTypeFieldMetadata) {
SimpleTypeFieldMetadata simpleTypeFieldMetadata = (SimpleTypeFieldMetadata)fieldMetadata;
SimpleTypeMetadataSequencer.sequenceMethodFormalParam(output,
nameFactory,
pathFactory,
simpleTypeFieldMetadata,
constructorParameterRootPath);
}
// parameterized type
if (fieldMetadata instanceof ParameterizedTypeFieldMetadata) {
@SuppressWarnings( "unused" )
ParameterizedTypeFieldMetadata parameterizedTypeFieldMetadata = (ParameterizedTypeFieldMetadata)fieldMetadata;
}
// TODO support for more types