Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java47
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 **********

Back to the top