< prev index next >
src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java
Print this page
@@ -321,63 +321,67 @@
return this;
}
private void printDirective(ModuleElement.Directive directive) {
indent();
- switch (directive.getKind()) {
- case EXPORTS: // "exports package-name [to module-name-list]"
- {
- ExportsDirective exportsDirective = (ExportsDirective) directive;
+ (new PrintDirective(writer)).visit(directive);
+ writer.println(";");
+ }
+
+ private static class PrintDirective implements ModuleElement.DirectiveVisitor<Void, Void> {
+ private final PrintWriter writer;
+
+ PrintDirective(PrintWriter writer) {
+ this.writer = writer;
+ }
+
+ @Override
+ public Void visitExports(ExportsDirective d, Void p) {
+ // "exports package-name [to module-name-list]"
writer.print("exports ");
- writer.print(exportsDirective.getPackage().getQualifiedName());
- printModuleList(exportsDirective.getTargetModules());
+ writer.print(d.getPackage().getQualifiedName());
+ printModuleList(d.getTargetModules());
+ return null;
}
- break;
- case OPENS: // opens package-name [to module-name-list]
- {
- OpensDirective opensDirective = (OpensDirective) directive;
+ @Override
+ public Void visitOpens(OpensDirective d, Void p) {
+ // opens package-name [to module-name-list]
writer.print("opens ");
- writer.print(opensDirective.getPackage().getQualifiedName());
- printModuleList(opensDirective.getTargetModules());
+ writer.print(d.getPackage().getQualifiedName());
+ printModuleList(d.getTargetModules());
+ return null;
}
- break;
- case PROVIDES: // provides service-name with implementation-name
- {
- ProvidesDirective providesDirective = (ProvidesDirective) directive;
+ @Override
+ public Void visitProvides(ProvidesDirective d, Void p) {
+ // provides service-name with implementation-name
writer.print("provides ");
- writer.print(providesDirective.getService().getQualifiedName());
+ writer.print(d.getService().getQualifiedName());
writer.print(" with ");
- printNameableList(providesDirective.getImplementations());
+ printNameableList(d.getImplementations());
+ return null;
}
- break;
- case REQUIRES: // requires (static|transitive)* module-name
- {
- RequiresDirective requiresDirective = (RequiresDirective) directive;
+ @Override
+ public Void visitRequires(RequiresDirective d, Void p) {
+ // requires (static|transitive)* module-name
writer.print("requires ");
- if (requiresDirective.isStatic())
+ if (d.isStatic())
writer.print("static ");
- if (requiresDirective.isTransitive())
+ if (d.isTransitive())
writer.print("transitive ");
- writer.print(requiresDirective.getDependency().getQualifiedName());
+ writer.print(d.getDependency().getQualifiedName());
+ return null;
}
- break;
- case USES: // uses service-name
- {
- UsesDirective usesDirective = (UsesDirective) directive;
+ @Override
+ public Void visitUses(UsesDirective d, Void p) {
+ // uses service-name
writer.print("uses ");
- writer.print(usesDirective.getService().getQualifiedName());
- }
- break;
-
- default:
- throw new UnsupportedOperationException("unknown directive " + directive);
- }
- writer.println(";");
+ writer.print(d.getService().getQualifiedName());
+ return null;
}
private void printModuleList(List<? extends ModuleElement> modules) {
if (modules != null) {
writer.print(" to ");
@@ -388,10 +392,11 @@
private void printNameableList(List<? extends QualifiedNameable> nameables) {
writer.print(nameables.stream().
map(QualifiedNameable::getQualifiedName).
collect(Collectors.joining(", ")));
}
+ }
public void flush() {
writer.flush();
}
< prev index next >