102 if (kind == ElementKind.PACKAGE) {
103 serviceName = ((PackageElement) enclosing).getQualifiedName().toString() + "." + serviceName;
104 break;
105 } else if (kind == ElementKind.CLASS || kind == ElementKind.INTERFACE) {
106 serviceName = ((TypeElement) enclosing).getSimpleName().toString() + "$" + serviceName;
107 enclosing = enclosing.getEnclosingElement();
108 } else {
109 String msg = String.format("Cannot generate provider descriptor for service class %s as it is not nested in a package, class or interface",
110 serviceElement.getQualifiedName());
111 processingEnv.getMessager().printMessage(Kind.ERROR, msg, serviceProvider);
112 return;
113 }
114 }
115 serviceProviders.put(serviceProvider, serviceName);
116 }
117 }
118 }
119 }
120
121 @Override
122 public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
123 if (roundEnv.processingOver()) {
124 for (Entry<TypeElement, String> e : serviceProviders.entrySet()) {
125 createProviderFile(e.getKey().getQualifiedName().toString(), e.getValue(), e.getKey());
126 }
127 serviceProviders.clear();
128 return true;
129 }
130
131 TypeElement serviceProviderTypeElement = getTypeElement(SERVICE_PROVIDER_CLASS_NAME);
132 for (Element element : roundEnv.getElementsAnnotatedWith(serviceProviderTypeElement)) {
133 assert element.getKind().isClass();
134 processElement((TypeElement) element);
135 }
136
137 return true;
138 }
139 }
|
102 if (kind == ElementKind.PACKAGE) {
103 serviceName = ((PackageElement) enclosing).getQualifiedName().toString() + "." + serviceName;
104 break;
105 } else if (kind == ElementKind.CLASS || kind == ElementKind.INTERFACE) {
106 serviceName = ((TypeElement) enclosing).getSimpleName().toString() + "$" + serviceName;
107 enclosing = enclosing.getEnclosingElement();
108 } else {
109 String msg = String.format("Cannot generate provider descriptor for service class %s as it is not nested in a package, class or interface",
110 serviceElement.getQualifiedName());
111 processingEnv.getMessager().printMessage(Kind.ERROR, msg, serviceProvider);
112 return;
113 }
114 }
115 serviceProviders.put(serviceProvider, serviceName);
116 }
117 }
118 }
119 }
120
121 @Override
122 public boolean doProcess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
123 if (roundEnv.processingOver()) {
124 for (Entry<TypeElement, String> e : serviceProviders.entrySet()) {
125 createProviderFile(e.getKey().getQualifiedName().toString(), e.getValue(), e.getKey());
126 }
127 serviceProviders.clear();
128 return true;
129 }
130
131 TypeElement serviceProviderTypeElement = getTypeElement(SERVICE_PROVIDER_CLASS_NAME);
132 for (Element element : roundEnv.getElementsAnnotatedWith(serviceProviderTypeElement)) {
133 assert element.getKind().isClass();
134 processElement((TypeElement) element);
135 }
136
137 return true;
138 }
139 }
|