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.JcrLexicon;
28 import org.modeshape.graph.property.NameFactory;
29 import org.modeshape.graph.property.Path;
30 import org.modeshape.graph.property.PathFactory;
31 import org.modeshape.graph.sequencer.SequencerOutput;
32 import org.modeshape.graph.sequencer.StreamSequencerContext;
33 import org.modeshape.sequencer.java.metadata.AnnotationMetadata;
34 import org.modeshape.sequencer.java.metadata.ArrayTypeFieldMetadata;
35 import org.modeshape.sequencer.java.metadata.ClassMetadata;
36 import org.modeshape.sequencer.java.metadata.ConstructorMetadata;
37 import org.modeshape.sequencer.java.metadata.FieldMetadata;
38 import org.modeshape.sequencer.java.metadata.ImportMetadata;
39 import org.modeshape.sequencer.java.metadata.ImportOnDemandMetadata;
40 import org.modeshape.sequencer.java.metadata.JavaMetadata;
41 import org.modeshape.sequencer.java.metadata.MarkerAnnotationMetadata;
42 import org.modeshape.sequencer.java.metadata.MethodMetadata;
43 import org.modeshape.sequencer.java.metadata.MethodTypeMemberMetadata;
44 import org.modeshape.sequencer.java.metadata.ModifierMetadata;
45 import org.modeshape.sequencer.java.metadata.NormalAnnotationMetadata;
46 import org.modeshape.sequencer.java.metadata.PackageMetadata;
47 import org.modeshape.sequencer.java.metadata.ParameterizedTypeFieldMetadata;
48 import org.modeshape.sequencer.java.metadata.PrimitiveFieldMetadata;
49 import org.modeshape.sequencer.java.metadata.QualifiedTypeFieldMetadata;
50 import org.modeshape.sequencer.java.metadata.SimpleTypeFieldMetadata;
51 import org.modeshape.sequencer.java.metadata.SingleImportMetadata;
52 import org.modeshape.sequencer.java.metadata.SingleMemberAnnotationMetadata;
53 import org.modeshape.sequencer.java.metadata.TypeMetadata;
54 import org.modeshape.sequencer.java.metadata.Variable;
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166 public class OriginalFormatSourceFileRecorder implements SourceFileRecorder {
167
168 public void record( StreamSequencerContext context,
169 SequencerOutput output,
170 JavaMetadata javaMetadata ) {
171 NameFactory nameFactory = context.getValueFactories().getNameFactory();
172 PathFactory pathFactory = context.getValueFactories().getPathFactory();
173
174 if (javaMetadata != null) {
175 Path javaCompilationUnitNode = pathFactory.create(JavaMetadataLexicon.COMPILATION_UNIT_NODE);
176 output.setProperty(javaCompilationUnitNode, JcrLexicon.PRIMARY_TYPE, JavaMetadataLexicon.COMPILATION_UNIT_NODE);
177
178
179 PackageMetadata packageMetadata = javaMetadata.getPackageMetadata();
180 if (packageMetadata != null) {
181 String packageName = packageMetadata.getName();
182 if (packageName != null && packageName.length() != 0) {
183
184 Path javaPackageDeclarationChildNode = pathFactory.createRelativePath(JavaMetadataLexicon.COMPILATION_UNIT_NODE,
185 JavaMetadataLexicon.PACKAGE_CHILD_NODE,
186 JavaMetadataLexicon.PACKAGE_DECLARATION_CHILD_NODE);
187 output.setProperty(javaPackageDeclarationChildNode,
188 JavaMetadataLexicon.PACKAGE_NAME,
189 javaMetadata.getPackageMetadata().getName());
190 }
191
192 int markerAnnotationIndex = 1;
193 int singleAnnatationIndex = 1;
194 int normalAnnotationIndex = 1;
195 for (AnnotationMetadata annotationMetadata : packageMetadata.getAnnotationMetada()) {
196 if (annotationMetadata instanceof MarkerAnnotationMetadata) {
197 MarkerAnnotationMetadata markerAnnotationMetadata = (MarkerAnnotationMetadata)annotationMetadata;
198 Path basePath = pathFactory.createRelativePath(JavaMetadataLexicon.COMPILATION_UNIT_NODE,
199 JavaMetadataLexicon.PACKAGE_CHILD_NODE,
200 JavaMetadataLexicon.PACKAGE_DECLARATION_CHILD_NODE,
201 JavaMetadataLexicon.ANNOTATION_CHILD_NODE,
202 JavaMetadataLexicon.ANNOTATION_DECLARATION_CHILD_NODE,
203 JavaMetadataLexicon.ANNOTATION_TYPE_CHILD_NODE);
204
205 Path markerAnnotationChildNode = pathFactory.create(basePath,
206 pathFactory.createSegment(JavaMetadataLexicon.MARKER_ANNOTATION_CHILD_NODE,
207 markerAnnotationIndex));
208 output.setProperty(markerAnnotationChildNode,
209 JavaMetadataLexicon.MARKER_ANNOTATION_NAME,
210 markerAnnotationMetadata.getName());
211 markerAnnotationIndex++;
212 }
213 if (annotationMetadata instanceof SingleMemberAnnotationMetadata) {
214 SingleMemberAnnotationMetadata singleMemberAnnotationMetadata = (SingleMemberAnnotationMetadata)annotationMetadata;
215
216 Path basePath = pathFactory.createRelativePath(JavaMetadataLexicon.COMPILATION_UNIT_NODE,
217 JavaMetadataLexicon.PACKAGE_CHILD_NODE,
218 JavaMetadataLexicon.PACKAGE_DECLARATION_CHILD_NODE,
219 JavaMetadataLexicon.ANNOTATION_CHILD_NODE,
220 JavaMetadataLexicon.ANNOTATION_DECLARATION_CHILD_NODE,
221 JavaMetadataLexicon.ANNOTATION_TYPE_CHILD_NODE);
222
223 Path singleMemberAnnotationChildNode = pathFactory.create(basePath,
224 pathFactory.createSegment(JavaMetadataLexicon.SINGLE_ELEMENT_ANNOTATION_CHILD_NODE,
225 singleAnnatationIndex));
226 output.setProperty(singleMemberAnnotationChildNode,
227 JavaMetadataLexicon.SINGLE_ANNOTATION_NAME,
228 singleMemberAnnotationMetadata.getName());
229 singleAnnatationIndex++;
230 }
231 if (annotationMetadata instanceof NormalAnnotationMetadata) {
232 NormalAnnotationMetadata normalAnnotationMetadata = (NormalAnnotationMetadata)annotationMetadata;
233 Path basePath = pathFactory.createRelativePath(JavaMetadataLexicon.COMPILATION_UNIT_NODE,
234 JavaMetadataLexicon.PACKAGE_CHILD_NODE,
235 JavaMetadataLexicon.PACKAGE_DECLARATION_CHILD_NODE,
236 JavaMetadataLexicon.ANNOTATION_CHILD_NODE,
237 JavaMetadataLexicon.ANNOTATION_DECLARATION_CHILD_NODE,
238 JavaMetadataLexicon.ANNOTATION_TYPE_CHILD_NODE);
239
240 Path normalAnnotationChildNode = pathFactory.create(basePath,
241 pathFactory.createSegment(JavaMetadataLexicon.NORMAL_ANNOTATION_CHILD_NODE,
242 normalAnnotationIndex));
243
244 output.setProperty(normalAnnotationChildNode,
245 JavaMetadataLexicon.NORMALANNOTATION_NAME,
246 normalAnnotationMetadata.getName());
247 normalAnnotationIndex++;
248 }
249 }
250 }
251
252
253 int importOnDemandIndex = 1;
254 int singleImportIndex = 1;
255 for (ImportMetadata importMetadata : javaMetadata.getImports()) {
256 if (importMetadata instanceof ImportOnDemandMetadata) {
257 ImportOnDemandMetadata importOnDemandMetadata = (ImportOnDemandMetadata)importMetadata;
258
259 Path basePath = pathFactory.createRelativePath(JavaMetadataLexicon.COMPILATION_UNIT_NODE,
260 JavaMetadataLexicon.IMPORT_CHILD_NODE,
261 JavaMetadataLexicon.IMPORT_DECLARATION_CHILD_NODE,
262 JavaMetadataLexicon.ON_DEMAND_IMPORT_CHILD_NODE);
263
264 Path importOnDemandChildNode = pathFactory.create(basePath,
265 pathFactory.createSegment(JavaMetadataLexicon.ON_DEMAND_IMPORT_TYPE_DECLARATION_CHILD_NODE,
266 importOnDemandIndex));
267 output.setProperty(importOnDemandChildNode,
268 JavaMetadataLexicon.ON_DEMAND_IMPORT_NAME,
269 importOnDemandMetadata.getName());
270 importOnDemandIndex++;
271 }
272 if (importMetadata instanceof SingleImportMetadata) {
273 SingleImportMetadata singleImportMetadata = (SingleImportMetadata)importMetadata;
274
275 Path basePath = pathFactory.createRelativePath(JavaMetadataLexicon.COMPILATION_UNIT_NODE,
276 JavaMetadataLexicon.IMPORT_CHILD_NODE,
277 JavaMetadataLexicon.IMPORT_DECLARATION_CHILD_NODE,
278 JavaMetadataLexicon.SINGLE_IMPORT_CHILD_NODE);
279
280 Path singleImportChildNode = pathFactory.create(basePath,
281 pathFactory.createSegment(JavaMetadataLexicon.SINGLE_IMPORT_TYPE_DECLARATION_CHILD_NODE,
282 importOnDemandIndex));
283 output.setProperty(singleImportChildNode,
284 JavaMetadataLexicon.SINGLE_IMPORT_NAME,
285 singleImportMetadata.getName());
286 singleImportIndex++;
287 }
288 }
289
290
291 for (TypeMetadata typeMetadata : javaMetadata.getTypeMetadata()) {
292
293 if (typeMetadata instanceof ClassMetadata) {
294
295 Path normalClassRootPath = pathFactory.createRelativePath(JavaMetadataLexicon.COMPILATION_UNIT_NODE,
296 JavaMetadataLexicon.UNIT_TYPE_CHILD_NODE,
297 JavaMetadataLexicon.CLASS_DECLARATION_CHILD_NODE,
298 JavaMetadataLexicon.NORMAL_CLASS_CHILD_NODE,
299 JavaMetadataLexicon.NORMAL_CLASS_DECLARATION_CHILD_NODE);
300
301 ClassMetadata classMetadata = (ClassMetadata)typeMetadata;
302 output.setProperty(normalClassRootPath, JavaMetadataLexicon.NORMAL_CLASS_NAME, classMetadata.getName());
303
304
305 List<ModifierMetadata> classModifiers = classMetadata.getModifiers();
306 int modifierIndex = 1;
307 for (ModifierMetadata modifierMetadata : classModifiers) {
308
309 Path basePath = pathFactory.create(normalClassRootPath, JavaMetadataLexicon.MODIFIER_CHILD_NODE);
310
311 Path classModifierChildNode = pathFactory.create(basePath,
312 pathFactory.createSegment(JavaMetadataLexicon.MODIFIER_DECLARATION_CHILD_NODE,
313 modifierIndex));
314
315 output.setProperty(classModifierChildNode, JavaMetadataLexicon.MODIFIER_NAME, modifierMetadata.getName());
316 }
317
318
319 int primitiveIndex = 1;
320 int simpleIndex = 1;
321 int parameterizedIndex = 1;
322 int arrayIndex = 1;
323 for (FieldMetadata fieldMetadata : classMetadata.getFields()) {
324 Path fieldMemberDataRootPath = pathFactory.create(normalClassRootPath,
325 JavaMetadataLexicon.FIELD_CHILD_NODE,
326 JavaMetadataLexicon.FIELD_TYPE_CHILD_NODE,
327 JavaMetadataLexicon.TYPE_CHILD_NODE);
328 if (fieldMetadata instanceof PrimitiveFieldMetadata) {
329
330 PrimitiveFieldMetadata primitiveFieldMetadata = (PrimitiveFieldMetadata)fieldMetadata;
331 Path primitiveFieldRootPath = pathFactory.create(fieldMemberDataRootPath,
332 pathFactory.createSegment(JavaMetadataLexicon.PRIMITIVE_TYPE_CHILD_NODE,
333 primitiveIndex));
334
335 output.setProperty(primitiveFieldRootPath,
336 JavaMetadataLexicon.PRIMITIVE_TYPE_NAME,
337 primitiveFieldMetadata.getType());
338
339 List<ModifierMetadata> modifiers = primitiveFieldMetadata.getModifiers();
340 int primitiveModifierIndex = 1;
341 for (ModifierMetadata modifierMetadata : modifiers) {
342 Path modifierPath = pathFactory.create(pathFactory.create(primitiveFieldRootPath,
343 JavaMetadataLexicon.MODIFIER_CHILD_NODE),
344 pathFactory.createSegment(JavaMetadataLexicon.MODIFIER_DECLARATION_CHILD_NODE,
345 primitiveModifierIndex));
346 output.setProperty(modifierPath, JavaMetadataLexicon.MODIFIER_NAME, modifierMetadata.getName());
347 primitiveModifierIndex++;
348 }
349
350 List<Variable> variables = primitiveFieldMetadata.getVariables();
351 int primitiveVariableIndex = 1;
352 for (Variable variable : variables) {
353 Path variablePath = pathFactory.create(pathFactory.create(primitiveFieldRootPath,
354 JavaMetadataLexicon.PRIMITIVE_TYPE_VARIABLE),
355 pathFactory.createSegment(JavaMetadataLexicon.VARIABLE,
356 primitiveVariableIndex));
357 VariableSequencer.sequenceTheVariable(output, nameFactory, variable, variablePath);
358 primitiveVariableIndex++;
359 }
360 primitiveIndex++;
361 }
362
363
364 if (fieldMetadata instanceof ArrayTypeFieldMetadata) {
365 ArrayTypeFieldMetadata arrayTypeFieldMetadata = (ArrayTypeFieldMetadata)fieldMetadata;
366 Path arrayTypeRootPath = pathFactory.create(fieldMemberDataRootPath,
367 pathFactory.createSegment(JavaMetadataLexicon.ARRAY_TYPE_CHILD_NODE,
368 arrayIndex));
369 ArrayTypeFieldMetadataSequencer.sequenceFieldMemberData(arrayTypeFieldMetadata,
370 pathFactory,
371 nameFactory,
372 output,
373 arrayTypeRootPath,
374 arrayIndex);
375 arrayIndex++;
376 }
377
378
379 if (fieldMetadata instanceof SimpleTypeFieldMetadata) {
380 SimpleTypeFieldMetadata simpleTypeFieldMetadata = (SimpleTypeFieldMetadata)fieldMetadata;
381 Path basePath = pathFactory.createRelativePath(JavaMetadataLexicon.COMPILATION_UNIT_NODE,
382 JavaMetadataLexicon.UNIT_TYPE_CHILD_NODE,
383 JavaMetadataLexicon.CLASS_DECLARATION_CHILD_NODE,
384 JavaMetadataLexicon.NORMAL_CLASS_CHILD_NODE,
385 JavaMetadataLexicon.NORMAL_CLASS_DECLARATION_CHILD_NODE,
386 JavaMetadataLexicon.FIELD_CHILD_NODE,
387 JavaMetadataLexicon.FIELD_TYPE_CHILD_NODE,
388 JavaMetadataLexicon.TYPE_CHILD_NODE);
389
390 Path simpleTypeFieldRootPath = pathFactory.create(basePath,
391 pathFactory.createSegment(JavaMetadataLexicon.SIMPLE_TYPE_CHILD_NODE,
392 simpleIndex));
393 output.setProperty(simpleTypeFieldRootPath,
394 JavaMetadataLexicon.SIMPLE_TYPE_NAME,
395 simpleTypeFieldMetadata.getType());
396
397
398 List<ModifierMetadata> simpleModifiers = simpleTypeFieldMetadata.getModifiers();
399 int simpleTypeModifierIndex = 1;
400 for (ModifierMetadata modifierMetadata : simpleModifiers) {
401 Path simpleTypeModifierPath = pathFactory.create(pathFactory.create(simpleTypeFieldRootPath,
402 JavaMetadataLexicon.SIMPLE_TYPE_MODIFIER_CHILD_NODE),
403 pathFactory.createSegment(JavaMetadataLexicon.MODIFIER_DECLARATION_CHILD_NODE,
404 simpleTypeModifierIndex));
405 output.setProperty(simpleTypeModifierPath,
406 JavaMetadataLexicon.MODIFIER_NAME,
407 modifierMetadata.getName());
408 simpleTypeModifierIndex++;
409 }
410
411
412 List<Variable> variables = simpleTypeFieldMetadata.getVariables();
413 int simpleTypeVariableIndex = 1;
414 for (Variable variable : variables) {
415 Path variablePath = pathFactory.create(pathFactory.create(simpleTypeFieldRootPath,
416 JavaMetadataLexicon.SIMPLE_TYPE_VARIABLE),
417 pathFactory.createSegment(JavaMetadataLexicon.VARIABLE,
418 simpleTypeVariableIndex));
419 VariableSequencer.sequenceTheVariable(output, nameFactory, variable, variablePath);
420 simpleTypeVariableIndex++;
421 }
422
423 simpleIndex++;
424 }
425
426
427 if (fieldMetadata instanceof QualifiedTypeFieldMetadata) {
428 @SuppressWarnings( "unused" )
429 QualifiedTypeFieldMetadata qualifiedTypeFieldMetadata = (QualifiedTypeFieldMetadata)fieldMetadata;
430 }
431
432
433 if (fieldMetadata instanceof ParameterizedTypeFieldMetadata) {
434 ParameterizedTypeFieldMetadata parameterizedTypeFieldMetadata = (ParameterizedTypeFieldMetadata)fieldMetadata;
435 Path parameterizedTypeFieldRootPath = ParameterizedTypeFieldMetadataSequencer.getParameterizedTypeFieldRootPath(pathFactory,
436 parameterizedIndex);
437 ParameterizedTypeFieldMetadataSequencer.sequenceTheParameterizedTypeName(parameterizedTypeFieldMetadata,
438 parameterizedTypeFieldRootPath,
439 pathFactory,
440 nameFactory,
441 output);
442
443
444 List<ModifierMetadata> parameterizedTypeModifiers = parameterizedTypeFieldMetadata.getModifiers();
445 int parameterizedTypeModifierIndex = 1;
446 for (ModifierMetadata modifierMetadata : parameterizedTypeModifiers) {
447 Path parameterizedTypeModifierPath = ParameterizedTypeFieldMetadataSequencer.getParameterizedTypeFieldRModifierPath(pathFactory,
448 parameterizedTypeFieldRootPath,
449 parameterizedTypeModifierIndex);
450 ParameterizedTypeFieldMetadataSequencer.sequenceTheParameterizedTypeModifier(modifierMetadata,
451 parameterizedTypeModifierPath,
452 pathFactory,
453 nameFactory,
454 output);
455 parameterizedTypeModifierIndex++;
456 }
457
458 List<Variable> parameterizedTypeVariables = parameterizedTypeFieldMetadata.getVariables();
459 int parameterizedTypeVariableIndex = 1;
460 for (Variable variable : parameterizedTypeVariables) {
461
462 Path parameterizedTypeVariableChildNode = ParameterizedTypeFieldMetadataSequencer.getParameterizedTypeFieldVariablePath(pathFactory,
463 parameterizedTypeFieldRootPath,
464 parameterizedTypeVariableIndex);
465 VariableSequencer.sequenceTheVariable(output,
466 nameFactory,
467 variable,
468 parameterizedTypeVariableChildNode);
469 parameterizedTypeVariableIndex++;
470 }
471
472 parameterizedIndex++;
473 }
474
475 }
476
477
478 List<MethodMetadata> methods = classMetadata.getMethods();
479 int methodIndex = 1;
480 int constructorIndex = 1;
481 for (MethodMetadata methodMetadata : methods) {
482 if (methodMetadata.isContructor()) {
483
484 ConstructorMetadata constructorMetadata = (ConstructorMetadata)methodMetadata;
485 Path basePath = pathFactory.createRelativePath(JavaMetadataLexicon.COMPILATION_UNIT_NODE,
486 JavaMetadataLexicon.UNIT_TYPE_CHILD_NODE,
487 JavaMetadataLexicon.CLASS_DECLARATION_CHILD_NODE,
488 JavaMetadataLexicon.NORMAL_CLASS_CHILD_NODE,
489 JavaMetadataLexicon.NORMAL_CLASS_DECLARATION_CHILD_NODE,
490 JavaMetadataLexicon.CONSTRUCTOR_CHILD_NODE);
491 Path constructorRootPath = pathFactory.create(basePath,
492 pathFactory.createSegment(JavaMetadataLexicon.CONSTRUCTOR_DECLARATION_CHILD_NODE,
493 constructorIndex));
494 output.setProperty(constructorRootPath,
495 JavaMetadataLexicon.CONSTRUCTOR_NAME,
496 constructorMetadata.getName());
497 List<ModifierMetadata> modifiers = constructorMetadata.getModifiers();
498
499 int constructorModifierIndex = 1;
500 for (ModifierMetadata modifierMetadata : modifiers) {
501 Path contructorModifierPath = pathFactory.create(pathFactory.create(constructorRootPath,
502 JavaMetadataLexicon.MODIFIER_CHILD_NODE),
503 pathFactory.createSegment(JavaMetadataLexicon.MODIFIER_DECLARATION_CHILD_NODE,
504 constructorModifierIndex));
505
506 output.setProperty(contructorModifierPath,
507 JavaMetadataLexicon.MODIFIER_NAME,
508 modifierMetadata.getName());
509 constructorModifierIndex++;
510 }
511
512
513 int constructorParameterIndex = 1;
514 for (FieldMetadata fieldMetadata : constructorMetadata.getParameters()) {
515
516 Path constructorParameterRootPath = pathFactory.create(pathFactory.create(constructorRootPath,
517 JavaMetadataLexicon.PARAMETER),
518 pathFactory.createSegment(JavaMetadataLexicon.FORMAL_PARAMETER,
519 constructorParameterIndex));
520
521 if (fieldMetadata instanceof PrimitiveFieldMetadata) {
522
523 PrimitiveFieldMetadata primitiveMetadata = (PrimitiveFieldMetadata)fieldMetadata;
524 Path constructPrimitiveFormalParamRootPath = MethodMetadataSequencer.createMethodParamRootPath(pathFactory,
525 constructorParameterRootPath);
526
527 output.setProperty(constructPrimitiveFormalParamRootPath,
528 JavaMetadataLexicon.PRIMITIVE_TYPE_NAME,
529 primitiveMetadata.getType());
530
531 Path constructorPrimitiveParamChildNode = MethodMetadataSequencer.createMethodParamPath(pathFactory,
532 constructPrimitiveFormalParamRootPath);
533
534 for (Variable variable : primitiveMetadata.getVariables()) {
535 VariableSequencer.sequenceTheVariable(output,
536 nameFactory,
537 variable,
538 constructorPrimitiveParamChildNode);
539 }
540 }
541
542 if (fieldMetadata instanceof SimpleTypeFieldMetadata) {
543 SimpleTypeFieldMetadata simpleTypeFieldMetadata = (SimpleTypeFieldMetadata)fieldMetadata;
544 SimpleTypeMetadataSequencer.sequenceMethodFormalParam(output,
545 nameFactory,
546 pathFactory,
547 simpleTypeFieldMetadata,
548 constructorParameterRootPath);
549
550 }
551
552 if (fieldMetadata instanceof ParameterizedTypeFieldMetadata) {
553 @SuppressWarnings( "unused" )
554 ParameterizedTypeFieldMetadata parameterizedTypeFieldMetadata = (ParameterizedTypeFieldMetadata)fieldMetadata;
555
556 }
557
558
559 constructorParameterIndex++;
560 }
561
562 constructorIndex++;
563 } else {
564
565 MethodTypeMemberMetadata methodTypeMemberMetadata = (MethodTypeMemberMetadata)methodMetadata;
566 Path basePath = pathFactory.createRelativePath(JavaMetadataLexicon.COMPILATION_UNIT_NODE,
567 JavaMetadataLexicon.UNIT_TYPE_CHILD_NODE,
568 JavaMetadataLexicon.CLASS_DECLARATION_CHILD_NODE,
569 JavaMetadataLexicon.NORMAL_CLASS_CHILD_NODE,
570 JavaMetadataLexicon.NORMAL_CLASS_DECLARATION_CHILD_NODE,
571 JavaMetadataLexicon.METHOD_CHILD_NODE);
572
573 Path methodRootPath = pathFactory.create(basePath,
574 pathFactory.createSegment(JavaMetadataLexicon.METHOD_DECLARATION_CHILD_NODE,
575 methodIndex));
576
577 output.setProperty(methodRootPath,
578 JavaMetadataLexicon.METHOD_NAME,
579 methodTypeMemberMetadata.getName());
580
581
582 int methodModierIndex = 1;
583 for (ModifierMetadata modifierMetadata : methodTypeMemberMetadata.getModifiers()) {
584 Path methodModifierPath = pathFactory.create(pathFactory.create(methodRootPath,
585 JavaMetadataLexicon.MODIFIER_CHILD_NODE),
586 pathFactory.createSegment(JavaMetadataLexicon.MODIFIER_DECLARATION_CHILD_NODE,
587 methodModierIndex));
588 output.setProperty(methodModifierPath,
589 JavaMetadataLexicon.MODIFIER_NAME,
590 modifierMetadata.getName());
591 methodModierIndex++;
592 }
593
594 int methodParameterIndex = 1;
595 for (FieldMetadata fieldMetadata : methodMetadata.getParameters()) {
596
597 Path methodParamRootPath = pathFactory.create(pathFactory.create(methodRootPath,
598 JavaMetadataLexicon.PARAMETER),
599 pathFactory.createSegment(JavaMetadataLexicon.FORMAL_PARAMETER,
600 methodParameterIndex));
601
602 if (fieldMetadata instanceof PrimitiveFieldMetadata) {
603
604 PrimitiveFieldMetadata primitive = (PrimitiveFieldMetadata)fieldMetadata;
605
606 Path methodPrimitiveFormalParamRootPath = pathFactory.create(methodParamRootPath,
607 JavaMetadataLexicon.TYPE_CHILD_NODE,
608 JavaMetadataLexicon.PRIMITIVE_TYPE_CHILD_NODE);
609
610 Path methodParamChildNode = MethodMetadataSequencer.createMethodParamPath(pathFactory,
611 methodPrimitiveFormalParamRootPath);
612
613 for (Variable variable : primitive.getVariables()) {
614 VariableSequencer.sequenceTheVariable(output, nameFactory, variable, methodParamChildNode);
615 }
616
617 Path methodPrimitiveTypeParamChildNode = pathFactory.create(methodPrimitiveFormalParamRootPath);
618 output.setProperty(methodPrimitiveTypeParamChildNode,
619 JavaMetadataLexicon.PRIMITIVE_TYPE_NAME,
620 primitive.getType());
621
622 }
623
624 if (fieldMetadata instanceof SimpleTypeFieldMetadata) {
625 SimpleTypeFieldMetadata simpleTypeFieldMetadata = (SimpleTypeFieldMetadata)fieldMetadata;
626 SimpleTypeMetadataSequencer.sequenceMethodFormalParam(output,
627 nameFactory,
628 pathFactory,
629 simpleTypeFieldMetadata,
630 methodParamRootPath);
631 }
632 if (fieldMetadata instanceof ArrayTypeFieldMetadata) {
633 ArrayTypeFieldMetadata arrayTypeFieldMetadata = (ArrayTypeFieldMetadata)fieldMetadata;
634
635 ArrayTypeFieldMetadataSequencer.sequenceMethodFormalParam(output,
636 nameFactory,
637 pathFactory,
638 arrayTypeFieldMetadata,
639 methodParamRootPath);
640
641 }
642
643
644
645 methodParameterIndex++;
646 }
647
648
649 FieldMetadata methodReturnType = methodTypeMemberMetadata.getReturnType();
650
651 if (methodReturnType instanceof PrimitiveFieldMetadata) {
652 PrimitiveFieldMetadata methodReturnPrimitiveType = (PrimitiveFieldMetadata)methodReturnType;
653 Path methodReturnPrimitiveTypePath = pathFactory.create(pathFactory.create(methodRootPath,
654 JavaMetadataLexicon.RETURN_TYPE),
655 JavaMetadataLexicon.PRIMITIVE_TYPE_CHILD_NODE);
656 Path methodReturnPrimitiveTypeChildNode = pathFactory.create(methodReturnPrimitiveTypePath);
657 output.setProperty(methodReturnPrimitiveTypeChildNode,
658 JavaMetadataLexicon.PRIMITIVE_TYPE_NAME,
659 methodReturnPrimitiveType.getType());
660
661 }
662 if (methodReturnType instanceof SimpleTypeFieldMetadata) {
663 SimpleTypeFieldMetadata simpleTypeFieldMetadata = (SimpleTypeFieldMetadata)methodReturnType;
664 SimpleTypeMetadataSequencer.sequenceMethodReturnType(output,
665 nameFactory,
666 pathFactory,
667 simpleTypeFieldMetadata,
668 methodRootPath);
669 }
670
671
672
673 methodIndex++;
674 }
675 }
676 }
677
678
679
680 }
681 }
682
683 }
684
685 }