3030
3131import java .util .Arrays ;
3232import java .util .Collection ;
33+ import java .util .Collections ;
34+ import java .util .HashSet ;
35+ import java .util .Set ;
3336
3437import javax .xml .namespace .QName ;
3538
3841import org .jvnet .annox .model .XAnnotation ;
3942import org .jvnet .annox .parser .XAnnotationParser ;
4043import org .jvnet .jaxb2_commons .plugin .AbstractParameterizablePlugin ;
44+ import org .jvnet .jaxb2_commons .plugin .AnnotationTarget ;
45+ import org .jvnet .jaxb2_commons .plugin .removeannotation .RemoveAnnotationPlugin ;
4146import org .jvnet .jaxb2_commons .util .CustomizationUtils ;
4247import org .w3c .dom .Element ;
4348import org .w3c .dom .Node ;
@@ -87,6 +92,23 @@ public class AnnotatePlugin extends AbstractParameterizablePlugin {
8792 Constants .NAMESPACE_URI , "annotateEnumFromValueMethod" );
8893 public static final QName ANNOTATE_QNAME = new QName (
8994 Constants .NAMESPACE_URI , "annotate" );
95+
96+ public static final Set <QName > CUSTOMIZATION_ELEMENT_QNAMES = Collections .unmodifiableSet (
97+ new HashSet <QName >(Arrays .asList (
98+ ANNOTATE_QNAME ,
99+ ANNOTATE_PACKAGE_QNAME ,
100+ ANNOTATE_CLASS_QNAME ,
101+ ANNOTATE_ELEMENT_QNAME ,
102+ ANNOTATE_PROPERTY_QNAME ,
103+ ANNOTATE_PROPERTY_FIELD_QNAME ,
104+ ANNOTATE_PROPERTY_GETTER_QNAME ,
105+ ANNOTATE_PROPERTY_SETTER_QNAME ,
106+ ANNOTATE_PROPERTY_SETTER_PARAMETER_QNAME ,
107+ ANNOTATE_ENUM_QNAME ,
108+ ANNOTATE_ENUM_CONSTANT_QNAME ,
109+ ANNOTATE_ENUM_VALUE_METHOD_QNAME ,
110+ ANNOTATE_ENUM_FROM_VALUE_METHOD_QNAME )));
111+
90112
91113 @ Override
92114 public String getOptionName () {
@@ -202,7 +224,7 @@ protected void processFieldOutline(ClassOutline classOutline,
202224 ErrorHandler errorHandler ) {
203225 final CCustomizations customizations = CustomizationUtils
204226 .getCustomizations (fieldOutline );
205- annotate (fieldOutline .parent ().ref .owner (), fieldOutline ,
227+ annotateFieldOutline (fieldOutline .parent ().ref .owner (), fieldOutline ,
206228 customizations , errorHandler );
207229 }
208230
@@ -226,7 +248,7 @@ protected void annotateElementOutline(final JCodeModel codeModel,
226248 final Element element = customization .element ;
227249 final QName name = new QName (element .getNamespaceURI (),
228250 element .getLocalName ());
229- if (Constants . NAMESPACE_URI . equals (name . getNamespaceURI () )) {
251+ if (isCustomizationElementName (name )) {
230252 customization .markAsAcknowledged ();
231253 final AnnotationTarget annotationTarget = AnnotationTarget
232254 .getAnnotationTarget (element , AnnotationTarget .ELEMENT );
@@ -251,7 +273,7 @@ protected void annotateEnumOutline(final JCodeModel codeModel,
251273 final Element element = customization .element ;
252274 final QName name = new QName (element .getNamespaceURI (),
253275 element .getLocalName ());
254- if (Constants . NAMESPACE_URI . equals (name . getNamespaceURI () )) {
276+ if (isCustomizationElementName (name )) {
255277 customization .markAsAcknowledged ();
256278 final AnnotationTarget annotationTarget = AnnotationTarget
257279 .getAnnotationTarget (element , AnnotationTarget .ENUM );
@@ -276,7 +298,7 @@ protected void annotateEnumConstantOutline(final JCodeModel codeModel,
276298 final Element element = customization .element ;
277299 final QName name = new QName (element .getNamespaceURI (),
278300 element .getLocalName ());
279- if (Constants . NAMESPACE_URI . equals (name . getNamespaceURI () )) {
301+ if (isCustomizationElementName (name )) {
280302 customization .markAsAcknowledged ();
281303 final AnnotationTarget annotationTarget = AnnotationTarget
282304 .getAnnotationTarget (element ,
@@ -301,7 +323,7 @@ protected void annotateClassOutline(final JCodeModel codeModel,
301323 final Element element = customization .element ;
302324 final QName name = new QName (element .getNamespaceURI (),
303325 element .getLocalName ());
304- if (Constants . NAMESPACE_URI . equals (name . getNamespaceURI () )) {
326+ if (isCustomizationElementName (name )) {
305327 customization .markAsAcknowledged ();
306328 final AnnotationTarget annotationTarget = AnnotationTarget
307329 .getAnnotationTarget (element , AnnotationTarget .CLASS );
@@ -317,14 +339,14 @@ protected void annotateClassOutline(final JCodeModel codeModel,
317339 }
318340 }
319341
320- protected void annotate (final JCodeModel codeModel ,
342+ protected void annotateFieldOutline (final JCodeModel codeModel ,
321343 final FieldOutline fieldOutline ,
322344 final CCustomizations customizations , ErrorHandler errorHandler ) {
323345 for (final CPluginCustomization customization : customizations ) {
324346 final Element element = customization .element ;
325347 final QName name = new QName (element .getNamespaceURI (),
326348 element .getLocalName ());
327- if (Constants . NAMESPACE_URI . equals (name . getNamespaceURI () )) {
349+ if (isCustomizationElementName (name )) {
328350 customization .markAsAcknowledged ();
329351
330352 final AnnotationTarget annotationTarget = AnnotationTarget
@@ -390,23 +412,16 @@ private void annotate(final JCodeModel codeModel,
390412 }
391413 }
392414 }
415+
416+ private boolean isCustomizationElementName (final QName name ) {
417+ return name != null &&
418+ Constants .NAMESPACE_URI .equals (name .getNamespaceURI ()) &&
419+ !RemoveAnnotationPlugin .CUSTOMIZATION_ELEMENT_QNAMES .contains (name );
420+ }
393421
394422 @ Override
395423 public Collection <QName > getCustomizationElementNames () {
396- return Arrays .asList (
397- ANNOTATE_QNAME ,
398- ANNOTATE_PACKAGE_QNAME ,
399- ANNOTATE_CLASS_QNAME ,
400- ANNOTATE_ELEMENT_QNAME ,
401- ANNOTATE_PROPERTY_QNAME ,
402- ANNOTATE_PROPERTY_FIELD_QNAME ,
403- ANNOTATE_PROPERTY_GETTER_QNAME ,
404- ANNOTATE_PROPERTY_SETTER_QNAME ,
405- ANNOTATE_PROPERTY_SETTER_PARAMETER_QNAME ,
406- ANNOTATE_ENUM_QNAME ,
407- ANNOTATE_ENUM_CONSTANT_QNAME ,
408- ANNOTATE_ENUM_VALUE_METHOD_QNAME ,
409- ANNOTATE_ENUM_FROM_VALUE_METHOD_QNAME );
424+ return CUSTOMIZATION_ELEMENT_QNAMES ;
410425 }
411426
412427}
0 commit comments