Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java')
-rw-r--r--jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java
index 938cbf2545..f37bd8060e 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/context/java/GenericJavaPackageInfo.java
@@ -13,12 +13,15 @@ import org.eclipse.jpt.jaxb.core.context.JaxbPackage;
import org.eclipse.jpt.jaxb.core.context.JaxbPackageInfo;
import org.eclipse.jpt.jaxb.core.context.XmlAccessOrder;
import org.eclipse.jpt.jaxb.core.context.XmlAccessType;
+import org.eclipse.jpt.jaxb.core.context.XmlJavaTypeAdapter;
import org.eclipse.jpt.jaxb.core.context.XmlSchema;
import org.eclipse.jpt.jaxb.core.context.XmlSchemaType;
import org.eclipse.jpt.jaxb.core.internal.context.AbstractJaxbContextNode;
import org.eclipse.jpt.jaxb.core.resource.java.JavaResourcePackage;
import org.eclipse.jpt.jaxb.core.resource.java.XmlAccessorOrderAnnotation;
import org.eclipse.jpt.jaxb.core.resource.java.XmlAccessorTypeAnnotation;
+import org.eclipse.jpt.jaxb.core.resource.java.XmlJavaTypeAdapterAnnotation;
+import org.eclipse.jpt.jaxb.core.resource.java.XmlJavaTypeAdaptersAnnotation;
import org.eclipse.jpt.jaxb.core.resource.java.XmlSchemaTypeAnnotation;
import org.eclipse.jpt.jaxb.core.resource.java.XmlSchemaTypesAnnotation;
import org.eclipse.jpt.utility.internal.iterables.ListIterable;
@@ -38,6 +41,8 @@ public class GenericJavaPackageInfo
protected final XmlSchemaTypeContainer xmlSchemaTypeContainer;
+ protected final XmlJavaTypeAdapterContainer xmlJavaTypeAdapterContainer;
+
public GenericJavaPackageInfo(JaxbPackage parent, JavaResourcePackage resourcePackage) {
super(parent);
this.resourcePackage = resourcePackage;
@@ -45,6 +50,7 @@ public class GenericJavaPackageInfo
this.specifiedAccessType = getResourceAccessType();
this.specifiedAccessOrder = getResourceAccessOrder();
this.xmlSchemaTypeContainer = new XmlSchemaTypeContainer();
+ this.xmlJavaTypeAdapterContainer = new XmlJavaTypeAdapterContainer();
}
@@ -55,6 +61,7 @@ public class GenericJavaPackageInfo
this.setSpecifiedAccessType_(this.getResourceAccessType());
this.setSpecifiedAccessOrder_(this.getResourceAccessOrder());
this.syncXmlSchemaTypes();
+ this.syncXmlJavaTypeAdapters();
}
public void update() {
@@ -185,6 +192,48 @@ public class GenericJavaPackageInfo
}
+ // ********** xml java type adapters **********
+
+ public ListIterable<XmlJavaTypeAdapter> getXmlJavaTypeAdapters() {
+ return this.xmlJavaTypeAdapterContainer.getContextElements();
+ }
+
+ public int getXmlJavaTypeAdaptersSize() {
+ return this.xmlJavaTypeAdapterContainer.getContextElementsSize();
+ }
+
+ public XmlJavaTypeAdapter addXmlJavaTypeAdapter(int index) {
+ XmlJavaTypeAdapterAnnotation annotation = (XmlJavaTypeAdapterAnnotation) this.resourcePackage.addAnnotation(index, XmlJavaTypeAdapterAnnotation.ANNOTATION_NAME, XmlJavaTypeAdaptersAnnotation.ANNOTATION_NAME);
+ return this.xmlJavaTypeAdapterContainer.addContextElement(index, annotation);
+ }
+
+ public void removeXmlJavaTypeAdapter(XmlJavaTypeAdapter xmlSchemaType) {
+ this.removeXmlJavaTypeAdapter(this.xmlJavaTypeAdapterContainer.indexOfContextElement(xmlSchemaType));
+ }
+
+ public void removeXmlJavaTypeAdapter(int index) {
+ this.resourcePackage.removeAnnotation(index, XmlJavaTypeAdapterAnnotation.ANNOTATION_NAME, XmlJavaTypeAdaptersAnnotation.ANNOTATION_NAME);
+ this.xmlJavaTypeAdapterContainer.removeContextElement(index);
+ }
+
+ public void moveXmlJavaTypeAdapter(int targetIndex, int sourceIndex) {
+ this.resourcePackage.moveAnnotation(targetIndex, sourceIndex, XmlJavaTypeAdaptersAnnotation.ANNOTATION_NAME);
+ this.xmlJavaTypeAdapterContainer.moveContextElement(targetIndex, sourceIndex);
+ }
+
+ protected XmlJavaTypeAdapter buildXmlJavaTypeAdapter(XmlJavaTypeAdapterAnnotation xmlSchemaTypeAnnotation) {
+ return this.getFactory().buildJavaXmlJavaTypeAdapter(this, xmlSchemaTypeAnnotation);
+ }
+
+ protected void syncXmlJavaTypeAdapters() {
+ this.xmlJavaTypeAdapterContainer.synchronizeWithResourceModel();
+ }
+
+ @SuppressWarnings("unchecked")
+ protected Iterable<XmlJavaTypeAdapterAnnotation> getXmlJavaTypeAdapterAnnotations() {
+ return (Iterable<XmlJavaTypeAdapterAnnotation>) this.resourcePackage.getAnnotations(XmlJavaTypeAdapterAnnotation.ANNOTATION_NAME, XmlJavaTypeAdaptersAnnotation.ANNOTATION_NAME);
+ }
+
/**
* xml schema type container
*/
@@ -208,4 +257,28 @@ public class GenericJavaPackageInfo
return contextElement.getResourceXmlSchemaType();
}
}
+
+ /**
+ * xml java type adapter container
+ */
+ protected class XmlJavaTypeAdapterContainer
+ extends ListContainer<XmlJavaTypeAdapter, XmlJavaTypeAdapterAnnotation>
+ {
+ @Override
+ protected String getContextElementsPropertyName() {
+ return XML_JAVA_TYPE_ADAPTERS_LIST;
+ }
+ @Override
+ protected XmlJavaTypeAdapter buildContextElement(XmlJavaTypeAdapterAnnotation resourceElement) {
+ return GenericJavaPackageInfo.this.buildXmlJavaTypeAdapter(resourceElement);
+ }
+ @Override
+ protected Iterable<XmlJavaTypeAdapterAnnotation> getResourceElements() {
+ return GenericJavaPackageInfo.this.getXmlJavaTypeAdapterAnnotations();
+ }
+ @Override
+ protected XmlJavaTypeAdapterAnnotation getResourceElement(XmlJavaTypeAdapter contextElement) {
+ return contextElement.getResourceXmlJavaTypeAdapter();
+ }
+ }
}

Back to the top