1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.modeshape.sequencer.java;
25
26 import java.util.List;
27 import org.modeshape.graph.property.NameFactory;
28 import org.modeshape.graph.property.Path;
29 import org.modeshape.graph.property.PathFactory;
30 import org.modeshape.graph.sequencer.SequencerOutput;
31 import org.modeshape.sequencer.java.metadata.ArrayTypeFieldMetadata;
32 import org.modeshape.sequencer.java.metadata.ModifierMetadata;
33 import org.modeshape.sequencer.java.metadata.Variable;
34
35
36
37
38 public class ArrayTypeFieldMetadataSequencer {
39
40
41
42
43
44
45
46
47
48
49 public static void sequenceMethodFormalParam( SequencerOutput output,
50 NameFactory nameFactory,
51 PathFactory pathFactory,
52 ArrayTypeFieldMetadata arrayTypeFieldMetadata,
53 Path methodParamRootPath ) {
54 Path methodFormalParamRootPath = createRootPath(pathFactory, methodParamRootPath);
55 output.setProperty(methodFormalParamRootPath,
56 nameFactory.create(JavaMetadataLexicon.ARRAY_TYPE_NAME),
57 arrayTypeFieldMetadata.getType());
58 Path arrayTypeVariableChildNode = pathFactory.create(pathFactory.create(pathFactory.create(pathFactory.create(methodParamRootPath,
59 JavaMetadataLexicon.TYPE_CHILD_NODE),
60 JavaMetadataLexicon.ARRAY_TYPE_CHILD_NODE),
61 JavaMetadataLexicon.ARRAY_TYPE_VARIABLE),
62 JavaMetadataLexicon.VARIABLE);
63 for (Variable variable : arrayTypeFieldMetadata.getVariables()) {
64 VariableSequencer.sequenceTheVariable(output, nameFactory, variable, arrayTypeVariableChildNode);
65 }
66
67 }
68
69
70
71
72
73
74
75
76 public static Path createRootPath( PathFactory pathFactory,
77 Path basePath ) {
78 return pathFactory.create(pathFactory.create(basePath, JavaMetadataLexicon.TYPE_CHILD_NODE),
79 JavaMetadataLexicon.ARRAY_TYPE_CHILD_NODE);
80 }
81
82
83
84
85
86
87
88
89
90
91
92 public static void sequenceFieldMemberData( ArrayTypeFieldMetadata arrayTypeFieldMetadata,
93 PathFactory pathFactory,
94 NameFactory nameFactory,
95 SequencerOutput output,
96 Path path,
97 int index ) {
98
99
100 Path arryTypeChildNode = pathFactory.create(path);
101 output.setProperty(arryTypeChildNode,
102 nameFactory.create(JavaMetadataLexicon.ARRAY_TYPE_NAME),
103 arrayTypeFieldMetadata.getType());
104
105 List<ModifierMetadata> modifiers = arrayTypeFieldMetadata.getModifiers();
106 int arrayModifierIndex = 1;
107 for (ModifierMetadata modifierMetadata : modifiers) {
108 Path modifierPath = pathFactory.create(pathFactory.create(path, JavaMetadataLexicon.ARRAY_TYPE_MODIFIER_CHILD_NODE),
109 pathFactory.createSegment(JavaMetadataLexicon.MODIFIER_DECLARATION_CHILD_NODE,
110 arrayModifierIndex));
111 output.setProperty(modifierPath, nameFactory.create(JavaMetadataLexicon.MODIFIER_NAME), modifierMetadata.getName());
112 arrayModifierIndex++;
113 }
114
115 List<Variable> variables = arrayTypeFieldMetadata.getVariables();
116 int arrayVariableIndex = 1;
117 for (Variable variable : variables) {
118 Path variablePath = pathFactory.create(pathFactory.create(path, JavaMetadataLexicon.ARRAY_TYPE_VARIABLE),
119 pathFactory.createSegment(JavaMetadataLexicon.VARIABLE, arrayVariableIndex));
120
121 VariableSequencer.sequenceTheVariable(output, nameFactory, variable, variablePath);
122 arrayVariableIndex++;
123 }
124 }
125
126 }