108 ElementKind kind = e.getKind();
109
110 if (kind != STATIC_INIT &&
111 kind != INSTANCE_INIT) {
112 Element enclosing = e.getEnclosingElement();
113
114 // Don't print out the constructor of an anonymous class
115 if (kind == CONSTRUCTOR &&
116 enclosing != null &&
117 NestingKind.ANONYMOUS ==
118 // Use an anonymous class to determine anonymity!
119 (new SimpleElementVisitor6<NestingKind, Void>() {
120 @Override
121 public NestingKind visitType(TypeElement e, Void p) {
122 return e.getNestingKind();
123 }
124 }).visit(enclosing))
125 return this;
126
127 defaultAction(e, true);
128 printFormalTypeParameters(e);
129
130 switch(kind) {
131 case CONSTRUCTOR:
132 // Print out simple name of the class
133 writer.print(e.getEnclosingElement().getSimpleName());
134 break;
135
136 case METHOD:
137 writer.print(e.getReturnType().toString());
138 writer.print(" ");
139 writer.print(e.getSimpleName().toString());
140 break;
141 }
142
143 writer.print("(");
144 printParameters(e);
145 writer.print(")");
146 AnnotationValue defaultValue = e.getDefaultValue();
147 if (defaultValue != null)
148 writer.print(" default " + defaultValue);
190 writer.print(")");
191 } else {
192 if (nestingKind == TOP_LEVEL) {
193 PackageElement pkg = elementUtils.getPackageOf(e);
194 if (!pkg.isUnnamed())
195 writer.print("package " + pkg.getQualifiedName() + ";\n");
196 }
197
198 defaultAction(e, true);
199
200 switch(kind) {
201 case ANNOTATION_TYPE:
202 writer.print("@interface");
203 break;
204 default:
205 writer.print(kind.toString().toLowerCase());
206 }
207 writer.print(" ");
208 writer.print(e.getSimpleName());
209
210 printFormalTypeParameters(e);
211
212 // Print superclass information if informative
213 if (kind == CLASS) {
214 TypeMirror supertype = e.getSuperclass();
215 if (supertype.getKind() != TypeKind.NONE) {
216 TypeElement e2 = (TypeElement)
217 ((DeclaredType) supertype).asElement();
218 if (e2.getSuperclass().getKind() != TypeKind.NONE)
219 writer.print(" extends " + supertype);
220 }
221 }
222
223 printInterfaces(e);
224 }
225 writer.println(" {");
226 indentation++;
227
228 if (kind == ENUM) {
229 List<Element> enclosedElements =
230 new ArrayList<Element>(e.getEnclosedElements());
347
348 case METHOD:
349 case FIELD:
350 Element enclosingElement = e.getEnclosingElement();
351 if (enclosingElement != null &&
352 enclosingElement.getKind().isInterface()) {
353 modifiers.remove(Modifier.PUBLIC);
354 modifiers.remove(Modifier.ABSTRACT); // only for methods
355 modifiers.remove(Modifier.STATIC); // only for fields
356 modifiers.remove(Modifier.FINAL); // only for fields
357 }
358 break;
359
360 }
361
362 for(Modifier m: modifiers) {
363 writer.print(m.toString() + " ");
364 }
365 }
366
367 private void printFormalTypeParameters(ExecutableElement executable) {
368 printFormalTypeParameters(executable.getTypeParameters(), true);
369 }
370
371 private void printFormalTypeParameters(TypeElement type) {
372 printFormalTypeParameters(type.getTypeParameters(), false);
373 }
374
375 private void printFormalTypeParameters(List<? extends TypeParameterElement> typeParams,
376 boolean pad) {
377 if (typeParams.size() > 0) {
378 writer.print("<");
379
380 boolean first = true;
381 for(TypeParameterElement tpe: typeParams) {
382 if (!first)
383 writer.print(", ");
384 writer.print(tpe.toString());
385 first = false;
386 }
387
388 writer.print(">");
389 if (pad)
390 writer.print(" ");
391 }
392 }
393
394 private void printAnnotationsInline(Element e) {
395 List<? extends AnnotationMirror> annots = e.getAnnotationMirrors();
396 for(AnnotationMirror annotationMirror : annots) {
|
108 ElementKind kind = e.getKind();
109
110 if (kind != STATIC_INIT &&
111 kind != INSTANCE_INIT) {
112 Element enclosing = e.getEnclosingElement();
113
114 // Don't print out the constructor of an anonymous class
115 if (kind == CONSTRUCTOR &&
116 enclosing != null &&
117 NestingKind.ANONYMOUS ==
118 // Use an anonymous class to determine anonymity!
119 (new SimpleElementVisitor6<NestingKind, Void>() {
120 @Override
121 public NestingKind visitType(TypeElement e, Void p) {
122 return e.getNestingKind();
123 }
124 }).visit(enclosing))
125 return this;
126
127 defaultAction(e, true);
128 printFormalTypeParameters(e, true);
129
130 switch(kind) {
131 case CONSTRUCTOR:
132 // Print out simple name of the class
133 writer.print(e.getEnclosingElement().getSimpleName());
134 break;
135
136 case METHOD:
137 writer.print(e.getReturnType().toString());
138 writer.print(" ");
139 writer.print(e.getSimpleName().toString());
140 break;
141 }
142
143 writer.print("(");
144 printParameters(e);
145 writer.print(")");
146 AnnotationValue defaultValue = e.getDefaultValue();
147 if (defaultValue != null)
148 writer.print(" default " + defaultValue);
190 writer.print(")");
191 } else {
192 if (nestingKind == TOP_LEVEL) {
193 PackageElement pkg = elementUtils.getPackageOf(e);
194 if (!pkg.isUnnamed())
195 writer.print("package " + pkg.getQualifiedName() + ";\n");
196 }
197
198 defaultAction(e, true);
199
200 switch(kind) {
201 case ANNOTATION_TYPE:
202 writer.print("@interface");
203 break;
204 default:
205 writer.print(kind.toString().toLowerCase());
206 }
207 writer.print(" ");
208 writer.print(e.getSimpleName());
209
210 printFormalTypeParameters(e, false);
211
212 // Print superclass information if informative
213 if (kind == CLASS) {
214 TypeMirror supertype = e.getSuperclass();
215 if (supertype.getKind() != TypeKind.NONE) {
216 TypeElement e2 = (TypeElement)
217 ((DeclaredType) supertype).asElement();
218 if (e2.getSuperclass().getKind() != TypeKind.NONE)
219 writer.print(" extends " + supertype);
220 }
221 }
222
223 printInterfaces(e);
224 }
225 writer.println(" {");
226 indentation++;
227
228 if (kind == ENUM) {
229 List<Element> enclosedElements =
230 new ArrayList<Element>(e.getEnclosedElements());
347
348 case METHOD:
349 case FIELD:
350 Element enclosingElement = e.getEnclosingElement();
351 if (enclosingElement != null &&
352 enclosingElement.getKind().isInterface()) {
353 modifiers.remove(Modifier.PUBLIC);
354 modifiers.remove(Modifier.ABSTRACT); // only for methods
355 modifiers.remove(Modifier.STATIC); // only for fields
356 modifiers.remove(Modifier.FINAL); // only for fields
357 }
358 break;
359
360 }
361
362 for(Modifier m: modifiers) {
363 writer.print(m.toString() + " ");
364 }
365 }
366
367 private void printFormalTypeParameters(Parameterizable e,
368 boolean pad) {
369 List<? extends TypeParameterElement> typeParams = e.getTypeParameters();
370 if (typeParams.size() > 0) {
371 writer.print("<");
372
373 boolean first = true;
374 for(TypeParameterElement tpe: typeParams) {
375 if (!first)
376 writer.print(", ");
377 writer.print(tpe.toString());
378 first = false;
379 }
380
381 writer.print(">");
382 if (pad)
383 writer.print(" ");
384 }
385 }
386
387 private void printAnnotationsInline(Element e) {
388 List<? extends AnnotationMirror> annots = e.getAnnotationMirrors();
389 for(AnnotationMirror annotationMirror : annots) {
|