diff options
author | Martin Taal | 2008-07-15 14:22:15 +0000 |
---|---|---|
committer | Martin Taal | 2008-07-15 14:22:15 +0000 |
commit | dd9cedec1d3f597efdd210aa649f058178a45061 (patch) | |
tree | 66eccfc65fc6ddaad255e7994d064423df5d78fe | |
parent | 2f0d5a80531becb64eb0d8eeefc5bbf535b970a6 (diff) | |
download | cdo-dd9cedec1d3f597efdd210aa649f058178a45061.tar.gz cdo-dd9cedec1d3f597efdd210aa649f058178a45061.tar.xz cdo-dd9cedec1d3f597efdd210aa649f058178a45061.zip |
Updated api definition
17 files changed, 928 insertions, 101 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate.teneo/src/org/eclipse/emf/cdo/server/hibernate/teneo/TeneoHibernateMappingProvider.java b/plugins/org.eclipse.emf.cdo.server.hibernate.teneo/src/org/eclipse/emf/cdo/server/hibernate/teneo/TeneoHibernateMappingProvider.java index 8c8b2b70dd..f5bf6bc835 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate.teneo/src/org/eclipse/emf/cdo/server/hibernate/teneo/TeneoHibernateMappingProvider.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate.teneo/src/org/eclipse/emf/cdo/server/hibernate/teneo/TeneoHibernateMappingProvider.java @@ -59,6 +59,8 @@ public class TeneoHibernateMappingProvider implements IHibernateMappingProvider TRACER.trace(mapping); } + System.err.println(mapping); + configuration.addXML(mapping); if (TRACER.isEnabled()) { diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/.settings/.api_filters b/plugins/org.eclipse.emf.cdo.server.hibernate/.settings/.api_filters new file mode 100644 index 0000000000..99960de35c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/.settings/.api_filters @@ -0,0 +1,337 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<component id="org.eclipse.emf.cdo.server.hibernate" version="2"> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertySetter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertySetter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertySetter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionInstantiator.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionInstantiator"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionInstantiator"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOSyntheticVersionPropertyHandler.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOSyntheticVersionPropertyHandler"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOSyntheticVersionPropertyHandler"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyHandler.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertyHandler"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertyHandler"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernatePackageHandler.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernatePackageHandler"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernatePackageHandler"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOReferenceGetter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOReferenceGetter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOReferenceGetter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOVersionPropertyGetter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOVersionPropertyGetter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOVersionPropertyGetter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/info/FeatureServerInfo.java" type="org.eclipse.emf.cdo.server.internal.hibernate.info.FeatureServerInfo"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.info.FeatureServerInfo"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.PersistableListHolder"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.PersistableListHolder"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxyFactory.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionProxyFactory"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionProxyFactory"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertyGetter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertyGetter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDPropertyGetter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreChunkReader.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreChunkReader"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreChunkReader"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOInterceptor.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOInterceptor"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOInterceptor"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateFileMappingProvider.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernateFileMappingProvider"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateFileMappingProvider"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOTypeUserType.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOTypeUserType"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOTypeUserType"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateCommitContext.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernateCommitContext"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateCommitContext"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOSyntheticIdPropertyHandler.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOSyntheticIdPropertyHandler"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOSyntheticIdPropertyHandler"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/info/ServerInfo.java" type="org.eclipse.emf.cdo.server.internal.hibernate.info.ServerInfo"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.info.ServerInfo"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOManyReferenceGetter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOManyReferenceGetter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreFactory.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreFactory"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreFactory"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/HibernateMoveableListWrapper.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.HibernateMoveableListWrapper"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.HibernateMoveableListWrapper"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionPropertyAccessor.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionPropertyAccessor"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionPropertyAccessor"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionLazyInitializer.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionLazyInitializer"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionLazyInitializer"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateUtil.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernateUtil"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateUtil"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateThreadContext.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernateThreadContext"> + <filter id="338792546"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateThreadContext"/> + <message_argument value="setSession(Session)"/> + </message_arguments> + </filter> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateThreadContext"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStore.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStore"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStore"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/info/PackageServerInfo.java" type="org.eclipse.emf.cdo.server.internal.hibernate.info.PackageServerInfo"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.info.PackageServerInfo"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDMetaRangeUserType.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDMetaRangeUserType"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDMetaRangeUserType"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionTuplizer.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionTuplizer"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionTuplizer"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOReferenceSetter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOReferenceSetter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOReferenceSetter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceSetter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOManyReferenceSetter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOManyReferenceSetter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOVersionPropertySetter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOVersionPropertySetter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOVersionPropertySetter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/info/ClassServerInfo.java" type="org.eclipse.emf.cdo.server.internal.hibernate.info.ClassServerInfo"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.info.ClassServerInfo"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionProxy.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionProxy"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDORevisionProxy"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreReader.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreReader"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreReader"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertyGetter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertyGetter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertyGetter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDUserType.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDUserType"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDUserType"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOPropertySetter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertySetter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOPropertySetter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreWriter.java" type="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreWriter"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreWriter"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/cdo/server/internal/hibernate/bundle/OM.java" type="org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM"> + <filter id="305365105"> + <message_arguments> + <message_argument value="org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM"/> + <message_argument value="org.eclipse.emf.cdo.server.hibernate_1.0.1"/> + </message_arguments> + </filter> + </resource> +</component> diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.server.hibernate/META-INF/MANIFEST.MF index d719f27756..d78930b114 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/META-INF/MANIFEST.MF @@ -13,10 +13,10 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)", org.eclipse.emf.cdo.server;bundle-version="[1.0.0,2.0.0)";visibility:=reexport, org.eclipse.emf.cdo.server.hibernate.id;bundle-version="[1.0.0,2.0.0)";visibility:=reexport Export-Package: org.eclipse.emf.cdo.server.hibernate;version="1.0.0", - org.eclipse.emf.cdo.server.internal.hibernate;version="1.0.0", - org.eclipse.emf.cdo.server.internal.hibernate.bundle;version="1.0.0", - org.eclipse.emf.cdo.server.internal.hibernate.info;version="1.0.0", - org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;version="1.0.0" + org.eclipse.emf.cdo.server.internal.hibernate;version="1.0.0";x-internal:=true, + org.eclipse.emf.cdo.server.internal.hibernate.bundle;version="1.0.0";x-internal:=true, + org.eclipse.emf.cdo.server.internal.hibernate.info;version="1.0.0";x-internal:=true, + org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;version="1.0.0";x-internal:=true Import-Package: org.hibernate;version="[3.2.0,4.0.0)", org.hibernate.cfg;version="[3.2.0,4.0.0)", org.hibernate.collection;version="[3.2.0,4.0.0)", diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/mappings/resource.hbm.xml b/plugins/org.eclipse.emf.cdo.server.hibernate/mappings/resource.hbm.xml index f369963959..168b456ce9 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/mappings/resource.hbm.xml +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/mappings/resource.hbm.xml @@ -15,7 +15,7 @@ <meta attribute="syntheticVersion">true</meta> </version> <property name="path" type="string" not-null="true" length="255" /> - <list name="contents" lazy="true" cascade="all,delete-orphan"> + <list name="contents" lazy="false" cascade="all,delete-orphan"> <key/> <list-index/> <element type="org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOIDUserType"> diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java index e01d838c31..624f4eef48 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreAccessor.java @@ -13,12 +13,16 @@ package org.eclipse.emf.cdo.server.internal.hibernate; import org.eclipse.emf.cdo.internal.server.StoreAccessor; import org.eclipse.emf.cdo.server.ISession; +import org.eclipse.emf.cdo.server.IStoreReader; import org.eclipse.emf.cdo.server.IView; +import org.eclipse.emf.cdo.server.StoreUtil; import org.eclipse.emf.cdo.server.hibernate.IHibernateStoreAccessor; import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM; +import org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.PersistableListHolder; import org.eclipse.net4j.util.om.trace.ContextTracer; +import org.hibernate.FlushMode; import org.hibernate.Session; import org.hibernate.SessionFactory; @@ -32,6 +36,8 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS private Session hibernateSession; + private boolean errorOccured = false; + protected HibernateStoreAccessor(HibernateStore store, ISession session) { super(store, session); @@ -50,36 +56,34 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS } } - protected Session createHibernateSession() - { - if (TRACER.isEnabled()) - { - TRACER.trace("Creating hibernate session and setting it in threadlocal HibernateThreadContext"); - } - - SessionFactory sessionFactory = getStore().getHibernateSessionFactory(); - Session session = sessionFactory.openSession(); - HibernateThreadContext.setSession(session); - return session; - } - @Override protected void doRelease() { if (TRACER.isEnabled()) { - TRACER.trace("Releasing hibernate session"); + TRACER.trace("Committing/rollback and closing hibernate session"); } - HibernateThreadContext.setSession(null); - clearHibernateSession(); + // this try/catch can disappear when in transaction commit the release + // of the accessor is done after the + try + { + // ugly cast + StoreUtil.setReader((IStoreReader)this); + endHibernateSession(); + PersistableListHolder.getInstance().clearListMapping(); + } + finally + { + StoreUtil.setReader(null); + } } /** Clears the current hibernate session and sets a new one in the thread context */ public void resetHibernateSession() { - clearHibernateSession(); - getHibernateSession(); + endHibernateSession(); + beginHibernateSession(); } @Override @@ -88,23 +92,77 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS return (HibernateStore)super.getStore(); } - public void clearHibernateSession() + /** + * @since 1.0 - 6 July 2008 + */ + public Session createHibernateSession() { + beginHibernateSession(); + return getHibernateSession(); + } + + /** + * @since 1.0 - 6 July 2008 + */ + public void clearHibernateSession() { + endHibernateSession(); + } + + /** + * starts a hibernate session and begins a transaction + * + * @since 1.0 - 6 July 2008 + */ + public void beginHibernateSession() { if (TRACER.isEnabled()) { - TRACER.trace("Removing hibernate session"); + TRACER.trace("Creating hibernate session and transaction"); + } + assert hibernateSession == null; + final SessionFactory sessionFactory = getStore().getHibernateSessionFactory(); + hibernateSession = sessionFactory.openSession(); + hibernateSession.beginTransaction(); + hibernateSession.setFlushMode(FlushMode.COMMIT); + } + + /** + * commits/rollbacks and closes the session + * + * @since 1.0 - 6 July 2008 + */ + public void endHibernateSession() + { + if (TRACER.isEnabled()) + { + TRACER.trace("Closing hibernate session"); } if (hibernateSession != null && hibernateSession.isOpen()) { - if (TRACER.isEnabled()) + try { - TRACER.trace("Closing hibernate session"); + if (isErrorOccured()) + { + if (TRACER.isEnabled()) + { + TRACER.trace("Rolling back hb transaction"); + } + hibernateSession.getTransaction().rollback(); + } + else + { + if (TRACER.isEnabled()) + { + TRACER.trace("Committing hb transaction"); + } + hibernateSession.getTransaction().commit(); + } + } + finally + { + hibernateSession.close(); } - - hibernateSession.close(); } - hibernateSession = null; } @@ -112,9 +170,25 @@ public class HibernateStoreAccessor extends StoreAccessor implements IHibernateS { if (hibernateSession == null) { - hibernateSession = createHibernateSession(); + beginHibernateSession(); } return hibernateSession; } + + /** + * @since 1.0 - 6 July 2008 + */ + public boolean isErrorOccured() + { + return errorOccured; + } + + /** + * @since 1.0 + */ + public void setErrorOccured(boolean errorOccured) + { + this.errorOccured = errorOccured; + } } diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreReader.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreReader.java index 2424eaf0cb..405c82dbe5 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreReader.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreReader.java @@ -12,6 +12,7 @@ package org.eclipse.emf.cdo.server.internal.hibernate; import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDTemp; import org.eclipse.emf.cdo.common.model.CDOClassRef; import org.eclipse.emf.cdo.common.model.CDOFeature; import org.eclipse.emf.cdo.common.model.CDOPackage; @@ -20,9 +21,11 @@ import org.eclipse.emf.cdo.common.model.resource.CDOResourceClass; import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.server.ISession; import org.eclipse.emf.cdo.server.IView; +import org.eclipse.emf.cdo.server.StoreUtil; import org.eclipse.emf.cdo.server.hibernate.IHibernateStoreReader; import org.eclipse.emf.cdo.server.hibernate.id.CDOIDHibernate; import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM; +import org.eclipse.emf.cdo.spi.common.CDOIDLongImpl; import org.eclipse.net4j.util.collection.CloseableIterator; import org.eclipse.net4j.util.om.trace.ContextTracer; @@ -32,6 +35,7 @@ import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.Expression; +import java.io.Serializable; import java.util.Collection; import java.util.List; @@ -46,11 +50,13 @@ public class HibernateStoreReader extends HibernateStoreAccessor implements IHib public HibernateStoreReader(HibernateStore store, ISession session) { super(store, session); + StoreUtil.setReader(this); } protected HibernateStoreReader(HibernateStore store, IView view) { super(store, view); + StoreUtil.setReader(this); } public HibernateStoreChunkReader createChunkReader(CDORevision revision, CDOFeature feature) @@ -63,6 +69,25 @@ public class HibernateStoreReader extends HibernateStoreAccessor implements IHib throw new UnsupportedOperationException(); } + @Override + // this method can disappear when in transaction commit the release + // of the accessor is done before the StoreUtil.setReader(null), + // see the Transaction + protected void doRelease() + { + try + { + // ugly cast + StoreUtil.setReader(this); + super.doRelease(); + } + finally + { + StoreUtil.setReader(null); + HibernateThreadContext.setCommitContext(null); + } + } + public CDOClassRef readObjectType(CDOID id) { CDORevision cdoRevision = readRevision(id, -1); @@ -113,8 +138,14 @@ public class HibernateStoreReader extends HibernateStoreAccessor implements IHib throw new IllegalArgumentException("ID must be not null"); } - if (!(id instanceof CDOIDHibernate)) - { + Serializable idValue; + if (id instanceof CDOIDLongImpl) { + idValue = ((CDOIDLongImpl)id).getLongValue(); + } else if (id instanceof CDOIDTemp) { + idValue = new Long(((CDOIDTemp)id).getIntValue()); + } else if (id instanceof CDOIDHibernate) { + idValue = ((CDOIDHibernate)id).getId(); + } else { throw new IllegalArgumentException("ID type " + id.getClass().getName() + " not supported by hibernate reader"); } @@ -126,7 +157,7 @@ public class HibernateStoreReader extends HibernateStoreAccessor implements IHib Session session = getHibernateSession(); Query qry = session.createQuery("select path from " + CDOResourceClass.NAME + " where id=:id"); CDOIDHibernate idHibernate = (CDOIDHibernate)id; - qry.setParameter("id", idHibernate.getId()); + qry.setParameter("id", idValue); final List<?> result = qry.list(); if (result.size() == 0) { diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreWriter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreWriter.java index e8b84118a6..23134f5591 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreWriter.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateStoreWriter.java @@ -11,6 +11,8 @@ **************************************************************************/ package org.eclipse.emf.cdo.server.internal.hibernate; +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDTemp; import org.eclipse.emf.cdo.common.model.CDOClassProxy; import org.eclipse.emf.cdo.common.model.CDOFeature; import org.eclipse.emf.cdo.common.model.CDOPackage; @@ -54,12 +56,11 @@ public class HibernateStoreWriter extends HibernateStoreReader implements IHiber try { // start with fresh hibernate session - Session session = getHibernateSession(); + final Session session = getHibernateSession(); session.setFlushMode(FlushMode.COMMIT); - session.beginTransaction(); for (Object o : context.getNewObjects()) { - CDORevision cdoRevision = (CDORevision)o; + final CDORevision cdoRevision = (CDORevision)o; session.save(HibernateUtil.getInstance().getEntityName(cdoRevision), o); if (TRACER.isEnabled()) { @@ -72,7 +73,7 @@ public class HibernateStoreWriter extends HibernateStoreReader implements IHiber { try { - CDORevision cdoRevision = (CDORevision)o; + final CDORevision cdoRevision = (CDORevision)o; if (cdoRevision instanceof InternalCDORevision) { ((InternalCDORevision)cdoRevision).setVersion(cdoRevision.getVersion() - 1); @@ -91,29 +92,18 @@ public class HibernateStoreWriter extends HibernateStoreReader implements IHiber } } - if (TRACER.isEnabled()) - { - TRACER.trace("Commit hibernate transaction"); - } - - session.getTransaction().commit(); + // does the commit + endHibernateSession(); + context.applyIDMappings(); } finally { - if (TRACER.isEnabled()) - { - TRACER.trace("Clearing used hibernate session"); - } - - HibernateThreadContext.setCommitContext(null); } if (TRACER.isEnabled()) { TRACER.trace("Applying id mappings"); } - - context.applyIDMappings(); } @Override diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateThreadContext.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateThreadContext.java index 9cca7a24ef..942ffb0aea 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateThreadContext.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateThreadContext.java @@ -10,6 +10,7 @@ **************************************************************************/ package org.eclipse.emf.cdo.server.internal.hibernate; +import org.eclipse.emf.cdo.server.StoreUtil; import org.eclipse.emf.cdo.server.IStoreWriter.CommitContext; import org.eclipse.emf.cdo.server.internal.hibernate.bundle.OM; @@ -19,48 +20,13 @@ import org.hibernate.Session; /** * @author Martin Taal - */ + */ public class HibernateThreadContext { private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, HibernateThreadContext.class); private static ThreadLocal<HibernateCommitContext> commitContext = new ThreadLocal<HibernateCommitContext>(); - private static ThreadLocal<Session> session = new ThreadLocal<Session>(); - - public static Session getSession() - { - Session result = session.get(); - if (result == null) - { - throw new IllegalStateException("Session not set"); - } - - return result; - } - - public static void setSession(Session newSession) - { - if (newSession != null && session.get() != null) - { - throw new IllegalStateException("Session already set"); - } - - if (TRACER.isEnabled()) - { - if (newSession == null) - { - TRACER.trace("Clearing session in threadlocal"); - } - else - { - TRACER.trace("Setting session in threadlocal"); - } - } - - session.set(newSession); - } - public static HibernateCommitContext getHibernateCommitContext() { HibernateCommitContext result = commitContext.get(); @@ -76,7 +42,7 @@ public class HibernateThreadContext { return commitContext.get() != null; } - + public static void setCommitContext(CommitContext newCommitContext) { if (newCommitContext != null && commitContext.get() != null) @@ -108,4 +74,8 @@ public class HibernateThreadContext commitContext.set(hcc); } } + + public static Session getSession() { + return ((HibernateStoreReader)StoreUtil.getReader()).getHibernateSession(); + } } diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateUtil.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateUtil.java index 37d5de5b41..7ac5cf336f 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateUtil.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/HibernateUtil.java @@ -14,6 +14,7 @@ import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.common.id.CDOIDTemp; import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.server.IStore; +import org.eclipse.emf.cdo.server.StoreUtil; import org.eclipse.emf.cdo.server.hibernate.id.CDOIDHibernate; import org.eclipse.emf.cdo.spi.common.InternalCDORevision; @@ -46,11 +47,20 @@ public class HibernateUtil HibernateUtil.instance = instance; } + /** + * @since 1.0 - 6 July 2008 + */ + public Session getHibernateSession() + { + final HibernateStoreReader storeReader = (HibernateStoreReader)StoreUtil.getReader(); + return storeReader.getHibernateSession(); + } + /** Converts from a Map<String, String> to a Properties */ public Properties getPropertiesFromStore(IStore store) { - Properties props = new Properties(); - Map<String, String> storeProps = store.getRepository().getProperties(); + final Properties props = new Properties(); + final Map<String, String> storeProps = store.getRepository().getProperties(); for (String key : storeProps.keySet()) { props.setProperty(key, storeProps.get(key)); @@ -71,13 +81,13 @@ public class HibernateUtil */ public CDOIDHibernate getCDOIDHibernate(CDOID cdoID) { - CDORevision cdoRevision = getCDORevision(cdoID); + final CDORevision cdoRevision = getCDORevision(cdoID); if (cdoRevision.getID() instanceof CDOIDHibernate) { return (CDOIDHibernate)cdoRevision.getID(); } - Session session = HibernateThreadContext.getSession(); + final Session session = getHibernateSession(); session.saveOrUpdate(cdoRevision); if (!(cdoRevision.getID() instanceof CDOIDHibernate)) { @@ -113,7 +123,7 @@ public class HibernateUtil if (HibernateThreadContext.isHibernateCommitContextSet()) { - HibernateCommitContext hcc = HibernateThreadContext.getHibernateCommitContext(); + final HibernateCommitContext hcc = HibernateThreadContext.getHibernateCommitContext(); CDORevision revision; if ((revision = hcc.getDirtyObject(id)) != null) { @@ -127,7 +137,7 @@ public class HibernateUtil // maybe the temp was already translated if (id instanceof CDOIDTemp) { - CDOID newID = hcc.getCommitContext().getIDMappings().get(id); + final CDOID newID = hcc.getCommitContext().getIDMappings().get(id); if (newID != null) { return getCDORevision(newID); @@ -141,8 +151,11 @@ public class HibernateUtil + id.getClass().getName() + ": " + id); } - CDOIDHibernate cdoIDHibernate = (CDOIDHibernate)id; - Session session = HibernateThreadContext.getSession(); + final CDOIDHibernate cdoIDHibernate = (CDOIDHibernate)id; + final Session session = getHibernateSession(); return (CDORevision)session.get(cdoIDHibernate.getEntityName(), cdoIDHibernate.getId()); } + + // get the revision from the context + } diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDUserType.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDUserType.java index e03ec49bed..68c70f772c 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDUserType.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDUserType.java @@ -15,6 +15,8 @@ import org.eclipse.emf.cdo.common.id.CDOIDTemp; import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.server.hibernate.id.CDOIDHibernate; import org.eclipse.emf.cdo.server.hibernate.internal.id.CDOIDHibernateFactoryImpl; +import org.eclipse.emf.cdo.server.internal.hibernate.HibernateCommitContext; +import org.eclipse.emf.cdo.server.internal.hibernate.HibernateThreadContext; import org.eclipse.emf.cdo.server.internal.hibernate.HibernateUtil; import org.eclipse.net4j.util.WrappedException; diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java index 6987480051..6a14f30312 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceGetter.java @@ -10,6 +10,10 @@ **************************************************************************/ package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer; +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDTemp; +import org.eclipse.emf.cdo.server.internal.hibernate.HibernateCommitContext; +import org.eclipse.emf.cdo.server.internal.hibernate.HibernateThreadContext; import org.eclipse.emf.cdo.spi.common.InternalCDORevision; import org.eclipse.net4j.util.collection.MoveableArrayList; @@ -65,7 +69,7 @@ public class CDOManyReferenceGetter extends CDOPropertyGetter InternalCDORevision revision = (InternalCDORevision)target; revision.setValue(getCDOFeature(), list); } - + // Wrap the moveablearraylist HibernateMoveableListWrapper wrapper = new HibernateMoveableListWrapper(); wrapper.setDelegate(list); diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceSetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceSetter.java index 6e4f178a24..388594924c 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceSetter.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOManyReferenceSetter.java @@ -15,6 +15,8 @@ import org.hibernate.collection.PersistentCollection; import org.hibernate.collection.PersistentList; import org.hibernate.engine.SessionFactoryImplementor; +import java.util.List; + /** * @author Martin Taal */ @@ -35,7 +37,9 @@ public class CDOManyReferenceSetter extends CDOPropertySetter { throw new IllegalArgumentException("Value is not a persistentlist but a " + value.getClass().getName()); } - + + super.set(target, new MoveableListWrapper((List)value), factory); + // Only set it in the listholder PersistableListHolder.getInstance().putListMapping(target, getCDOFeature(), (PersistentCollection)value); } diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionTuplizer.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionTuplizer.java index aaafdc0aa7..306d3a1cba 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionTuplizer.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDORevisionTuplizer.java @@ -203,7 +203,10 @@ public class CDORevisionTuplizer extends AbstractEntityTuplizer } CDOFeature cdoFeature = getCDOClass().lookupFeature(mappedProperty.getName()); - if (cdoFeature.isReference() && cdoFeature.isMany()) + if (cdoFeature == null) { + return new CDOVirtualPropertyGetter(this, mappedProperty.getName()); + } + else if (cdoFeature.isReference() && cdoFeature.isMany()) { return new CDOManyReferenceGetter(this, mappedProperty.getName()); } @@ -238,7 +241,10 @@ public class CDORevisionTuplizer extends AbstractEntityTuplizer } CDOFeature cdoFeature = getCDOClass().lookupFeature(mappedProperty.getName()); - if (cdoFeature.isReference() && cdoFeature.isMany()) + if (cdoFeature == null) { + return new CDOVirtualPropertySetter(this, mappedProperty.getName()); + } + else if (cdoFeature.isReference() && cdoFeature.isMany()) { return new CDOManyReferenceSetter(this, mappedProperty.getName()); } diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOVirtualPropertyGetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOVirtualPropertyGetter.java new file mode 100644 index 0000000000..24214512ab --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOVirtualPropertyGetter.java @@ -0,0 +1,95 @@ +/*************************************************************************** + * Copyright (c) 2004 - 2008 Martin Taal + * 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 - copied from CDORevisionPropertyHandler and adapted + **************************************************************************/ +package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDTemp; +import org.eclipse.emf.cdo.server.hibernate.id.CDOIDHibernate; +import org.eclipse.emf.cdo.server.hibernate.internal.id.CDOIDHibernateFactoryImpl; +import org.eclipse.emf.cdo.server.internal.hibernate.HibernateThreadContext; +import org.eclipse.emf.cdo.spi.common.InternalCDORevision; + +import org.hibernate.HibernateException; +import org.hibernate.engine.SessionImplementor; +import org.hibernate.property.Getter; + +import java.lang.reflect.Method; +import java.util.Map; + +/** + * Gets resourceId, containedId and containingFeatureId + * + * @author Martin Taal + */ +public class CDOVirtualPropertyGetter implements Getter +{ + private static final long serialVersionUID = 1L; + private final boolean isResourceIdProperty; + private final boolean isContainerIdProperty; + private final boolean isContainingFeatureIdProperty; + private final String propertyName; + + public CDOVirtualPropertyGetter(CDORevisionTuplizer tuplizer, String propertyName) + { + isResourceIdProperty = propertyName.compareTo("resourceID") == 0; + isContainerIdProperty = propertyName.compareTo("containerID") == 0; + isContainingFeatureIdProperty = propertyName.compareTo("containingFeatureID") == 0; + this.propertyName = propertyName; + if (!isResourceIdProperty && !isContainerIdProperty && !isContainingFeatureIdProperty) { + throw new IllegalArgumentException("Propertyname " + propertyName + " not supported must be one of resourceID, containerID, containingFeatureID"); + } + } + + public Object get(Object target) throws HibernateException + { + InternalCDORevision revision = (InternalCDORevision)target; + if (isResourceIdProperty) { + final CDOID cdoID = revision.getResourceID(); + if (cdoID instanceof CDOIDTemp) { + // TODO: externalize entityname + final CDOIDHibernate hibernateID = CDOIDHibernateFactoryImpl.getInstance().createCDOID(((CDOIDTemp)cdoID).getIntValue(), "CDOResource"); + revision.setResourceID(hibernateID); + if (HibernateThreadContext.isHibernateCommitContextSet()) { + HibernateThreadContext.getHibernateCommitContext().setNewID(cdoID, hibernateID); + } + } + + return revision.getResourceID(); + } else if (isContainerIdProperty) { + return revision.getContainerID(); + } else if (isContainingFeatureIdProperty) { + return revision.getContainingFeatureID(); + } + throw new IllegalArgumentException("Propertyname " + propertyName + " not supported must be one of resourceID, containerID, containingFeatureID"); + } + + @SuppressWarnings("unchecked") + public Object getForInsert(Object target, Map mergeMap, SessionImplementor session) throws HibernateException + { + return get(target); + } + + public Method getMethod() + { + return null; + } + + public String getMethodName() + { + return null; + } + + @SuppressWarnings("unchecked") + public Class getReturnType() + { + return Object.class; + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOVirtualPropertySetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOVirtualPropertySetter.java new file mode 100644 index 0000000000..0c945b120e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOVirtualPropertySetter.java @@ -0,0 +1,74 @@ +/*************************************************************************** + * Copyright (c) 2004 - 2008 Martin Taal + * 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 - copied from CDORevisionPropertyHandler and adapted + **************************************************************************/ +package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.spi.common.InternalCDORevision; + +import org.hibernate.HibernateException; +import org.hibernate.engine.SessionFactoryImplementor; +import org.hibernate.engine.SessionImplementor; +import org.hibernate.property.Getter; +import org.hibernate.property.Setter; + +import java.lang.reflect.Method; +import java.util.Map; + +/** + * Gets resourceId, containedId and containingFeatureId + * + * @author Martin Taal + */ +public class CDOVirtualPropertySetter implements Setter +{ + private static final long serialVersionUID = 1L; + private final boolean isResourceIdProperty; + private final boolean isContainerIdProperty; + private final boolean isContainingFeatureIdProperty; + private final String propertyName; + + public CDOVirtualPropertySetter(CDORevisionTuplizer tuplizer, String propertyName) + { + isResourceIdProperty = propertyName.compareTo("resourceID") == 0; + isContainerIdProperty = propertyName.compareTo("containerID") == 0; + isContainingFeatureIdProperty = propertyName.compareTo("containingFeatureID") == 0; + this.propertyName = propertyName; + if (!isResourceIdProperty && !isContainerIdProperty && !isContainingFeatureIdProperty) { + throw new IllegalArgumentException("Propertyname " + propertyName + " not supported must be one of resourceID, containerID, containingFeatureID"); + } + } + + public void set(Object target, Object value, SessionFactoryImplementor factory) throws HibernateException + { + InternalCDORevision revision = (InternalCDORevision)target; + if (isResourceIdProperty) { + revision.setResourceID((CDOID)value); + return; + } else if (isContainerIdProperty) { + revision.setContainerID((CDOID)value); + return; + } else if (isContainingFeatureIdProperty) { + revision.setContainingFeatureID((Integer)value); + return; + } + throw new IllegalArgumentException("Propertyname " + propertyName + " not supported must be one of resourceID, containerID, containingFeatureID"); + } + + public Method getMethod() + { + return null; + } + + public String getMethodName() + { + return null; + } +} diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/MoveableListWrapper.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/MoveableListWrapper.java new file mode 100644 index 0000000000..5c24eb7bf2 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/MoveableListWrapper.java @@ -0,0 +1,217 @@ +/*************************************************************************** + * Copyright (c) 2008 - 2008 Martin Taal 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 - initial api + **************************************************************************/ +package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer; + +import org.eclipse.net4j.util.collection.MoveableList; + +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; + +/** + * Wraps a list and adds the move operation. The delegate should normally be a persistentlist. + * + * @author Martin Taal + */ +public class MoveableListWrapper implements MoveableList<Object> +{ + private List<Object> delegate; + + public MoveableListWrapper(List<Object> delegate) + { + this.delegate = delegate; + } + + /** + * @return the delegate + */ + public List<Object> getDelegate() + { + return delegate; + } + + public Object move(int targetIndex, int sourceIndex) + { + int size = size(); + if (sourceIndex >= size) + { + throw new IndexOutOfBoundsException("sourceIndex=" + sourceIndex + ", size=" + size); + } + + if (targetIndex >= size) + { + throw new IndexOutOfBoundsException("targetIndex=" + targetIndex + ", size=" + size); + } + + Object object = get(sourceIndex); + if (targetIndex == sourceIndex) + { + return object; + } + + if (targetIndex < sourceIndex) + { + moveUp1(targetIndex, sourceIndex - targetIndex); + } + else + { + moveDown1(targetIndex, targetIndex - sourceIndex); + } + + set(targetIndex, object); + return object; + } + + private void moveUp1(int index, int count) + { + for (int i = count; i > 0; i--) + { + set(index + i, get(index + i - 1)); + } + } + + private void moveDown1(int index, int count) + { + for (int i = count; i > 0; i--) + { + set(index - i, get(index - i + 1)); + } + } + + public void add(int index, Object element) + { + delegate.add(index, element); + } + + public boolean add(Object e) + { + return delegate.add(e); + } + + public boolean addAll(Collection<? extends Object> c) + { + return delegate.addAll(c); + } + + public boolean addAll(int index, Collection<? extends Object> c) + { + return delegate.addAll(index, c); + } + + public void clear() + { + delegate.clear(); + } + + public boolean contains(Object o) + { + return delegate.contains(o); + } + + public boolean containsAll(Collection<?> c) + { + return delegate.containsAll(c); + } + + @Override + public boolean equals(Object o) + { + return delegate.equals(o); + } + + public Object get(int index) + { + return delegate.get(index); + } + + @Override + public int hashCode() + { + return delegate.hashCode(); + } + + public int indexOf(Object o) + { + return delegate.indexOf(o); + } + + public boolean isEmpty() + { + return delegate.isEmpty(); + } + + public Iterator<Object> iterator() + { + return delegate.iterator(); + } + + public int lastIndexOf(Object o) + { + return delegate.lastIndexOf(o); + } + + public ListIterator<Object> listIterator() + { + return delegate.listIterator(); + } + + public ListIterator<Object> listIterator(int index) + { + return delegate.listIterator(index); + } + + public Object remove(int index) + { + return delegate.remove(index); + } + + public boolean remove(Object o) + { + return delegate.remove(o); + } + + public boolean removeAll(Collection<?> c) + { + return delegate.removeAll(c); + } + + public boolean retainAll(Collection<?> c) + { + return delegate.retainAll(c); + } + + public Object set(int index, Object element) + { + return delegate.set(index, element); + } + + public int size() + { + return delegate.size(); + } + + public List<Object> subList(int fromIndex, int toIndex) + { + return delegate.subList(fromIndex, toIndex); + } + + public Object[] toArray() + { + return delegate.toArray(); + } + + public <T> T[] toArray(T[] a) + { + return delegate.toArray(a); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java index 108747dca9..0c94082495 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/PersistableListHolder.java @@ -66,6 +66,14 @@ public class PersistableListHolder return listMapping.get(); } + /** + * @since 1.0 - 6 July 2008 + */ + public void clearListMapping() + { + listMapping.set(null); + } + public static PersistableListHolder getInstance() { return instance; |