JDK 12 RFR of JDK-8146726 : Refactor AbstractProcessor to use Set.of and related methods
joe darcy
joe.darcy at oracle.com
Tue Nov 27 20:33:30 UTC 2018
Hello,
Re-visiting this refactoring, please review the changes for
JDK-8146726 : Refactor AbstractProcessor to use Set.of and related
methods
http://cr.openjdk.java.net/~darcy/8146726.1/
Patch below; all langtools regression tests pass with the change.
Note that by the contract of AnnotatedElement, is is okay to modify the
contents of a returned array. Therefore, it is acceptable to remove the
array clone step.
Thanks,
-Joe
---
old/src/java.compiler/share/classes/javax/annotation/processing/AbstractProcessor.java
2018-11-27 12:29:00.618001000 -0800
+++
new/src/java.compiler/share/classes/javax/annotation/processing/AbstractProcessor.java
2018-11-27 12:29:00.250001000 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights
reserved.
+ * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights
reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -80,10 +80,7 @@
*/
public Set<String> getSupportedOptions() {
SupportedOptions so =
this.getClass().getAnnotation(SupportedOptions.class);
- if (so == null)
- return Collections.emptySet();
- else
- return arrayToSet(so.value(), false);
+ return (so == null) ? Collections.emptySet() : Set.of(so.value());
}
/**
@@ -115,7 +112,17 @@
boolean stripModulePrefixes =
initialized &&
processingEnv.getSourceVersion().compareTo(SourceVersion.RELEASE_8) <= 0;
- return arrayToSet(sat.value(), stripModulePrefixes);
+
+ String[] supportedAnnotTypes = sat.value();
+ if (stripModulePrefixes) {
+ for (int i = 0; i < supportedAnnotTypes.length; i++) {
+ String s = supportedAnnotTypes[i];
+ int index = s.indexOf('/');
+ if (index != -1)
+ supportedAnnotTypes[i] = s.substring(index + 1);
+ }
+ }
+ return Set.of(supportedAnnotTypes);
}
}
@@ -194,19 +201,4 @@
protected synchronized boolean isInitialized() {
return initialized;
}
-
- private static Set<String> arrayToSet(String[] array,
- boolean stripModulePrefixes) {
- assert array != null;
- Set<String> set = new HashSet<>(array.length);
- for (String s : array) {
- if (stripModulePrefixes) {
- int index = s.indexOf('/');
- if (index != -1)
- s = s.substring(index + 1);
- }
- set.add(s);
- }
- return Collections.unmodifiableSet(set);
- }
}
More information about the compiler-dev
mailing list