diff options
Diffstat (limited to 'jaxb/plugins')
8 files changed, 185 insertions, 131 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/GenericJaxbAnnotationDefinitionProvider.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/GenericJaxbAnnotationDefinitionProvider.java index 0a852c7acf..cce574a10f 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/GenericJaxbAnnotationDefinitionProvider.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/GenericJaxbAnnotationDefinitionProvider.java @@ -86,7 +86,6 @@ public class GenericJaxbAnnotationDefinitionProvider definitions.add(XmlEnumAnnotationDefinition.instance()); definitions.add(XmlInlineBinaryDataAnnotationDefinition.instance()); definitions.add(XmlJavaTypeAdapterAnnotationDefinition.instance()); - definitions.add(XmlJavaTypeAdaptersAnnotationDefinition.instance()); definitions.add(XmlRegistryAnnotationDefinition.instance()); definitions.add(XmlRootElementAnnotationDefinition.instance()); definitions.add(XmlSeeAlsoAnnotationDefinition.instance()); diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdaptersAnnotationDefinition.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdaptersAnnotationDefinition.java index abf01aa9f3..26f99f8b81 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdaptersAnnotationDefinition.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/XmlJavaTypeAdaptersAnnotationDefinition.java @@ -13,8 +13,9 @@ import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jpt.core.resource.java.Annotation; import org.eclipse.jpt.core.resource.java.AnnotationDefinition; import org.eclipse.jpt.core.resource.java.JavaResourceAnnotatedElement; +import org.eclipse.jpt.core.resource.java.JavaResourcePackage; import org.eclipse.jpt.core.utility.jdt.AnnotatedElement; -import org.eclipse.jpt.jaxb.core.internal.resource.java.binary.BinaryXmlJavaTypeAdaptersAnnotation; +import org.eclipse.jpt.core.utility.jdt.AnnotatedPackage; import org.eclipse.jpt.jaxb.core.internal.resource.java.source.SourceXmlJavaTypeAdaptersAnnotation; import org.eclipse.jpt.jaxb.core.resource.java.XmlJavaTypeAdaptersAnnotation; @@ -22,39 +23,39 @@ import org.eclipse.jpt.jaxb.core.resource.java.XmlJavaTypeAdaptersAnnotation; * javax.xml.bind.annotation.adapters.XmlJavaTypeAdaptersAnnotation */ public final class XmlJavaTypeAdaptersAnnotationDefinition - implements AnnotationDefinition -{ + implements AnnotationDefinition { + // singleton private static final AnnotationDefinition INSTANCE = new XmlJavaTypeAdaptersAnnotationDefinition(); - + /** * Return the singleton. */ public static AnnotationDefinition instance() { return INSTANCE; } - + /** * Ensure single instance. */ private XmlJavaTypeAdaptersAnnotationDefinition() { super(); } - + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { - return new SourceXmlJavaTypeAdaptersAnnotation(parent, annotatedElement); + return new SourceXmlJavaTypeAdaptersAnnotation((JavaResourcePackage) parent, (AnnotatedPackage) annotatedElement); } - + public Annotation buildNullAnnotation(JavaResourceAnnotatedElement parent) { throw new UnsupportedOperationException(); } - + public Annotation buildAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - return new BinaryXmlJavaTypeAdaptersAnnotation(parent, jdtAnnotation); + // TODO + throw new UnsupportedOperationException(); } - + public String getAnnotationName() { return XmlJavaTypeAdaptersAnnotation.ANNOTATION_NAME; } - } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/binary/BinaryXmlJavaTypeAdapterAnnotation.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/binary/BinaryXmlJavaTypeAdapterAnnotation.java index b42e71491f..d916c401c9 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/binary/BinaryXmlJavaTypeAdapterAnnotation.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/binary/BinaryXmlJavaTypeAdapterAnnotation.java @@ -26,10 +26,13 @@ public final class BinaryXmlJavaTypeAdapterAnnotation private String value; + private String type; + public BinaryXmlJavaTypeAdapterAnnotation(JavaResourceNode parent, IAnnotation jdtAnnotation) { super(parent, jdtAnnotation); - this.value = this.buildValue(); + this.value = buildValue(); + this.type = buildType(); } public String getAnnotationName() { @@ -39,7 +42,8 @@ public final class BinaryXmlJavaTypeAdapterAnnotation @Override public void update() { super.update(); - this.setValue_(this.buildValue()); + setValue_(buildValue()); + setType_(buildType()); } @Override @@ -74,9 +78,35 @@ public final class BinaryXmlJavaTypeAdapterAnnotation throw new UnsupportedOperationException(); } - // ***** fully-qualified value class name - public String getFullyQualifiedValue() { return this.value; } + + // ***** type + public String getType() { + return this.type; + } + + public void setType(String type) { + throw new UnsupportedOperationException(); + } + + private void setType_(String type) { + String old = this.type; + this.type = type; + this.firePropertyChanged(TYPE_PROPERTY, old, type); + this.firePropertyChanged(FULLY_QUALIFIED_TYPE_PROPERTY, old, type); + } + + private String buildType() { + return (String) this.getJdtMemberValue(JAXB.XML_JAVA_TYPE_ADAPTER__TYPE); + } + + public TextRange getTypeTextRange(CompilationUnit astRoot) { + throw new UnsupportedOperationException(); + } + + public String getFullyQualifiedType() { + return this.type; + } } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/binary/BinaryXmlJavaTypeAdaptersAnnotation.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/binary/BinaryXmlJavaTypeAdaptersAnnotation.java deleted file mode 100644 index e88c9cbbe5..0000000000 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/binary/BinaryXmlJavaTypeAdaptersAnnotation.java +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 Oracle. All rights reserved. - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0, which accompanies this distribution - * and is available at http://www.eclipse.org/legal/epl-v10.html. - * - * Contributors: - * Oracle - initial API and implementation - ******************************************************************************/ -package org.eclipse.jpt.jaxb.core.internal.resource.java.binary; - -import java.util.Vector; -import org.eclipse.jdt.core.IAnnotation; -import org.eclipse.jpt.core.internal.resource.java.binary.BinaryContainerAnnotation; -import org.eclipse.jpt.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.jaxb.core.resource.java.JAXB; -import org.eclipse.jpt.jaxb.core.resource.java.XmlJavaTypeAdapterAnnotation; -import org.eclipse.jpt.jaxb.core.resource.java.XmlJavaTypeAdaptersAnnotation; -import org.eclipse.jpt.utility.internal.iterables.LiveCloneIterable; - -/** - * javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters - */ -public class BinaryXmlJavaTypeAdaptersAnnotation - extends BinaryContainerAnnotation<XmlJavaTypeAdapterAnnotation> - implements XmlJavaTypeAdaptersAnnotation { - - private final Vector<XmlJavaTypeAdapterAnnotation> xmlJavaTypeAdapters; - - - public BinaryXmlJavaTypeAdaptersAnnotation(JavaResourceAnnotatedElement parent, IAnnotation jdtAnnotation) { - super(parent, jdtAnnotation); - this.xmlJavaTypeAdapters = this.buildXmlJavaTypeAdapters(); - } - - public String getAnnotationName() { - return ANNOTATION_NAME; - } - - public Iterable<XmlJavaTypeAdapterAnnotation> getNestedAnnotations() { - return new LiveCloneIterable<XmlJavaTypeAdapterAnnotation>(this.xmlJavaTypeAdapters); - } - - public int getNestedAnnotationsSize() { - return this.xmlJavaTypeAdapters.size(); - } - - private Vector<XmlJavaTypeAdapterAnnotation> buildXmlJavaTypeAdapters() { - Object[] jdtTypeAdapters = this.getJdtMemberValues(JAXB.XML_JAVA_TYPE_ADAPTERS__VALUE); - Vector<XmlJavaTypeAdapterAnnotation> result = new Vector<XmlJavaTypeAdapterAnnotation>(jdtTypeAdapters.length); - for (Object jdtJavaTypeAdapter : jdtTypeAdapters) { - result.add(this.buildXmlJavaTypeAdapterAnnotation(jdtJavaTypeAdapter)); - } - return result; - } - - protected XmlJavaTypeAdapterAnnotation buildXmlJavaTypeAdapterAnnotation(Object jdtJavaTypeAdapter) { - return new BinaryXmlJavaTypeAdapterAnnotation(this, (IAnnotation) jdtJavaTypeAdapter); - } - - @Override - public void update() { - super.update(); - this.updateXmlJavaTypeAdapters(); - } - - // TODO - private void updateXmlJavaTypeAdapters() { - throw new UnsupportedOperationException(); - } -} diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourceXmlJavaTypeAdapterAnnotation.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourceXmlJavaTypeAdapterAnnotation.java index 3d18724557..bf6a5cf32e 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourceXmlJavaTypeAdapterAnnotation.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourceXmlJavaTypeAdapterAnnotation.java @@ -46,15 +46,19 @@ public final class SourceXmlJavaTypeAdapterAnnotation private final DeclarationAnnotationElementAdapter<String> valueDeclarationAdapter; private final AnnotationElementAdapter<String> valueAdapter; private String value; - private String fullyQualifiedValue; - - + + private final DeclarationAnnotationElementAdapter<String> typeDeclarationAdapter; + private final AnnotationElementAdapter<String> typeAdapter; + private String type; + private String fullyQualifiedType; + + // ********** constructors ********** public SourceXmlJavaTypeAdapterAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement element) { this(parent, element, DECLARATION_ANNOTATION_ADAPTER, new ElementAnnotationAdapter(element, DECLARATION_ANNOTATION_ADAPTER)); } - + /** * Parent is a JavaResourceNode instead of a JavaResourceAnnotatedElement because * the parent is sometimes the outer annotation XmlJavaTypeAdaptersAnnotation @@ -63,96 +67,145 @@ public final class SourceXmlJavaTypeAdapterAnnotation super(parent, element, daa, annotationAdapter); this.valueDeclarationAdapter = buildValueAdapter(daa); this.valueAdapter = this.buildAnnotationElementAdapter(this.valueDeclarationAdapter); + this.typeDeclarationAdapter = buildTypeAdapter(daa); + this.typeAdapter = this.buildAnnotationElementAdapter(this.typeDeclarationAdapter); } - + private DeclarationAnnotationElementAdapter<String> buildValueAdapter(DeclarationAnnotationAdapter daa) { return buildAnnotationElementAdapter(daa, JAXB.XML_JAVA_TYPE_ADAPTER__VALUE, SimpleTypeStringExpressionConverter.instance()); } - + + private DeclarationAnnotationElementAdapter<String> buildTypeAdapter(DeclarationAnnotationAdapter daa) { + return buildAnnotationElementAdapter(daa, JAXB.XML_JAVA_TYPE_ADAPTER__TYPE, SimpleTypeStringExpressionConverter.instance()); + } + static DeclarationAnnotationElementAdapter<String> buildAnnotationElementAdapter(DeclarationAnnotationAdapter annotationAdapter, String elementName, ExpressionConverter<String> converter) { return new ConversionDeclarationAnnotationElementAdapter<String>(annotationAdapter, elementName, false, converter); } - + protected AnnotationElementAdapter<String> buildAnnotationElementAdapter(DeclarationAnnotationElementAdapter<String> daea) { return new AnnotatedElementAnnotationElementAdapter<String>(this.annotatedElement, daea); } - + public String getAnnotationName() { return ANNOTATION_NAME; } - + public void initialize(CompilationUnit astRoot) { - this.value = this.buildValue(astRoot); - this.fullyQualifiedValue = this.buildFullyQualifiedValue(astRoot); + this.value = buildValue(astRoot); + this.fullyQualifiedValue = buildFullyQualifiedValue(astRoot); + this.type = buildType(astRoot); + this.fullyQualifiedType = buildFullyQualifiedType(astRoot); } - + public void synchronizeWith(CompilationUnit astRoot) { - this.syncValue(this.buildValue(astRoot)); - this.syncFullyQualifiedValue(this.buildFullyQualifiedValue(astRoot)); + syncValue(buildValue(astRoot)); + syncFullyQualifiedValue(buildFullyQualifiedValue(astRoot)); + syncType(buildType(astRoot)); + syncFullyQualifiedType(buildFullyQualifiedType(astRoot)); } - + @Override public void toString(StringBuilder sb) { sb.append(this.value); } - - + + // ********** XmlJavaTypeAdapterAnnotation implementation ********** - + // ***** value public String getValue() { return this.value; } - + public void setValue(String value) { if (this.attributeValueHasChanged(this.value, value)) { this.value = value; this.valueAdapter.setValue(value); } } - + private void syncValue(String astValue) { String old = this.value; this.value = astValue; this.firePropertyChanged(VALUE_PROPERTY, old, astValue); } - + private String buildValue(CompilationUnit astRoot) { return this.valueAdapter.getValue(astRoot); } - + public TextRange getValueTextRange(CompilationUnit astRoot) { return this.getElementTextRange(this.valueDeclarationAdapter, astRoot); } - - // ***** fully-qualified value class name + public String getFullyQualifiedValue() { return this.fullyQualifiedValue; } - + private void syncFullyQualifiedValue(String name) { String old = this.fullyQualifiedValue; this.fullyQualifiedValue = name; this.firePropertyChanged(FULLY_QUALIFIED_VALUE_PROPERTY, old, name); } - + private String buildFullyQualifiedValue(CompilationUnit astRoot) { return (this.value == null) ? null : ASTTools.resolveFullyQualifiedName(this.valueAdapter.getExpression(astRoot)); } - - + + // ***** type + public String getType() { + return this.type; + } + + public void setType(String type) { + if (this.attributeValueHasChanged(this.type, type)) { + this.type = type; + this.typeAdapter.setValue(type); + } + } + + private void syncType(String astType) { + String old = this.type; + this.type = astType; + this.firePropertyChanged(TYPE_PROPERTY, old, astType); + } + + private String buildType(CompilationUnit astRoot) { + return this.typeAdapter.getValue(astRoot); + } + + public TextRange getTypeTextRange(CompilationUnit astRoot) { + return this.getElementTextRange(this.typeDeclarationAdapter, astRoot); + } + + public String getFullyQualifiedType() { + return this.fullyQualifiedType; + } + + private void syncFullyQualifiedType(String name) { + String old = this.fullyQualifiedType; + this.fullyQualifiedType = name; + this.firePropertyChanged(FULLY_QUALIFIED_TYPE_PROPERTY, old, name); + } + + private String buildFullyQualifiedType(CompilationUnit astRoot) { + return (this.type == null) ? null : ASTTools.resolveFullyQualifiedName(this.typeAdapter.getExpression(astRoot)); + } + + //*********** NestableAnnotation implementation **************** - - + /** * convenience implementation of method from NestableAnnotation interface * for subclasses */ public void initializeFrom(NestableAnnotation oldAnnotation) { XmlJavaTypeAdapterAnnotation oldJavaTypeAdapterAnnotation = (XmlJavaTypeAdapterAnnotation) oldAnnotation; - this.setValue(oldJavaTypeAdapterAnnotation.getValue()); + setValue(oldJavaTypeAdapterAnnotation.getValue()); + setType(oldJavaTypeAdapterAnnotation.getType()); } - + /** * convenience implementation of method from NestableAnnotation interface * for subclasses @@ -160,23 +213,22 @@ public final class SourceXmlJavaTypeAdapterAnnotation public void moveAnnotation(int newIndex) { this.getIndexedAnnotationAdapter().moveAnnotation(newIndex); } - + private IndexedAnnotationAdapter getIndexedAnnotationAdapter() { return (IndexedAnnotationAdapter) this.annotationAdapter; } - - + + // ********** static methods ********** - + static SourceXmlJavaTypeAdapterAnnotation createNestedXmlJavaTypeAdapterAnnotation(JavaResourceNode parent, AnnotatedElement annotatedElement, int index, DeclarationAnnotationAdapter javaTypeAdaptersAdapter) { IndexedDeclarationAnnotationAdapter idaa = buildNestedDeclarationAnnotationAdapter(index, javaTypeAdaptersAdapter); IndexedAnnotationAdapter annotationAdapter = new ElementIndexedAnnotationAdapter(annotatedElement, idaa); - + return new SourceXmlJavaTypeAdapterAnnotation(parent, annotatedElement, idaa, annotationAdapter); } - + private static IndexedDeclarationAnnotationAdapter buildNestedDeclarationAnnotationAdapter(int index, DeclarationAnnotationAdapter javaTypeAdaptersAdapter) { return new NestedIndexedDeclarationAnnotationAdapter(javaTypeAdaptersAdapter, index, JAXB.XML_JAVA_TYPE_ADAPTER); } - } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourceXmlJavaTypeAdaptersAnnotation.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourceXmlJavaTypeAdaptersAnnotation.java index bf16f7713e..6f7ceb540b 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourceXmlJavaTypeAdaptersAnnotation.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/resource/java/source/SourceXmlJavaTypeAdaptersAnnotation.java @@ -15,8 +15,8 @@ import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jpt.core.internal.resource.java.source.AnnotationContainerTools; import org.eclipse.jpt.core.internal.resource.java.source.SourceAnnotation; import org.eclipse.jpt.core.internal.utility.jdt.SimpleDeclarationAnnotationAdapter; -import org.eclipse.jpt.core.resource.java.JavaResourceAnnotatedElement; -import org.eclipse.jpt.core.utility.jdt.AnnotatedElement; +import org.eclipse.jpt.core.resource.java.JavaResourcePackage; +import org.eclipse.jpt.core.utility.jdt.AnnotatedPackage; import org.eclipse.jpt.core.utility.jdt.DeclarationAnnotationAdapter; import org.eclipse.jpt.jaxb.core.resource.java.JAXB; import org.eclipse.jpt.jaxb.core.resource.java.XmlJavaTypeAdapterAnnotation; @@ -28,7 +28,7 @@ import org.eclipse.jpt.utility.internal.iterables.LiveCloneIterable; * javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters */ public class SourceXmlJavaTypeAdaptersAnnotation - extends SourceAnnotation<AnnotatedElement> + extends SourceAnnotation<AnnotatedPackage> implements XmlJavaTypeAdaptersAnnotation { public static final DeclarationAnnotationAdapter DECLARATION_ANNOTATION_ADAPTER = new SimpleDeclarationAnnotationAdapter(ANNOTATION_NAME); @@ -36,7 +36,7 @@ public class SourceXmlJavaTypeAdaptersAnnotation private final Vector<XmlJavaTypeAdapterAnnotation> adapters = new Vector<XmlJavaTypeAdapterAnnotation>(); - public SourceXmlJavaTypeAdaptersAnnotation(JavaResourceAnnotatedElement parent, AnnotatedElement annotatedElement) { + public SourceXmlJavaTypeAdaptersAnnotation(JavaResourcePackage parent, AnnotatedPackage annotatedElement) { super(parent, annotatedElement, DECLARATION_ANNOTATION_ADAPTER); } @@ -76,6 +76,10 @@ public class SourceXmlJavaTypeAdaptersAnnotation return this.adapters.size(); } + public XmlJavaTypeAdapterAnnotation getNestedAnnotation(int index) { + return this.adapters.get(index); + } + public XmlJavaTypeAdapterAnnotation addNestedAnnotation() { return this.addNestedAnnotation(this.adapters.size()); } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/resource/java/XmlJavaTypeAdapterAnnotation.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/resource/java/XmlJavaTypeAdapterAnnotation.java index 8caf37d22c..ab657ab8c9 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/resource/java/XmlJavaTypeAdapterAnnotation.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/resource/java/XmlJavaTypeAdapterAnnotation.java @@ -64,4 +64,38 @@ public interface XmlJavaTypeAdapterAnnotation */ String getFullyQualifiedValue(); String FULLY_QUALIFIED_VALUE_PROPERTY = "fullyQualifiedValue"; //$NON-NLS-1$ + + /** + * Corresponds to the 'type' element of the XmlJavaTypeAdapter annotation. + * Return null if the element does not exist in Java. + * Return the portion of the value preceding ".class". + * <pre> + * @XmlJavaTypeAdapter(type=Foo.class) + * </pre> + * will return "Foo" + */ + String getType(); + String TYPE_PROPERTY = "type"; //$NON-NLS-1$ + + /** + * Corresponds to the 'type' element of the XmlJavaTypeAdapter annotation. + * Set to null to remove the element. + */ + void setType(String type); + + /** + * Return the {@link TextRange} for the 'type' element. If the element + * does not exist return the {@link TextRange} for the XmlJavaTypeAdapter annotation. + */ + TextRange getTypeTextRange(CompilationUnit astRoot); + + /** + * Return the type's fully-qualified class name as resolved by the AST's bindings. + * <pre> + * @XmlJavaTypeAdapter(type=Foo.class) + * </pre> + * will return "example.Foo" if there is an import for example.Foo. + */ + String getFullyQualifiedType(); + String FULLY_QUALIFIED_TYPE_PROPERTY = "fullyQualifiedType"; //$NON-NLS-1$ } diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/resource/java/XmlJavaTypeAdaptersAnnotation.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/resource/java/XmlJavaTypeAdaptersAnnotation.java index 1a70c8a20f..0775044510 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/resource/java/XmlJavaTypeAdaptersAnnotation.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/resource/java/XmlJavaTypeAdaptersAnnotation.java @@ -30,4 +30,9 @@ public interface XmlJavaTypeAdaptersAnnotation String ANNOTATION_NAME = JAXB.XML_JAVA_TYPE_ADAPTERS; String XML_JAVA_TYPE_ADAPTERS_LIST = "xmlJavaTypeAdapters"; //$NON-NLS-1$ + + /** + * shortcut API + */ + XmlJavaTypeAdapterAnnotation getNestedAnnotation(int index); } |