diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlDefinition.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlDefinition.java | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlDefinition.java index 3b492ec5e5..ccf3ad4202 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmXmlDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2012 Oracle. All rights reserved. + * Copyright (c) 2009, 2013 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. @@ -16,10 +16,12 @@ import org.eclipse.jpt.common.core.internal.utility.PlatformTools; import org.eclipse.jpt.common.utility.internal.ObjectTools; import org.eclipse.jpt.common.utility.internal.collection.CollectionTools; import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMappingDefinition; +import org.eclipse.jpt.jpa.core.context.orm.OrmManagedTypeDefinition; import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMappingDefinition; import org.eclipse.jpt.jpa.core.context.orm.OrmXmlContextNodeFactory; import org.eclipse.jpt.jpa.core.context.orm.OrmXmlDefinition; import org.eclipse.jpt.jpa.core.context.orm.UnsupportedOrmAttributeMappingDefinition; +import org.eclipse.jpt.jpa.core.resource.orm.XmlManagedType; /** * All the state in the definition should be "static" @@ -30,6 +32,8 @@ public abstract class AbstractOrmXmlDefinition { protected final OrmXmlContextNodeFactory factory; + protected ArrayList<OrmManagedTypeDefinition> managedTypeDefinitions; + protected ArrayList<OrmTypeMappingDefinition> typeMappingDefinitions; protected ArrayList<OrmAttributeMappingDefinition> attributeMappingDefinitions; @@ -52,6 +56,47 @@ public abstract class AbstractOrmXmlDefinition return this.factory; } + // ********** managed type definitions ********** + + public OrmManagedTypeDefinition getManagedTypeDefinition(Class<? extends XmlManagedType> resourceType) { + for (OrmManagedTypeDefinition definition : this.getManagedTypeDefinitions()) { + if (definition.getResourceType() == resourceType) { + return definition; + } + } + throw new IllegalArgumentException("Illegal managed type resource type: " + resourceType); //$NON-NLS-1$ + } + + /** + * Return a list of mapping definitions to use for types in + * <code>orm.xml</code> mapping files. + * The order is unimportant. + */ + protected synchronized ArrayList<OrmManagedTypeDefinition> getManagedTypeDefinitions() { + if (this.managedTypeDefinitions == null) { + this.managedTypeDefinitions = this.buildManagedTypeDefinitions(); + } + return this.managedTypeDefinitions; + } + + protected ArrayList<OrmManagedTypeDefinition> buildManagedTypeDefinitions() { + ArrayList<OrmManagedTypeDefinition> definitions = new ArrayList<OrmManagedTypeDefinition>(); + this.addManagedTypeDefinitionsTo(definitions); + return definitions; + } + + protected void addManagedTypeDefinitionsTo(ArrayList<OrmManagedTypeDefinition> definitions) { + CollectionTools.addAll(definitions, MANAGED_TYPE_DEFINITIONS); + } + + /** + * Order should not matter here; but we'll use the same order as for Java. + * @see org.eclipse.jpt.jpa.core.internal.GenericJpaPlatformProvider + */ + protected static final OrmManagedTypeDefinition[] MANAGED_TYPE_DEFINITIONS = new OrmManagedTypeDefinition[] { + OrmPersistentTypeDefinition.instance(), + }; + // ********** type mapping definitions ********** |