|
|
|
@ -26,6 +26,7 @@ import java.util.HashMap;
|
|
|
|
|
import java.util.HashSet; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.Set; |
|
|
|
|
import java.util.regex.Pattern; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @author Decebal Suiu |
|
|
|
@ -34,6 +35,9 @@ public class ServiceProviderExtensionStorage extends ExtensionStorage {
|
|
|
|
|
|
|
|
|
|
public static final String EXTENSIONS_RESOURCE = "META-INF/services"; |
|
|
|
|
|
|
|
|
|
private static final Pattern COMMENT = Pattern.compile("#.*"); |
|
|
|
|
private static final Pattern WHITESPACE = Pattern.compile("\\s+"); |
|
|
|
|
|
|
|
|
|
public ServiceProviderExtensionStorage(ExtensionAnnotationProcessor processor) { |
|
|
|
|
super(processor); |
|
|
|
|
} |
|
|
|
@ -43,7 +47,11 @@ public class ServiceProviderExtensionStorage extends ExtensionStorage {
|
|
|
|
|
|
|
|
|
|
String line; |
|
|
|
|
while ((line = bufferedReader.readLine()) != null) { |
|
|
|
|
entries.add(line); |
|
|
|
|
line = COMMENT.matcher(line).replaceFirst(""); |
|
|
|
|
line = WHITESPACE.matcher(line).replaceAll(""); |
|
|
|
|
if (line.length() > 0) { |
|
|
|
|
entries.add(line); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bufferedReader.close(); |
|
|
|
@ -78,10 +86,15 @@ public class ServiceProviderExtensionStorage extends ExtensionStorage {
|
|
|
|
|
FileObject file = getFiler().createResource(StandardLocation.CLASS_OUTPUT, "", EXTENSIONS_RESOURCE |
|
|
|
|
+ "/" + extensionPoint); |
|
|
|
|
BufferedWriter writer = new BufferedWriter(file.openWriter()); |
|
|
|
|
// write header
|
|
|
|
|
writer.write("# Generated by PF4J"); // write header
|
|
|
|
|
writer.newLine(); |
|
|
|
|
// write extensions
|
|
|
|
|
for (String extension : entry.getValue()) { |
|
|
|
|
if (processor.getOldExtensions().containsKey(extensionPoint)) |
|
|
|
|
writer.write(extension); |
|
|
|
|
if (!isExtensionOld(extensionPoint, extension)) { |
|
|
|
|
writer.write(" # pf4j extension"); |
|
|
|
|
} |
|
|
|
|
writer.newLine(); |
|
|
|
|
} |
|
|
|
|
writer.close(); |
|
|
|
@ -93,4 +106,9 @@ public class ServiceProviderExtensionStorage extends ExtensionStorage {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean isExtensionOld(String extensionPoint, String extension) { |
|
|
|
|
return processor.getOldExtensions().containsKey(extensionPoint) |
|
|
|
|
&& processor.getOldExtensions().get(extensionPoint).contains(extension); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|