diff options
author | Martin Taal | 2012-05-04 07:03:48 +0000 |
---|---|---|
committer | Martin Taal | 2012-05-04 07:03:48 +0000 |
commit | 4a88cbc575c574569c31fd6180631a6ac1bb0342 (patch) | |
tree | dd51bbb3da48a0f9a25998a1b43caf2dcff528f0 | |
parent | 6467f41ef4f97ea8d968ada6637eb1764acb5e37 (diff) | |
download | org.eclipse.emf.teneo-4a88cbc575c574569c31fd6180631a6ac1bb0342.tar.gz org.eclipse.emf.teneo-4a88cbc575c574569c31fd6180631a6ac1bb0342.tar.xz org.eclipse.emf.teneo-4a88cbc575c574569c31fd6180631a6ac1bb0342.zip |
Implemented testcase for jpa2 orphanRemoval attribute
29 files changed, 2706 insertions, 14 deletions
diff --git a/core/org.eclipse.emf.teneo/src/org/eclipse/emf/teneo/annotations/mapper/OneToOneReferenceAnnotator.java b/core/org.eclipse.emf.teneo/src/org/eclipse/emf/teneo/annotations/mapper/OneToOneReferenceAnnotator.java index f9f8c406c..ad49cb5cb 100755 --- a/core/org.eclipse.emf.teneo/src/org/eclipse/emf/teneo/annotations/mapper/OneToOneReferenceAnnotator.java +++ b/core/org.eclipse.emf.teneo/src/org/eclipse/emf/teneo/annotations/mapper/OneToOneReferenceAnnotator.java @@ -76,6 +76,10 @@ public class OneToOneReferenceAnnotator extends BaseEFeatureAnnotator implements oto.setMappedBy(eReference.getEOpposite().getName()); } + if (eReference.isContainment() && getPersistenceOptions().isSetCascadeAllOnContainment()) { + oto.setOrphanRemoval(true); + } + if (getPersistenceOptions().isSetForeignKeyNames() && aReference.getForeignKey() == null) { // See bugzilla 211798: handle a specific case when this is a // bidirectional diff --git a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/AbstractAssociationMapper.java b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/AbstractAssociationMapper.java index 8592b591f..03e206345 100755 --- a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/AbstractAssociationMapper.java +++ b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/AbstractAssociationMapper.java @@ -89,11 +89,12 @@ public abstract class AbstractAssociationMapper extends AbstractMapper { // translates jpa CascadeType to HbCascadeType protected List<HbCascadeType> getCascades(Cascade cascade, - List<CascadeType> cascades) { - if (cascade != null) { - return cascade.getValue(); + List<CascadeType> cascades, boolean orphanRemoval) { + final List<HbCascadeType> result = cascade != null ? cascade.getValue() : convertCascade(cascades); + if (orphanRemoval && !(result.contains(HbCascadeType.ALL) || result.contains(HbCascadeType.DELETE_ORPHAN))) { + result.add(HbCascadeType.DELETE_ORPHAN); } - return convertCascade(cascades); + return result; } protected List<HbCascadeType> convertCascade(List<CascadeType> cascades) { diff --git a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyAttributeMapper.java b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyAttributeMapper.java index aba48cb91..836858d57 100755 --- a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyAttributeMapper.java +++ b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyAttributeMapper.java @@ -86,7 +86,7 @@ public class ManyAttributeMapper extends AbstractAssociationMapper implements Ex if (!isArray) { addFetchType(collElement, otm.getFetch()); } - addCascadesForMany(collElement, getCascades(hbAttribute.getHbCascade(), otm.getCascade())); + addCascadesForMany(collElement, getCascades(hbAttribute.getHbCascade(), otm.getCascade(), false)); if (FeatureMapUtil.isFeatureMap(paAttribute.getModelEAttribute())) { if (getHbmContext().getPersistenceOptions().isMapFeatureMapAsComponent()) { diff --git a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyExternalReferenceMapper.java b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyExternalReferenceMapper.java index 2cb976aae..860c2e548 100755 --- a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyExternalReferenceMapper.java +++ b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyExternalReferenceMapper.java @@ -66,7 +66,7 @@ public class ManyExternalReferenceMapper extends AbstractAssociationMapper addFetchType(collElement, otm.getFetch()); addCascadesForMany(collElement, getCascades(hbReference.getHbCascade(), - otm.getCascade())); + otm.getCascade(), false)); addElementElement(collElement, paReference, getColumns(paReference), otm.getTargetEntity()); diff --git a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyToManyMapper.java b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyToManyMapper.java index aab8029df..74ec6e4c0 100755 --- a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyToManyMapper.java +++ b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyToManyMapper.java @@ -80,7 +80,7 @@ public class ManyToManyMapper extends AbstractAssociationMapper implements addFetchType(collElement, mtm.getFetch()); addCascades(collElement, - getCascades(hbReference.getHbCascade(), mtm.getCascade()), + getCascades(hbReference.getHbCascade(), mtm.getCascade(), false), false); final PAnnotatedEClass referedToAClass = hbReference diff --git a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyToOneMapper.java b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyToOneMapper.java index 4d2c7a082..4b2481942 100755 --- a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyToOneMapper.java +++ b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/ManyToOneMapper.java @@ -135,7 +135,7 @@ public class ManyToOneMapper extends AbstractAssociationMapper implements if (!isProperty) { addCascadesForSingle(associationElement, - getCascades(hbReference.getHbCascade(), mto.getCascade())); + getCascades(hbReference.getHbCascade(), mto.getCascade(), false)); } if (hbReference.getHbFetch() != null) { diff --git a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/OneToManyMapper.java b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/OneToManyMapper.java index 7cf657cf0..cac9ab993 100755 --- a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/OneToManyMapper.java +++ b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/OneToManyMapper.java @@ -160,7 +160,7 @@ public class OneToManyMapper extends AbstractAssociationMapper implements addFetchType(collElement, (null != coe) ? coe.getFetch() : otm .getFetch()); addCascadesForMany(collElement, getCascades(hbReference.getHbCascade(), - otm.getCascade())); + otm.getCascade(), otm.isOrphanRemoval())); List<JoinColumn> inverseJoinColumns = jt != null && jt.getInverseJoinColumns() != null ? jt .getInverseJoinColumns() : new ArrayList<JoinColumn>(); @@ -277,7 +277,7 @@ public class OneToManyMapper extends AbstractAssociationMapper implements addFetchType(collElement, otm.getFetch()); addCascadesForMany(collElement, getCascades(hbReference.getHbCascade(), - otm.getCascade())); + otm.getCascade(), otm.isOrphanRemoval())); boolean isMap = StoreUtil.isMap(eref) && getHbmContext().isMapEMapAsTrueMap(); diff --git a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/OneToOneMapper.java b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/OneToOneMapper.java index 1b72a3149..6c49b6abc 100755 --- a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/OneToOneMapper.java +++ b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/OneToOneMapper.java @@ -10,6 +10,8 @@ package org.eclipse.emf.teneo.hibernate.mapper; import java.util.List; +import javax.print.attribute.standard.MediaSize.ISO; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.emf.ecore.EReference; @@ -118,7 +120,7 @@ public class OneToOneMapper extends AbstractAssociationMapper implements addAccessor(associationElement); addCascadesForSingle(associationElement, - getCascades(hbReference.getHbCascade(), oto.getCascade())); + getCascades(hbReference.getHbCascade(), oto.getCascade(), false)); final boolean isNullable = (oto.isOptional() || getHbmContext().isDoForceOptional(paReference) || getHbmContext() @@ -169,8 +171,8 @@ public class OneToOneMapper extends AbstractAssociationMapper implements addAccessor(associationElement); addForeignKeyAttribute(associationElement, paReference); - addCascadesForSingle(associationElement, - getCascades(hbReference.getHbCascade(), oto.getCascade())); + addCascades(associationElement, + getCascades(hbReference.getHbCascade(), oto.getCascade(), oto.isOrphanRemoval()), true); addLazyProxy(associationElement, oto.getFetch(), paReference); if (hbReference.getHbFetch() != null) { diff --git a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/TypedEReferenceMapper.java b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/TypedEReferenceMapper.java index 307e84bd3..02efb2a4a 100644 --- a/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/TypedEReferenceMapper.java +++ b/hibernate/org.eclipse.emf.teneo.hibernate.mapper/src/org/eclipse/emf/teneo/hibernate/mapper/TypedEReferenceMapper.java @@ -72,7 +72,7 @@ public class TypedEReferenceMapper extends AbstractAssociationMapper implements addFetchType(collElement, otm.getFetch()); addCascadesForMany(collElement, - getCascades(hbReference.getHbCascade(), otm.getCascade())); + getCascades(hbReference.getHbCascade(), otm.getCascade(), otm.isOrphanRemoval())); addElementElement(collElement, paEFeature, getColumns(paEFeature), otm.getTargetEntity()); diff --git a/tests/org.eclipse.emf.teneo.hibernate.test/hbm/org.eclipse.emf.teneo.hibernate.test.emf.jpa2/OrphanRemovalAction_hsqldb_e_o_hibernate.hbm.xml b/tests/org.eclipse.emf.teneo.hibernate.test/hbm/org.eclipse.emf.teneo.hibernate.test.emf.jpa2/OrphanRemovalAction_hsqldb_e_o_hibernate.hbm.xml new file mode 100644 index 000000000..474835443 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.hibernate.test/hbm/org.eclipse.emf.teneo.hibernate.test.emf.jpa2/OrphanRemovalAction_hsqldb_e_o_hibernate.hbm.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> + +<hibernate-mapping auto-import="false"> + <class name="org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeImpl" entity-name="Employee" abstract="false" lazy="false" table="`EMPLOYEE`"> + <meta attribute="eclassName" inherit="false">Employee</meta> + <meta attribute="epackage" inherit="false">http://www.eclipse.org/emf/teneo/samples/emf/jpa2/orphanremoval</meta> + <id name="id" type="long" unsaved-value="0"> + <column not-null="true" unique="false" name="`ID`"/> + </id> + <version name="e_version" column="e_version" access="org.eclipse.emf.teneo.hibernate.mapping.property.VersionPropertyHandler"> + <meta attribute="syntheticVersion" inherit="false">true</meta> + </version> + <one-to-one name="employeeInfo" entity-name="EmployeeInfo" cascade="persist,save-update,lock,delete,delete-orphan" lazy="false" property-ref="employee"/> + <list name="addresses" lazy="true" cascade="persist,merge,refresh,save-update,lock,delete-orphan"> + <key update="true" foreign-key="EMPLOYEE_ADDRESSES"> + <column name="`EMPLOYEE_ADDRESSES_ID`" unique="false"/> + </key> + <list-index column="`EMPLOYEE_ADDRESSES_IDX`"/> + <one-to-many entity-name="Address"/> + </list> + </class> + <class name="org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeInfoImpl" entity-name="EmployeeInfo" abstract="false" lazy="false" table="`EMPLOYEEINFO`"> + <meta attribute="eclassName" inherit="false">EmployeeInfo</meta> + <meta attribute="epackage" inherit="false">http://www.eclipse.org/emf/teneo/samples/emf/jpa2/orphanremoval</meta> + <id name="id" type="long" unsaved-value="0"> + <column not-null="true" unique="false" name="`ID`"/> + <generator class="native"/> + </id> + <version name="e_version" column="e_version" access="org.eclipse.emf.teneo.hibernate.mapping.property.VersionPropertyHandler"> + <meta attribute="syntheticVersion" inherit="false">true</meta> + </version> + <property name="name" lazy="false" insert="true" update="true" not-null="false" unique="false" type="java.lang.String"> + <column not-null="false" unique="false" name="`NAME`"/> + </property> + <many-to-one name="employee" entity-name="Employee" cascade="merge,persist,save-update,lock,refresh" not-null="false" lazy="false" insert="true" update="true"/> + </class> + <class name="org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.AddressImpl" entity-name="Address" abstract="false" lazy="false" table="`ADDRESS`"> + <meta attribute="eclassName" inherit="false">Address</meta> + <meta attribute="epackage" inherit="false">http://www.eclipse.org/emf/teneo/samples/emf/jpa2/orphanremoval</meta> + <id type="long" name="e_id" column="e_id" access="org.eclipse.emf.teneo.hibernate.mapping.identifier.IdentifierPropertyHandler"> + <meta attribute="syntheticId" inherit="false">true</meta> + <generator class="native"/> + </id> + <version name="e_version" column="e_version" access="org.eclipse.emf.teneo.hibernate.mapping.property.VersionPropertyHandler"> + <meta attribute="syntheticVersion" inherit="false">true</meta> + </version> + <property name="name" lazy="false" insert="true" update="true" not-null="false" unique="false" type="java.lang.String"> + <column not-null="false" unique="false" name="`NAME`"/> + </property> + </class> +</hibernate-mapping>
\ No newline at end of file diff --git a/tests/org.eclipse.emf.teneo.hibernate.test/hbm/org.eclipse.emf.teneo.hibernate.test.emf.jpa2/OrphanRemovalAction_hsqldb_h_o_hibernate.hbm.xml b/tests/org.eclipse.emf.teneo.hibernate.test/hbm/org.eclipse.emf.teneo.hibernate.test.emf.jpa2/OrphanRemovalAction_hsqldb_h_o_hibernate.hbm.xml new file mode 100644 index 000000000..8238f1d72 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.hibernate.test/hbm/org.eclipse.emf.teneo.hibernate.test.emf.jpa2/OrphanRemovalAction_hsqldb_h_o_hibernate.hbm.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> + +<hibernate-mapping auto-import="false"> + <class name="org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeImpl" entity-name="Employee" abstract="false" lazy="false" discriminator-value="Employee" table="`EMPLOYEE`"> + <meta attribute="eclassName" inherit="false">Employee</meta> + <meta attribute="epackage" inherit="false">http://www.eclipse.org/emf/teneo/samples/emf/jpa2/orphanremoval</meta> + <id name="id" type="long" unsaved-value="0"> + <column not-null="true" unique="false" name="`ID`"/> + </id> + <discriminator type="string"> + <column name="`DTYPE`" index="EMPLOYEEDTYPE" length="255" not-null="true"/> + </discriminator> + <version name="e_version" column="e_version" access="org.eclipse.emf.teneo.hibernate.mapping.property.VersionPropertyHandler"> + <meta attribute="syntheticVersion" inherit="false">true</meta> + </version> + <one-to-one name="employeeInfo" entity-name="EmployeeInfo" cascade="persist,save-update,lock,delete,delete-orphan" lazy="false" property-ref="employee"/> + <list name="addresses" lazy="true" cascade="persist,merge,refresh,save-update,lock,delete-orphan"> + <key update="true" foreign-key="EMPLOYEE_ADDRESSES"> + <column name="`EMPLOYEE_ADDRESSES_ID`" unique="false"/> + </key> + <list-index column="`EMPLOYEE_ADDRESSES_IDX`"/> + <one-to-many entity-name="Address"/> + </list> + </class> + <class name="org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeInfoImpl" entity-name="EmployeeInfo" abstract="false" lazy="false" discriminator-value="EmployeeInfo" table="`EMPLOYEEINFO`"> + <meta attribute="eclassName" inherit="false">EmployeeInfo</meta> + <meta attribute="epackage" inherit="false">http://www.eclipse.org/emf/teneo/samples/emf/jpa2/orphanremoval</meta> + <id name="id" type="long" unsaved-value="0"> + <column not-null="true" unique="false" name="`ID`"/> + <generator class="native"/> + </id> + <discriminator type="string"> + <column name="`DTYPE`" index="EMPLOYEEINFODTYPE" length="255" not-null="true"/> + </discriminator> + <version name="e_version" column="e_version" access="org.eclipse.emf.teneo.hibernate.mapping.property.VersionPropertyHandler"> + <meta attribute="syntheticVersion" inherit="false">true</meta> + </version> + <property name="name" lazy="false" insert="true" update="true" not-null="false" unique="false" type="java.lang.String"> + <column not-null="false" unique="false" name="`NAME`"/> + </property> + <many-to-one name="employee" entity-name="Employee" cascade="merge,persist,save-update,lock,refresh" not-null="false" lazy="false" insert="true" update="true"/> + </class> + <class name="org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.AddressImpl" entity-name="Address" abstract="false" lazy="false" discriminator-value="Address" table="`ADDRESS`"> + <meta attribute="eclassName" inherit="false">Address</meta> + <meta attribute="epackage" inherit="false">http://www.eclipse.org/emf/teneo/samples/emf/jpa2/orphanremoval</meta> + <id type="long" name="e_id" column="e_id" access="org.eclipse.emf.teneo.hibernate.mapping.identifier.IdentifierPropertyHandler"> + <meta attribute="syntheticId" inherit="false">true</meta> + <generator class="native"/> + </id> + <discriminator type="string"> + <column name="`DTYPE`" index="ADDRESSDTYPE" length="255" not-null="true"/> + </discriminator> + <version name="e_version" column="e_version" access="org.eclipse.emf.teneo.hibernate.mapping.property.VersionPropertyHandler"> + <meta attribute="syntheticVersion" inherit="false">true</meta> + </version> + <property name="name" lazy="false" insert="true" update="true" not-null="false" unique="false" type="java.lang.String"> + <column not-null="false" unique="false" name="`NAME`"/> + </property> + </class> +</hibernate-mapping>
\ No newline at end of file diff --git a/tests/org.eclipse.emf.teneo.hibernate.test/src/org/eclipse/emf/teneo/hibernate/test/AllTests.java b/tests/org.eclipse.emf.teneo.hibernate.test/src/org/eclipse/emf/teneo/hibernate/test/AllTests.java index 5572f2609..c95caea57 100755 --- a/tests/org.eclipse.emf.teneo.hibernate.test/src/org/eclipse/emf/teneo/hibernate/test/AllTests.java +++ b/tests/org.eclipse.emf.teneo.hibernate.test/src/org/eclipse/emf/teneo/hibernate/test/AllTests.java @@ -29,6 +29,8 @@ public class AllTests { public static Test suite() { TestSuite suite = new TestSuite("All tests for hibernate"); + suite.addTest(org.eclipse.emf.teneo.hibernate.test.emf.jpa2.AllTests + .suite()); suite.addTest(org.eclipse.emf.teneo.hibernate.test.emf.sample.AllTests .suite()); suite.addTest(org.eclipse.emf.teneo.hibernate.test.emf.detach.AllTests diff --git a/tests/org.eclipse.emf.teneo.hibernate.test/src/org/eclipse/emf/teneo/hibernate/test/emf/jpa2/AllTests.java b/tests/org.eclipse.emf.teneo.hibernate.test/src/org/eclipse/emf/teneo/hibernate/test/emf/jpa2/AllTests.java new file mode 100755 index 000000000..be946a0aa --- /dev/null +++ b/tests/org.eclipse.emf.teneo.hibernate.test/src/org/eclipse/emf/teneo/hibernate/test/emf/jpa2/AllTests.java @@ -0,0 +1,67 @@ +/** + * <copyright> Copyright (c) 2012 Springsite BV (The Netherlands) and others 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: Martin Taal </copyright> $Id: + * AllTests.java,v 1.36 2007/04/17 15:49:55 mtaal Exp $ + */ + +package org.eclipse.emf.teneo.hibernate.test.emf.jpa2; + +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.eclipse.emf.teneo.hibernate.test.HibernateTestbed; +import org.eclipse.emf.teneo.test.conf.MultiCfgTestSuite; +import org.eclipse.emf.teneo.test.emf.annotations.AssociationOverrideAction; +import org.eclipse.emf.teneo.test.emf.annotations.AttributeOverridesAction; +import org.eclipse.emf.teneo.test.emf.annotations.BasicAction; +import org.eclipse.emf.teneo.test.emf.annotations.BookAction; +import org.eclipse.emf.teneo.test.emf.annotations.CascadeNotallAction; +import org.eclipse.emf.teneo.test.emf.annotations.CompositeIdAction; +import org.eclipse.emf.teneo.test.emf.annotations.DuplicatesAction; +import org.eclipse.emf.teneo.test.emf.annotations.EDataTypeAction; +import org.eclipse.emf.teneo.test.emf.annotations.EmbeddedAction; +import org.eclipse.emf.teneo.test.emf.annotations.EmbeddedIdAction; +import org.eclipse.emf.teneo.test.emf.annotations.EntityAction; +import org.eclipse.emf.teneo.test.emf.annotations.ExternalAction; +import org.eclipse.emf.teneo.test.emf.annotations.ForcedIdBagAction; +import org.eclipse.emf.teneo.test.emf.annotations.HbMapKeysAction; +import org.eclipse.emf.teneo.test.emf.annotations.IdAction; +import org.eclipse.emf.teneo.test.emf.annotations.IdBagAction; +import org.eclipse.emf.teneo.test.emf.annotations.InheritanceAnnotationAction; +import org.eclipse.emf.teneo.test.emf.annotations.InheritanceAnnotationTablePerClassAction; +import org.eclipse.emf.teneo.test.emf.annotations.IntegerDiscriminatorAction; +import org.eclipse.emf.teneo.test.emf.annotations.LazyLibraryAction; +import org.eclipse.emf.teneo.test.emf.annotations.LobAction; +import org.eclipse.emf.teneo.test.emf.annotations.ManyToManyAction; +import org.eclipse.emf.teneo.test.emf.annotations.MapKeyAction; +import org.eclipse.emf.teneo.test.emf.annotations.MappedSuperClassAction; +import org.eclipse.emf.teneo.test.emf.annotations.NaturalIdAction; +import org.eclipse.emf.teneo.test.emf.annotations.OnetoonePKAction; +import org.eclipse.emf.teneo.test.emf.annotations.OverrideSecondaryAction; +import org.eclipse.emf.teneo.test.emf.annotations.PKeyJoinAction; +import org.eclipse.emf.teneo.test.emf.annotations.SecondarytableHibernateAction; +import org.eclipse.emf.teneo.test.emf.annotations.SetNMAction; +import org.eclipse.emf.teneo.test.emf.annotations.SetResourceAction; +import org.eclipse.emf.teneo.test.emf.annotations.ToOneAction; +import org.eclipse.emf.teneo.test.emf.annotations.TransientAction; +import org.eclipse.emf.teneo.test.emf.annotations.UniqueConstraintsAction; +import org.eclipse.emf.teneo.test.emf.annotations.VariousAction; + +/** + * All tests + * + * @author <a href="mailto:mtaal@elver.org">Martin Taal</a> + * @version $Revision: 1.109 $ + */ +public class AllTests { + + public static Test suite() { + TestSuite suite = new MultiCfgTestSuite( + "Test for org.eclipse.emf.teneo.hibernate.test.emf.jpa2", + HibernateTestbed.instance().getConfigurations()); + suite.addTestSuite(OrphanRemovalAction.class); + return suite; + } +} diff --git a/tests/org.eclipse.emf.teneo.hibernate.test/src/org/eclipse/emf/teneo/hibernate/test/emf/jpa2/OrphanRemovalAction.java b/tests/org.eclipse.emf.teneo.hibernate.test/src/org/eclipse/emf/teneo/hibernate/test/emf/jpa2/OrphanRemovalAction.java new file mode 100755 index 000000000..2032bb5b8 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.hibernate.test/src/org/eclipse/emf/teneo/hibernate/test/emf/jpa2/OrphanRemovalAction.java @@ -0,0 +1,117 @@ +/** + * <copyright> + * + * Copyright (c) 2005, 2006, 2007, 2008 Springsite BV (The Netherlands) and others + * 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: + * Martin Taal + * </copyright> + * + * $Id: AnyAction.java,v 1.2 2009/06/30 05:30:52 mtaal Exp $ + */ + +package org.eclipse.emf.teneo.hibernate.test.emf.jpa2; + +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.util.FeatureMap; +import org.eclipse.emf.ecore.util.FeatureMapUtil; +import org.eclipse.emf.teneo.samples.emf.annotations.any.AnyFactory; +import org.eclipse.emf.teneo.samples.emf.annotations.any.AnyObject; +import org.eclipse.emf.teneo.samples.emf.annotations.any.AnyPackage; +import org.eclipse.emf.teneo.samples.emf.annotations.any.GlobalObjectType; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalFactory; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage; +import org.eclipse.emf.teneo.test.AbstractTestAction; +import org.eclipse.emf.teneo.test.stores.TestStore; + +/** + * Tests new orhanremoval annotation for jpa2. + * + * @author <a href="mailto:mtaal@elver.org">Martin Taal</a> + * @version $Revision: 1.2 $ + */ +public class OrphanRemovalAction extends AbstractTestAction { + private final OrphanremovalFactory factory = OrphanremovalFactory.eINSTANCE; + + public OrphanRemovalAction() { + super(OrphanremovalPackage.eINSTANCE); + } + + @Override + public void doAction(TestStore store) { + final String name1 = "name1"; + final String name2 = "name2"; + store.beginTransaction(); + { + final Employee employee = factory.createEmployee(); + final EmployeeInfo info = factory.createEmployeeInfo(); + employee.setEmployeeInfo(info); + info.setName(name1); + for (int i = 0; i < 4; i++) { + final Address address = factory.createAddress(); + address.setName(i + ""); + employee.getAddresses().add(address); + } + store.store(employee); + } + store.commitTransaction(); + + store.checkNumber(Employee.class, 1); + store.checkNumber(EmployeeInfo.class, 1); + store.checkNumber(Address.class, 4); + + store.beginTransaction(); + { + final Employee employee = store.getObject(Employee.class); + + final EmployeeInfo info = factory.createEmployeeInfo(); + info.setName(name2); + + // https://hibernate.onjira.com/browse/HHH-5559 + // https://hibernate.onjira.com/browse/HHH-6484 + // first do this: + employee.setEmployeeInfo(null); + store.flush(); + // before doing this: + employee.setEmployeeInfo(info); + + employee.getAddresses().remove(1); + + store.flush(); + } + store.commitTransaction(); + + // only 3 remaining + store.checkNumber(Address.class, 3); + + // still one + store.checkNumber(EmployeeInfo.class, 1); + + store.beginTransaction(); + { + final EmployeeInfo info = store.getObject(EmployeeInfo.class); + assertEquals(name2, info.getName()); + } + store.commitTransaction(); + + // delete the parent, everything should be gone now... + store.beginTransaction(); + { + final Employee employee = store.getObject(Employee.class); + store.deleteObject(employee); + } + store.commitTransaction(); + + store.checkNumber(Employee.class, 0); + store.checkNumber(Address.class, 0); + store.checkNumber(EmployeeInfo.class, 0); + + } +}
\ No newline at end of file diff --git a/tests/org.eclipse.emf.teneo.samples/META-INF/MANIFEST.MF b/tests/org.eclipse.emf.teneo.samples/META-INF/MANIFEST.MF index aa08350f0..3c70ce76d 100755 --- a/tests/org.eclipse.emf.teneo.samples/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.emf.teneo.samples/META-INF/MANIFEST.MF @@ -757,6 +757,9 @@ Export-Package: com.example.car;uses:="org.eclipse.emf.common.util,org.eclipse.e org.eclipse.emf.ecore, org.eclipse.emf.ecore.resource", org.eclipse.emf.teneo.samples.emf.elist.featuremap.validation;uses:="org.eclipse.emf.common.util,org.eclipse.emf.teneo.samples.emf.elist.featuremap,org.eclipse.emf.ecore.util", + org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval, + org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl, + org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.util, org.eclipse.emf.teneo.samples.emf.relation.relation1to1;uses:="org.eclipse.emf.ecore", org.eclipse.emf.teneo.samples.emf.relation.relation1to1.impl; uses:="org.eclipse.emf.ecore.impl, diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/Address.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/Address.java new file mode 100644 index 000000000..480597527 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/Address.java @@ -0,0 +1,54 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Address</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * <ul> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address#getName <em>Name</em>}</li> + * </ul> + * </p> + * + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#getAddress() + * @model + * @generated + */ +public interface Address extends EObject { + + /** + * Returns the value of the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Name</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Name</em>' attribute. + * @see #setName(String) + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#getAddress_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address#getName <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Name</em>' attribute. + * @see #getName() + * @generated + */ + void setName(String value); +} // Address diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/Employee.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/Employee.java new file mode 100644 index 000000000..4c4102829 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/Employee.java @@ -0,0 +1,103 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Employee</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * <ul> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getId <em>Id</em>}</li> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getEmployeeInfo <em>Employee Info</em>}</li> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getAddresses <em>Addresses</em>}</li> + * </ul> + * </p> + * + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#getEmployee() + * @model + * @generated + */ +public interface Employee extends EObject { + /** + * Returns the value of the '<em><b>Id</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Id</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Id</em>' attribute. + * @see #setId(long) + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#getEmployee_Id() + * @model annotation="teneo.jpa value='@Id'" + * @generated + */ + long getId(); + + /** + * Sets the value of the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getId <em>Id</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Id</em>' attribute. + * @see #getId() + * @generated + */ + void setId(long value); + + /** + * Returns the value of the '<em><b>Employee Info</b></em>' reference. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getEmployee <em>Employee</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Employee Info</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Employee Info</em>' reference. + * @see #setEmployeeInfo(EmployeeInfo) + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#getEmployee_EmployeeInfo() + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getEmployee + * @model opposite="employee" + * annotation="teneo.jpa value='@OneToOne(cascade={CascadeType.PERSIST, CascadeType.REMOVE}, orphanRemoval=true)'" + * @generated + */ + EmployeeInfo getEmployeeInfo(); + + /** + * Sets the value of the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getEmployeeInfo <em>Employee Info</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Employee Info</em>' reference. + * @see #getEmployeeInfo() + * @generated + */ + void setEmployeeInfo(EmployeeInfo value); + + /** + * Returns the value of the '<em><b>Addresses</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Addresses</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Addresses</em>' reference list. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#getEmployee_Addresses() + * @model annotation="teneo.jpa value='@OneToMany(orphanRemoval=true)'" + * @generated + */ + EList<Address> getAddresses(); + +} // Employee diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/EmployeeInfo.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/EmployeeInfo.java new file mode 100644 index 000000000..70bd2c645 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/EmployeeInfo.java @@ -0,0 +1,110 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval; + +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Employee Info</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * <ul> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getId <em>Id</em>}</li> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getName <em>Name</em>}</li> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getEmployee <em>Employee</em>}</li> + * </ul> + * </p> + * + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#getEmployeeInfo() + * @model + * @generated + */ +public interface EmployeeInfo extends EObject { + /** + * Returns the value of the '<em><b>Id</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Id</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Id</em>' attribute. + * @see #setId(long) + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#getEmployeeInfo_Id() + * @model annotation="teneo.jpa value='@Id\n@GeneratedValue'" + * @generated + */ + long getId(); + + /** + * Sets the value of the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getId <em>Id</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Id</em>' attribute. + * @see #getId() + * @generated + */ + void setId(long value); + + /** + * Returns the value of the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Name</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Name</em>' attribute. + * @see #setName(String) + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#getEmployeeInfo_Name() + * @model + * @generated + */ + String getName(); + + /** + * Sets the value of the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getName <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Name</em>' attribute. + * @see #getName() + * @generated + */ + void setName(String value); + + /** + * Returns the value of the '<em><b>Employee</b></em>' reference. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getEmployeeInfo <em>Employee Info</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Employee</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Employee</em>' reference. + * @see #setEmployee(Employee) + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#getEmployeeInfo_Employee() + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getEmployeeInfo + * @model opposite="employeeInfo" + * @generated + */ + Employee getEmployee(); + + /** + * Sets the value of the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getEmployee <em>Employee</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Employee</em>' reference. + * @see #getEmployee() + * @generated + */ + void setEmployee(Employee value); + +} // EmployeeInfo diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/OrphanremovalFactory.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/OrphanremovalFactory.java new file mode 100644 index 000000000..6b4917421 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/OrphanremovalFactory.java @@ -0,0 +1,64 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval; + +import org.eclipse.emf.ecore.EFactory; + +/** + * <!-- begin-user-doc --> + * The <b>Factory</b> for the model. + * It provides a create method for each non-abstract class of the model. + * <!-- end-user-doc --> + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage + * @generated + */ +public interface OrphanremovalFactory extends EFactory { + /** + * The singleton instance of the factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + OrphanremovalFactory eINSTANCE = org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.OrphanremovalFactoryImpl.init(); + + /** + * Returns a new object of class '<em>Employee</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Employee</em>'. + * @generated + */ + Employee createEmployee(); + + /** + * Returns a new object of class '<em>Employee Info</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Employee Info</em>'. + * @generated + */ + EmployeeInfo createEmployeeInfo(); + + /** + * Returns a new object of class '<em>Address</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Address</em>'. + * @generated + */ + Address createAddress(); + + /** + * Returns the package supported by this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the package supported by this factory. + * @generated + */ + OrphanremovalPackage getOrphanremovalPackage(); + +} //OrphanremovalFactory diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/OrphanremovalPackage.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/OrphanremovalPackage.java new file mode 100644 index 000000000..b790cf39c --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/OrphanremovalPackage.java @@ -0,0 +1,400 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * <!-- begin-user-doc --> + * The <b>Package</b> for the model. + * It contains accessors for the meta objects to represent + * <ul> + * <li>each class,</li> + * <li>each feature of each class,</li> + * <li>each enum,</li> + * <li>and each data type</li> + * </ul> + * <!-- end-user-doc --> + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalFactory + * @model kind="package" + * @generated + */ +public interface OrphanremovalPackage extends EPackage { + /** + * The package name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNAME = "orphanremoval"; + + /** + * The package namespace URI. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNS_URI = "http://www.eclipse.org/emf/teneo/samples/emf/jpa2/orphanremoval"; + + /** + * The package namespace name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNS_PREFIX = "orphanremoval"; + + /** + * The singleton instance of the package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + OrphanremovalPackage eINSTANCE = org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.OrphanremovalPackageImpl.init(); + + /** + * The meta object id for the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeImpl <em>Employee</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeImpl + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.OrphanremovalPackageImpl#getEmployee() + * @generated + */ + int EMPLOYEE = 0; + + /** + * The feature id for the '<em><b>Id</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EMPLOYEE__ID = 0; + + /** + * The feature id for the '<em><b>Employee Info</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EMPLOYEE__EMPLOYEE_INFO = 1; + + /** + * The feature id for the '<em><b>Addresses</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EMPLOYEE__ADDRESSES = 2; + + /** + * The number of structural features of the '<em>Employee</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EMPLOYEE_FEATURE_COUNT = 3; + + /** + * The meta object id for the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeInfoImpl <em>Employee Info</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeInfoImpl + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.OrphanremovalPackageImpl#getEmployeeInfo() + * @generated + */ + int EMPLOYEE_INFO = 1; + + /** + * The feature id for the '<em><b>Id</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EMPLOYEE_INFO__ID = 0; + + /** + * The feature id for the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EMPLOYEE_INFO__NAME = 1; + + /** + * The feature id for the '<em><b>Employee</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EMPLOYEE_INFO__EMPLOYEE = 2; + + /** + * The number of structural features of the '<em>Employee Info</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EMPLOYEE_INFO_FEATURE_COUNT = 3; + + /** + * The meta object id for the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.AddressImpl <em>Address</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.AddressImpl + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.OrphanremovalPackageImpl#getAddress() + * @generated + */ + int ADDRESS = 2; + + /** + * The feature id for the '<em><b>Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ADDRESS__NAME = 0; + + /** + * The number of structural features of the '<em>Address</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ADDRESS_FEATURE_COUNT = 1; + + + /** + * Returns the meta object for class '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee <em>Employee</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Employee</em>'. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee + * @generated + */ + EClass getEmployee(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getId <em>Id</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Id</em>'. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getId() + * @see #getEmployee() + * @generated + */ + EAttribute getEmployee_Id(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getEmployeeInfo <em>Employee Info</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Employee Info</em>'. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getEmployeeInfo() + * @see #getEmployee() + * @generated + */ + EReference getEmployee_EmployeeInfo(); + + /** + * Returns the meta object for the reference list '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getAddresses <em>Addresses</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference list '<em>Addresses</em>'. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee#getAddresses() + * @see #getEmployee() + * @generated + */ + EReference getEmployee_Addresses(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo <em>Employee Info</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Employee Info</em>'. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo + * @generated + */ + EClass getEmployeeInfo(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getId <em>Id</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Id</em>'. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getId() + * @see #getEmployeeInfo() + * @generated + */ + EAttribute getEmployeeInfo_Id(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getName <em>Name</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Name</em>'. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getName() + * @see #getEmployeeInfo() + * @generated + */ + EAttribute getEmployeeInfo_Name(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getEmployee <em>Employee</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Employee</em>'. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo#getEmployee() + * @see #getEmployeeInfo() + * @generated + */ + EReference getEmployeeInfo_Employee(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address <em>Address</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Address</em>'. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address + * @generated + */ + EClass getAddress(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address#getName <em>Name</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Name</em>'. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address#getName() + * @see #getAddress() + * @generated + */ + EAttribute getAddress_Name(); + + /** + * Returns the factory that creates the instances of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the factory that creates the instances of the model. + * @generated + */ + OrphanremovalFactory getOrphanremovalFactory(); + + /** + * <!-- begin-user-doc --> + * Defines literals for the meta objects that represent + * <ul> + * <li>each class,</li> + * <li>each feature of each class,</li> + * <li>each enum,</li> + * <li>and each data type</li> + * </ul> + * <!-- end-user-doc --> + * @generated + */ + interface Literals { + /** + * The meta object literal for the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeImpl <em>Employee</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeImpl + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.OrphanremovalPackageImpl#getEmployee() + * @generated + */ + EClass EMPLOYEE = eINSTANCE.getEmployee(); + + /** + * The meta object literal for the '<em><b>Id</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute EMPLOYEE__ID = eINSTANCE.getEmployee_Id(); + + /** + * The meta object literal for the '<em><b>Employee Info</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EMPLOYEE__EMPLOYEE_INFO = eINSTANCE.getEmployee_EmployeeInfo(); + + /** + * The meta object literal for the '<em><b>Addresses</b></em>' reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EMPLOYEE__ADDRESSES = eINSTANCE.getEmployee_Addresses(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeInfoImpl <em>Employee Info</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeInfoImpl + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.OrphanremovalPackageImpl#getEmployeeInfo() + * @generated + */ + EClass EMPLOYEE_INFO = eINSTANCE.getEmployeeInfo(); + + /** + * The meta object literal for the '<em><b>Id</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute EMPLOYEE_INFO__ID = eINSTANCE.getEmployeeInfo_Id(); + + /** + * The meta object literal for the '<em><b>Name</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute EMPLOYEE_INFO__NAME = eINSTANCE.getEmployeeInfo_Name(); + + /** + * The meta object literal for the '<em><b>Employee</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EMPLOYEE_INFO__EMPLOYEE = eINSTANCE.getEmployeeInfo_Employee(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.AddressImpl <em>Address</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.AddressImpl + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.OrphanremovalPackageImpl#getAddress() + * @generated + */ + EClass ADDRESS = eINSTANCE.getAddress(); + + /** + * The meta object literal for the '<em><b>Name</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute ADDRESS__NAME = eINSTANCE.getAddress_Name(); + + } + +} //OrphanremovalPackage diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/AddressImpl.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/AddressImpl.java new file mode 100644 index 000000000..03362724b --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/AddressImpl.java @@ -0,0 +1,165 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.EObjectImpl; + +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Address</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * <ul> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.AddressImpl#getName <em>Name</em>}</li> + * </ul> + * </p> + * + * @generated + */ +public class AddressImpl extends EObjectImpl implements Address { + /** + * The default value of the '{@link #getName() <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + /** + * The cached value of the '{@link #getName() <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AddressImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrphanremovalPackage.Literals.ADDRESS; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getName() { + return name; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setName(String newName) { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, OrphanremovalPackage.ADDRESS__NAME, oldName, name)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case OrphanremovalPackage.ADDRESS__NAME: + return getName(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case OrphanremovalPackage.ADDRESS__NAME: + setName((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case OrphanremovalPackage.ADDRESS__NAME: + setName(NAME_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case OrphanremovalPackage.ADDRESS__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (name: "); + result.append(name); + result.append(')'); + return result.toString(); + } + +} //AddressImpl diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/EmployeeImpl.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/EmployeeImpl.java new file mode 100644 index 000000000..e2bb01728 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/EmployeeImpl.java @@ -0,0 +1,324 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.EObjectImpl; + +import org.eclipse.emf.ecore.util.EObjectResolvingEList; + +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Employee</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * <ul> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeImpl#getId <em>Id</em>}</li> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeImpl#getEmployeeInfo <em>Employee Info</em>}</li> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeImpl#getAddresses <em>Addresses</em>}</li> + * </ul> + * </p> + * + * @generated + */ +public class EmployeeImpl extends EObjectImpl implements Employee { + /** + * The default value of the '{@link #getId() <em>Id</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getId() + * @generated + * @ordered + */ + protected static final long ID_EDEFAULT = 0L; + + /** + * The cached value of the '{@link #getId() <em>Id</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getId() + * @generated + * @ordered + */ + protected long id = ID_EDEFAULT; + + /** + * The cached value of the '{@link #getEmployeeInfo() <em>Employee Info</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getEmployeeInfo() + * @generated + * @ordered + */ + protected EmployeeInfo employeeInfo; + + /** + * The cached value of the '{@link #getAddresses() <em>Addresses</em>}' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getAddresses() + * @generated + * @ordered + */ + protected EList<Address> addresses; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EmployeeImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrphanremovalPackage.Literals.EMPLOYEE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public long getId() { + return id; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setId(long newId) { + long oldId = id; + id = newId; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, OrphanremovalPackage.EMPLOYEE__ID, oldId, id)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EmployeeInfo getEmployeeInfo() { + if (employeeInfo != null && employeeInfo.eIsProxy()) { + InternalEObject oldEmployeeInfo = (InternalEObject)employeeInfo; + employeeInfo = (EmployeeInfo)eResolveProxy(oldEmployeeInfo); + if (employeeInfo != oldEmployeeInfo) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO, oldEmployeeInfo, employeeInfo)); + } + } + return employeeInfo; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EmployeeInfo basicGetEmployeeInfo() { + return employeeInfo; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetEmployeeInfo(EmployeeInfo newEmployeeInfo, NotificationChain msgs) { + EmployeeInfo oldEmployeeInfo = employeeInfo; + employeeInfo = newEmployeeInfo; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO, oldEmployeeInfo, newEmployeeInfo); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setEmployeeInfo(EmployeeInfo newEmployeeInfo) { + if (newEmployeeInfo != employeeInfo) { + NotificationChain msgs = null; + if (employeeInfo != null) + msgs = ((InternalEObject)employeeInfo).eInverseRemove(this, OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE, EmployeeInfo.class, msgs); + if (newEmployeeInfo != null) + msgs = ((InternalEObject)newEmployeeInfo).eInverseAdd(this, OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE, EmployeeInfo.class, msgs); + msgs = basicSetEmployeeInfo(newEmployeeInfo, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO, newEmployeeInfo, newEmployeeInfo)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EList<Address> getAddresses() { + if (addresses == null) { + addresses = new EObjectResolvingEList<Address>(Address.class, this, OrphanremovalPackage.EMPLOYEE__ADDRESSES); + } + return addresses; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO: + if (employeeInfo != null) + msgs = ((InternalEObject)employeeInfo).eInverseRemove(this, OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE, EmployeeInfo.class, msgs); + return basicSetEmployeeInfo((EmployeeInfo)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO: + return basicSetEmployeeInfo(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE__ID: + return getId(); + case OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO: + if (resolve) return getEmployeeInfo(); + return basicGetEmployeeInfo(); + case OrphanremovalPackage.EMPLOYEE__ADDRESSES: + return getAddresses(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE__ID: + setId((Long)newValue); + return; + case OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO: + setEmployeeInfo((EmployeeInfo)newValue); + return; + case OrphanremovalPackage.EMPLOYEE__ADDRESSES: + getAddresses().clear(); + getAddresses().addAll((Collection<? extends Address>)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE__ID: + setId(ID_EDEFAULT); + return; + case OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO: + setEmployeeInfo((EmployeeInfo)null); + return; + case OrphanremovalPackage.EMPLOYEE__ADDRESSES: + getAddresses().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE__ID: + return id != ID_EDEFAULT; + case OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO: + return employeeInfo != null; + case OrphanremovalPackage.EMPLOYEE__ADDRESSES: + return addresses != null && !addresses.isEmpty(); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (id: "); + result.append(id); + result.append(')'); + return result.toString(); + } + +} //EmployeeImpl diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/EmployeeInfoImpl.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/EmployeeInfoImpl.java new file mode 100644 index 000000000..8229123d3 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/EmployeeInfoImpl.java @@ -0,0 +1,336 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.impl.EObjectImpl; + +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Employee Info</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * <ul> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeInfoImpl#getId <em>Id</em>}</li> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeInfoImpl#getName <em>Name</em>}</li> + * <li>{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl.EmployeeInfoImpl#getEmployee <em>Employee</em>}</li> + * </ul> + * </p> + * + * @generated + */ +public class EmployeeInfoImpl extends EObjectImpl implements EmployeeInfo { + /** + * The default value of the '{@link #getId() <em>Id</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getId() + * @generated + * @ordered + */ + protected static final long ID_EDEFAULT = 0L; + + /** + * The cached value of the '{@link #getId() <em>Id</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getId() + * @generated + * @ordered + */ + protected long id = ID_EDEFAULT; + + /** + * The default value of the '{@link #getName() <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getName() + * @generated + * @ordered + */ + protected static final String NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getName() <em>Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getName() + * @generated + * @ordered + */ + protected String name = NAME_EDEFAULT; + + /** + * The cached value of the '{@link #getEmployee() <em>Employee</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getEmployee() + * @generated + * @ordered + */ + protected Employee employee; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EmployeeInfoImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return OrphanremovalPackage.Literals.EMPLOYEE_INFO; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public long getId() { + return id; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setId(long newId) { + long oldId = id; + id = newId; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, OrphanremovalPackage.EMPLOYEE_INFO__ID, oldId, id)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getName() { + return name; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setName(String newName) { + String oldName = name; + name = newName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, OrphanremovalPackage.EMPLOYEE_INFO__NAME, oldName, name)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Employee getEmployee() { + if (employee != null && employee.eIsProxy()) { + InternalEObject oldEmployee = (InternalEObject)employee; + employee = (Employee)eResolveProxy(oldEmployee); + if (employee != oldEmployee) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE, oldEmployee, employee)); + } + } + return employee; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Employee basicGetEmployee() { + return employee; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetEmployee(Employee newEmployee, NotificationChain msgs) { + Employee oldEmployee = employee; + employee = newEmployee; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE, oldEmployee, newEmployee); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setEmployee(Employee newEmployee) { + if (newEmployee != employee) { + NotificationChain msgs = null; + if (employee != null) + msgs = ((InternalEObject)employee).eInverseRemove(this, OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO, Employee.class, msgs); + if (newEmployee != null) + msgs = ((InternalEObject)newEmployee).eInverseAdd(this, OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO, Employee.class, msgs); + msgs = basicSetEmployee(newEmployee, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE, newEmployee, newEmployee)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE: + if (employee != null) + msgs = ((InternalEObject)employee).eInverseRemove(this, OrphanremovalPackage.EMPLOYEE__EMPLOYEE_INFO, Employee.class, msgs); + return basicSetEmployee((Employee)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE: + return basicSetEmployee(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE_INFO__ID: + return getId(); + case OrphanremovalPackage.EMPLOYEE_INFO__NAME: + return getName(); + case OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE: + if (resolve) return getEmployee(); + return basicGetEmployee(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE_INFO__ID: + setId((Long)newValue); + return; + case OrphanremovalPackage.EMPLOYEE_INFO__NAME: + setName((String)newValue); + return; + case OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE: + setEmployee((Employee)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE_INFO__ID: + setId(ID_EDEFAULT); + return; + case OrphanremovalPackage.EMPLOYEE_INFO__NAME: + setName(NAME_EDEFAULT); + return; + case OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE: + setEmployee((Employee)null); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case OrphanremovalPackage.EMPLOYEE_INFO__ID: + return id != ID_EDEFAULT; + case OrphanremovalPackage.EMPLOYEE_INFO__NAME: + return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); + case OrphanremovalPackage.EMPLOYEE_INFO__EMPLOYEE: + return employee != null; + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (id: "); + result.append(id); + result.append(", name: "); + result.append(name); + result.append(')'); + return result.toString(); + } + +} //EmployeeInfoImpl diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/OrphanremovalFactoryImpl.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/OrphanremovalFactoryImpl.java new file mode 100644 index 000000000..aed4a4f5f --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/OrphanremovalFactoryImpl.java @@ -0,0 +1,121 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.impl.EFactoryImpl; + +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.*; + +/** + * <!-- begin-user-doc --> + * An implementation of the model <b>Factory</b>. + * <!-- end-user-doc --> + * @generated + */ +public class OrphanremovalFactoryImpl extends EFactoryImpl implements OrphanremovalFactory { + /** + * Creates the default factory implementation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static OrphanremovalFactory init() { + try { + OrphanremovalFactory theOrphanremovalFactory = (OrphanremovalFactory)EPackage.Registry.INSTANCE.getEFactory("http://www.eclipse.org/emf/teneo/samples/emf/jpa2/orphanremoval"); + if (theOrphanremovalFactory != null) { + return theOrphanremovalFactory; + } + } + catch (Exception exception) { + EcorePlugin.INSTANCE.log(exception); + } + return new OrphanremovalFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public OrphanremovalFactoryImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public EObject create(EClass eClass) { + switch (eClass.getClassifierID()) { + case OrphanremovalPackage.EMPLOYEE: return createEmployee(); + case OrphanremovalPackage.EMPLOYEE_INFO: return createEmployeeInfo(); + case OrphanremovalPackage.ADDRESS: return createAddress(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Employee createEmployee() { + EmployeeImpl employee = new EmployeeImpl(); + return employee; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EmployeeInfo createEmployeeInfo() { + EmployeeInfoImpl employeeInfo = new EmployeeInfoImpl(); + return employeeInfo; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Address createAddress() { + AddressImpl address = new AddressImpl(); + return address; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public OrphanremovalPackage getOrphanremovalPackage() { + return (OrphanremovalPackage)getEPackage(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @deprecated + * @generated + */ + @Deprecated + public static OrphanremovalPackage getPackage() { + return OrphanremovalPackage.eINSTANCE; + } + +} //OrphanremovalFactoryImpl diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/OrphanremovalPackageImpl.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/OrphanremovalPackageImpl.java new file mode 100644 index 000000000..f9b50fc2d --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/impl/OrphanremovalPackageImpl.java @@ -0,0 +1,328 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.impl; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +import org.eclipse.emf.ecore.impl.EPackageImpl; + +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalFactory; +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage; + +/** + * <!-- begin-user-doc --> + * An implementation of the model <b>Package</b>. + * <!-- end-user-doc --> + * @generated + */ +public class OrphanremovalPackageImpl extends EPackageImpl implements OrphanremovalPackage { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass employeeEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass employeeInfoEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass addressEClass = null; + + /** + * Creates an instance of the model <b>Package</b>, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + * <p>Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage#eNS_URI + * @see #init() + * @generated + */ + private OrphanremovalPackageImpl() { + super(eNS_URI, OrphanremovalFactory.eINSTANCE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends. + * + * <p>This method is used to initialize {@link OrphanremovalPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static OrphanremovalPackage init() { + if (isInited) return (OrphanremovalPackage)EPackage.Registry.INSTANCE.getEPackage(OrphanremovalPackage.eNS_URI); + + // Obtain or create and register package + OrphanremovalPackageImpl theOrphanremovalPackage = (OrphanremovalPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof OrphanremovalPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new OrphanremovalPackageImpl()); + + isInited = true; + + // Create package meta-data objects + theOrphanremovalPackage.createPackageContents(); + + // Initialize created meta-data + theOrphanremovalPackage.initializePackageContents(); + + // Mark meta-data to indicate it can't be changed + theOrphanremovalPackage.freeze(); + + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(OrphanremovalPackage.eNS_URI, theOrphanremovalPackage); + return theOrphanremovalPackage; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getEmployee() { + return employeeEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getEmployee_Id() { + return (EAttribute)employeeEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getEmployee_EmployeeInfo() { + return (EReference)employeeEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getEmployee_Addresses() { + return (EReference)employeeEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getEmployeeInfo() { + return employeeInfoEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getEmployeeInfo_Id() { + return (EAttribute)employeeInfoEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getEmployeeInfo_Name() { + return (EAttribute)employeeInfoEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getEmployeeInfo_Employee() { + return (EReference)employeeInfoEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getAddress() { + return addressEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getAddress_Name() { + return (EAttribute)addressEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public OrphanremovalFactory getOrphanremovalFactory() { + return (OrphanremovalFactory)getEFactoryInstance(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createPackageContents() { + if (isCreated) return; + isCreated = true; + + // Create classes and their features + employeeEClass = createEClass(EMPLOYEE); + createEAttribute(employeeEClass, EMPLOYEE__ID); + createEReference(employeeEClass, EMPLOYEE__EMPLOYEE_INFO); + createEReference(employeeEClass, EMPLOYEE__ADDRESSES); + + employeeInfoEClass = createEClass(EMPLOYEE_INFO); + createEAttribute(employeeInfoEClass, EMPLOYEE_INFO__ID); + createEAttribute(employeeInfoEClass, EMPLOYEE_INFO__NAME); + createEReference(employeeInfoEClass, EMPLOYEE_INFO__EMPLOYEE); + + addressEClass = createEClass(ADDRESS); + createEAttribute(addressEClass, ADDRESS__NAME); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void initializePackageContents() { + if (isInitialized) return; + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + + // Initialize classes and features; add operations and parameters + initEClass(employeeEClass, Employee.class, "Employee", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getEmployee_Id(), ecorePackage.getELong(), "id", null, 0, 1, Employee.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getEmployee_EmployeeInfo(), this.getEmployeeInfo(), this.getEmployeeInfo_Employee(), "employeeInfo", null, 0, 1, Employee.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getEmployee_Addresses(), this.getAddress(), null, "addresses", null, 0, -1, Employee.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(employeeInfoEClass, EmployeeInfo.class, "EmployeeInfo", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getEmployeeInfo_Id(), ecorePackage.getELong(), "id", null, 0, 1, EmployeeInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getEmployeeInfo_Name(), ecorePackage.getEString(), "name", null, 0, 1, EmployeeInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getEmployeeInfo_Employee(), this.getEmployee(), this.getEmployee_EmployeeInfo(), "employee", null, 0, 1, EmployeeInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(addressEClass, Address.class, "Address", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getAddress_Name(), ecorePackage.getEString(), "name", null, 0, 1, Address.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + // Create resource + createResource(eNS_URI); + + // Create annotations + // teneo.jpa + createTeneoAnnotations(); + } + + /** + * Initializes the annotations for <b>teneo.jpa</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createTeneoAnnotations() { + String source = "teneo.jpa"; + addAnnotation + (getEmployee_Id(), + source, + new String[] { + "value", "@Id" + }); + addAnnotation + (getEmployee_EmployeeInfo(), + source, + new String[] { + "value", "@OneToOne(cascade={CascadeType.PERSIST, CascadeType.REMOVE}, orphanRemoval=true)" + }); + addAnnotation + (getEmployee_Addresses(), + source, + new String[] { + "value", "@OneToMany(orphanRemoval=true)" + }); + addAnnotation + (getEmployeeInfo_Id(), + source, + new String[] { + "value", "@Id\n@GeneratedValue" + }); + } + +} //OrphanremovalPackageImpl diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/model/orphanremoval.ecore b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/model/orphanremoval.ecore new file mode 100755 index 000000000..2732b8d4a --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/model/orphanremoval.ecore @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="orphanremoval" + nsURI="http://www.eclipse.org/emf/teneo/samples/emf/jpa2/orphanremoval" nsPrefix="orphanremoval"> + <eClassifiers xsi:type="ecore:EClass" name="Employee"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"> + <eAnnotations source="teneo.jpa"> + <details key="value" value="@Id"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="employeeInfo" eType="#//EmployeeInfo" + eOpposite="#//EmployeeInfo/employee"> + <eAnnotations source="teneo.jpa"> + <details key="value" value="@OneToOne(cascade={CascadeType.PERSIST, CascadeType.REMOVE}, orphanRemoval=true)"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="addresses" upperBound="-1" + eType="#//Address"> + <eAnnotations source="teneo.jpa"> + <details key="value" value="@OneToMany(orphanRemoval=true)"/> + </eAnnotations> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="EmployeeInfo"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"> + <eAnnotations source="teneo.jpa"> + <details key="value" value="@Id
@GeneratedValue"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="employee" eType="#//Employee" + eOpposite="#//Employee/employeeInfo"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Address"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + </eClassifiers> +</ecore:EPackage> diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/model/orphanremoval.genmodel b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/model/orphanremoval.genmodel new file mode 100644 index 000000000..19088db90 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/model/orphanremoval.genmodel @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<genmodel:GenModel xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" + xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.emf.teneo.samples/src" + modelPluginID="org.eclipse.emf.teneo.samples" modelName="Orphanremoval" importerID="org.eclipse.emf.importer.ecore" + complianceLevel="5.0" copyrightFields="false"> + <foreignModel>orphanremoval.ecore</foreignModel> + <genPackages prefix="Orphanremoval" basePackage="org.eclipse.emf.teneo.samples.emf.jpa2" + disposableProviderFactory="true" ecorePackage="orphanremoval.ecore#/"> + <genClasses ecoreClass="orphanremoval.ecore#//Employee"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orphanremoval.ecore#//Employee/id"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orphanremoval.ecore#//Employee/employeeInfo"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orphanremoval.ecore#//Employee/addresses"/> + </genClasses> + <genClasses ecoreClass="orphanremoval.ecore#//EmployeeInfo"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orphanremoval.ecore#//EmployeeInfo/id"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orphanremoval.ecore#//EmployeeInfo/name"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference orphanremoval.ecore#//EmployeeInfo/employee"/> + </genClasses> + <genClasses ecoreClass="orphanremoval.ecore#//Address"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute orphanremoval.ecore#//Address/name"/> + </genClasses> + </genPackages> +</genmodel:GenModel> diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/util/OrphanremovalAdapterFactory.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/util/OrphanremovalAdapterFactory.java new file mode 100644 index 000000000..da8a0de15 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/util/OrphanremovalAdapterFactory.java @@ -0,0 +1,160 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.util; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; + +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.*; + +/** + * <!-- begin-user-doc --> + * The <b>Adapter Factory</b> for the model. + * It provides an adapter <code>createXXX</code> method for each class of the model. + * <!-- end-user-doc --> + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage + * @generated + */ +public class OrphanremovalAdapterFactory extends AdapterFactoryImpl { + /** + * The cached model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected static OrphanremovalPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public OrphanremovalAdapterFactory() { + if (modelPackage == null) { + modelPackage = OrphanremovalPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * <!-- begin-user-doc --> + * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model. + * <!-- end-user-doc --> + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) { + if (object == modelPackage) { + return true; + } + if (object instanceof EObject) { + return ((EObject)object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the <code>createXXX</code> methods. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected OrphanremovalSwitch<Adapter> modelSwitch = + new OrphanremovalSwitch<Adapter>() { + @Override + public Adapter caseEmployee(Employee object) { + return createEmployeeAdapter(); + } + @Override + public Adapter caseEmployeeInfo(EmployeeInfo object) { + return createEmployeeInfoAdapter(); + } + @Override + public Adapter caseAddress(Address object) { + return createAddressAdapter(); + } + @Override + public Adapter defaultCase(EObject object) { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the <code>target</code>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param target the object to adapt. + * @return the adapter for the <code>target</code>. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) { + return modelSwitch.doSwitch((EObject)target); + } + + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee <em>Employee</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Employee + * @generated + */ + public Adapter createEmployeeAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo <em>Employee Info</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.EmployeeInfo + * @generated + */ + public Adapter createEmployeeInfoAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address <em>Address</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.Address + * @generated + */ + public Adapter createAddressAdapter() { + return null; + } + + /** + * Creates a new adapter for the default case. + * <!-- begin-user-doc --> + * This default implementation returns null. + * <!-- end-user-doc --> + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() { + return null; + } + +} //OrphanremovalAdapterFactory diff --git a/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/util/OrphanremovalSwitch.java b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/util/OrphanremovalSwitch.java new file mode 100644 index 000000000..09724ced1 --- /dev/null +++ b/tests/org.eclipse.emf.teneo.samples/src/org/eclipse/emf/teneo/samples/emf/jpa2/orphanremoval/util/OrphanremovalSwitch.java @@ -0,0 +1,156 @@ +/** + * <copyright> + * </copyright> + * + * $Id$ + */ +package org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.util; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; + +import org.eclipse.emf.ecore.util.Switch; + +import org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.*; + +/** + * <!-- begin-user-doc --> + * The <b>Switch</b> for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the <code>caseXXX</code> method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * <!-- end-user-doc --> + * @see org.eclipse.emf.teneo.samples.emf.jpa2.orphanremoval.OrphanremovalPackage + * @generated + */ +public class OrphanremovalSwitch<T> extends Switch<T> { + /** + * The cached model package + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected static OrphanremovalPackage modelPackage; + + /** + * Creates an instance of the switch. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public OrphanremovalSwitch() { + if (modelPackage == null) { + modelPackage = OrphanremovalPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @parameter ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) { + return ePackage == modelPackage; + } + + /** + * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the first non-null result returned by a <code>caseXXX</code> call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) { + switch (classifierID) { + case OrphanremovalPackage.EMPLOYEE: { + Employee employee = (Employee)theEObject; + T result = caseEmployee(employee); + if (result == null) result = defaultCase(theEObject); + return result; + } + case OrphanremovalPackage.EMPLOYEE_INFO: { + EmployeeInfo employeeInfo = (EmployeeInfo)theEObject; + T result = caseEmployeeInfo(employeeInfo); + if (result == null) result = defaultCase(theEObject); + return result; + } + case OrphanremovalPackage.ADDRESS: { + Address address = (Address)theEObject; + T result = caseAddress(address); + if (result == null) result = defaultCase(theEObject); + return result; + } + default: return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Employee</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Employee</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseEmployee(Employee object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Employee Info</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Employee Info</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseEmployeeInfo(EmployeeInfo object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Address</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Address</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseAddress(Address object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>EObject</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) { + return null; + } + +} //OrphanremovalSwitch |