blob: 72b0f4ab334a040292c1d27283339d5360f69dc1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 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.jaxb21;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.jpt.common.core.JptCommonCorePlugin;
import org.eclipse.jpt.common.core.JptResourceType;
import org.eclipse.jpt.common.core.resource.java.AnnotationDefinition;
import org.eclipse.jpt.common.core.resource.java.NestableAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.GenericJaxbPlatform;
import org.eclipse.jpt.jaxb.core.JaxbFactory;
import org.eclipse.jpt.jaxb.core.JaxbResourceModelProvider;
import org.eclipse.jpt.jaxb.core.context.java.DefaultJavaAttributeMappingDefinition;
import org.eclipse.jpt.jaxb.core.context.java.JavaAttributeMappingDefinition;
import org.eclipse.jpt.jaxb.core.internal.AbstractJaxbPlatformDefinition;
import org.eclipse.jpt.jaxb.core.internal.JavaPackageInfoResourceModelProvider;
import org.eclipse.jpt.jaxb.core.internal.JavaResourceModelProvider;
import org.eclipse.jpt.jaxb.core.internal.context.java.JavaXmlAnyAttributeMappingDefinition;
import org.eclipse.jpt.jaxb.core.internal.context.java.JavaXmlAnyElementMappingDefinition;
import org.eclipse.jpt.jaxb.core.internal.context.java.JavaXmlAttributeMappingDefinition;
import org.eclipse.jpt.jaxb.core.internal.context.java.JavaXmlElementMappingDefinition;
import org.eclipse.jpt.jaxb.core.internal.context.java.JavaXmlElementRefMappingDefinition;
import org.eclipse.jpt.jaxb.core.internal.context.java.JavaXmlElementRefsMappingDefinition;
import org.eclipse.jpt.jaxb.core.internal.context.java.JavaXmlElementsMappingDefinition;
import org.eclipse.jpt.jaxb.core.internal.context.java.JavaXmlTransientMappingDefinition;
import org.eclipse.jpt.jaxb.core.internal.context.java.JavaXmlValueMappingDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlAccessorOrderAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlAccessorTypeAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlAnyAttributeAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlAnyElementAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlAttachmentRefAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlAttributeAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlElementAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlElementDeclAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlElementRefAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlElementRefsAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlElementWrapperAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlElementsAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlEnumAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlEnumValueAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlIDAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlIDREFAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlInlineBinaryDataAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlJavaTypeAdapterAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlJavaTypeAdaptersAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlListAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlMimeTypeAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlMixedAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlRegistryAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlRootElementAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlSchemaAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlSchemaTypeAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlSchemaTypesAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlSeeAlsoAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlTransientAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlTypeAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.java.XmlValueAnnotationDefinition;
import org.eclipse.jpt.jaxb.core.internal.resource.jaxbindex.JaxbIndexResourceModelProvider;
import org.eclipse.jpt.jaxb.core.internal.resource.jaxbprops.JaxbPropertiesResourceModelProvider;
import org.eclipse.jpt.jaxb.core.platform.JaxbPlatformDefinition;
import org.eclipse.jpt.jaxb.core.platform.JaxbPlatformDescription;
public class GenericJaxb_2_1_PlatformDefinition
extends AbstractJaxbPlatformDefinition {
// singleton
private static final JaxbPlatformDefinition INSTANCE = new GenericJaxb_2_1_PlatformDefinition();
/**
* Return the singleton.
*/
public static JaxbPlatformDefinition instance() {
return INSTANCE;
}
protected GenericJaxb_2_1_PlatformDefinition() {
super();
}
public JaxbPlatformDescription getDescription() {
return GenericJaxbPlatform.VERSION_2_1;
}
public JaxbFactory getFactory() {
return GenericJaxb_2_1_Factory.instance();
}
@Override
protected Map<String, String> buildJavaToSchemaTypes() {
Map<String, String> map = new HashMap<String, String>();
map.put("boolean", "boolean");
map.put("java.lang.Boolean", "boolean");
map.put("byte", "byte");
map.put("java.lang.Byte", "byte");
map.put("short", "short");
map.put("java.lang.Short", "short");
map.put("int", "int");
map.put("java.lang.Integer", "int");
map.put("long", "long");
map.put("java.lang.Long", "long");
map.put("float", "float");
map.put("java.lang.Float", "float");
map.put("double", "double");
map.put("java.lang.Double", "double");
map.put("java.lang.String", "string");
map.put("java.math.BigInteger", "integer");
map.put("java.math.BigDecimal", "decimal");
map.put("java.util.Calendar", "dateTime");
map.put("java.util.Date", "dateTime");
map.put("javax.xml.namespace.QName", "QName");
map.put("java.net.URI", "string");
map.put("javax.xml.datatype.XMLGregorianCalendar", "anySimpleType");
map.put("javax.xml.datatype.Duration", "duration");
map.put("java.lang.Object", "anyType");
map.put("java.awt.Image", "base64Binary");
map.put("javax.activation.DataHandler", "base64Binary");
map.put("javax.xml.transform.Source", "base64Binary");
map.put("java.util.UUID", "string");
return map;
}
@Override
protected JaxbResourceModelProvider[] buildResourceModelProviders() {
// order should not be important here
return new JaxbResourceModelProvider[] {
JavaResourceModelProvider.instance(),
JavaPackageInfoResourceModelProvider.instance(),
JaxbIndexResourceModelProvider.instance(),
JaxbPropertiesResourceModelProvider.instance()};
}
public JptResourceType getMostRecentSupportedResourceType(IContentType contentType) {
if (contentType.equals(JptCommonCorePlugin.JAVA_SOURCE_CONTENT_TYPE)) {
return JptCommonCorePlugin.JAVA_SOURCE_RESOURCE_TYPE;
}
else if (contentType.equals(JptCommonCorePlugin.JAVA_SOURCE_PACKAGE_INFO_CONTENT_TYPE)) {
return JptCommonCorePlugin.JAVA_SOURCE_PACKAGE_INFO_RESOURCE_TYPE;
}
throw new IllegalArgumentException(contentType.toString());
}
@Override
protected AnnotationDefinition[] buildAnnotationDefinitions() {
return new AnnotationDefinition[] {
XmlAccessorOrderAnnotationDefinition.instance(),
XmlAccessorTypeAnnotationDefinition.instance(),
XmlAnyAttributeAnnotationDefinition.instance(),
XmlAnyElementAnnotationDefinition.instance(),
XmlAttachmentRefAnnotationDefinition.instance(),
XmlAttributeAnnotationDefinition.instance(),
XmlElementAnnotationDefinition.instance(),
XmlElementDeclAnnotationDefinition.instance(),
XmlElementRefAnnotationDefinition.instance(),
XmlElementRefsAnnotationDefinition.instance(),
XmlElementsAnnotationDefinition.instance(),
XmlElementWrapperAnnotationDefinition.instance(),
XmlEnumAnnotationDefinition.instance(),
XmlEnumValueAnnotationDefinition.instance(),
XmlIDAnnotationDefinition.instance(),
XmlIDREFAnnotationDefinition.instance(),
XmlInlineBinaryDataAnnotationDefinition.instance(),
XmlJavaTypeAdaptersAnnotationDefinition.instance(),
XmlListAnnotationDefinition.instance(),
XmlMimeTypeAnnotationDefinition.instance(),
XmlMixedAnnotationDefinition.instance(),
XmlRegistryAnnotationDefinition.instance(),
XmlRootElementAnnotationDefinition.instance(),
XmlSchemaAnnotationDefinition.instance(),
XmlSchemaTypesAnnotationDefinition.instance(),
XmlSeeAlsoAnnotationDefinition.instance(),
XmlTransientAnnotationDefinition.instance(),
XmlTypeAnnotationDefinition.instance(),
XmlValueAnnotationDefinition.instance()};
}
@Override
protected NestableAnnotationDefinition[] buildNestableAnnotationDefinitions() {
return new NestableAnnotationDefinition[] {
XmlJavaTypeAdapterAnnotationDefinition.instance(),
XmlSchemaTypeAnnotationDefinition.instance()
};
}
@Override
protected void addDefaultJavaAttributeMappingDefinitionsTo(ArrayList<DefaultJavaAttributeMappingDefinition> definitions) {
definitions.add(JavaXmlElementMappingDefinition.instance());
}
@Override
protected void addSpecifiedJavaAttributeMappingDefinitionsTo(ArrayList<JavaAttributeMappingDefinition> definitions) {
definitions.add(JavaXmlAnyAttributeMappingDefinition.instance());
definitions.add(JavaXmlAnyElementMappingDefinition.instance());
definitions.add(JavaXmlAttributeMappingDefinition.instance());
definitions.add(JavaXmlElementMappingDefinition.instance());
definitions.add(JavaXmlElementRefMappingDefinition.instance());
definitions.add(JavaXmlElementRefsMappingDefinition.instance());
definitions.add(JavaXmlElementsMappingDefinition.instance());
definitions.add(JavaXmlTransientMappingDefinition.instance());
definitions.add(JavaXmlValueMappingDefinition.instance());
}
}