diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertyGetter.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertyGetter.java | 200 |
1 files changed, 100 insertions, 100 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertyGetter.java b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertyGetter.java index 23fb92fdd9..7ce94d6e2e 100644 --- a/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertyGetter.java +++ b/plugins/org.eclipse.emf.cdo.server.hibernate/src/org/eclipse/emf/cdo/server/internal/hibernate/tuplizer/CDOIDPropertyGetter.java @@ -1,100 +1,100 @@ -/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) 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 - copied from CDORevisionPropertyHandler and adapted
- * Eike Stepper - maintenance
- */
-package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer;
-
-import org.eclipse.emf.cdo.common.id.CDOID;
-import org.eclipse.emf.cdo.common.id.CDOIDObject;
-import org.eclipse.emf.cdo.common.id.CDOIDTemp;
-import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
-import org.eclipse.emf.cdo.common.revision.CDORevision;
-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.emf.cdo.spi.common.revision.InternalCDORevision;
-
-import org.hibernate.HibernateException;
-
-/**
- * @author Martin Taal
- */
-public class CDOIDPropertyGetter extends CDOPropertyGetter
-{
- private static final long serialVersionUID = 1L;
-
- public CDOIDPropertyGetter(CDORevisionTuplizer tuplizer, String propertyName)
- {
- super(tuplizer, propertyName);
- }
-
- @Override
- public Object get(Object target) throws HibernateException
- {
- InternalCDORevision revision = (InternalCDORevision)target;
- if (!(HibernateUtil.getInstance().getCDOID(revision) instanceof CDOIDObject))
- {
- if (!isVirtualProperty())
- {
- final Object value = super.get(target);
- // todo: value can be null for generated values?
- if (value != null)
- {
- setCDOID(revision, value);
- }
-
- return value;
- }
-
- return null;
- }
-
- if (isVirtualProperty())
- {
- return HibernateUtil.getInstance().getIdValue(revision.getID());
- }
-
- Object id = super.get(target);
- setCDOID(revision, id);
-
- // TODO: does this make sense?
- // if (id.getId() == null)
- // {
- // id.setId((Serializable)id);
- // }
- return id;
- }
-
- private void setCDOID(CDORevision target, Object value)
- {
- final InternalCDORevision revision = (InternalCDORevision)target;
- final CDOID id = HibernateUtil.getInstance().getCDOID(revision);
- if (id == null || id instanceof CDOIDTemp)
- {
- final CDOID newCDOID = HibernateUtil.getInstance().createCDOID(new CDOClassifierRef(revision.getEClass()), value);
- revision.setID(newCDOID);
- if (HibernateThreadContext.isCommitContextSet())
- {
- final HibernateCommitContext commitContext = HibernateThreadContext.getCommitContext();
- commitContext.setNewID(id, newCDOID);
- if (id instanceof CDOIDTemp)
- {
- commitContext.getCommitContext().addIDMapping(id, newCDOID);
- }
- }
- }
- }
-
- @Override
- protected boolean isVirtualPropertyAllowed()
- {
- return true;
- }
-}
+/* + * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) 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 - copied from CDORevisionPropertyHandler and adapted + * Eike Stepper - maintenance + */ +package org.eclipse.emf.cdo.server.internal.hibernate.tuplizer; + +import org.eclipse.emf.cdo.common.id.CDOID; +import org.eclipse.emf.cdo.common.id.CDOIDObject; +import org.eclipse.emf.cdo.common.id.CDOIDTemp; +import org.eclipse.emf.cdo.common.model.CDOClassifierRef; +import org.eclipse.emf.cdo.common.revision.CDORevision; +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.emf.cdo.spi.common.revision.InternalCDORevision; + +import org.hibernate.HibernateException; + +/** + * @author Martin Taal + */ +public class CDOIDPropertyGetter extends CDOPropertyGetter +{ + private static final long serialVersionUID = 1L; + + public CDOIDPropertyGetter(CDORevisionTuplizer tuplizer, String propertyName) + { + super(tuplizer, propertyName); + } + + @Override + public Object get(Object target) throws HibernateException + { + InternalCDORevision revision = (InternalCDORevision)target; + if (!(HibernateUtil.getInstance().getCDOID(revision) instanceof CDOIDObject)) + { + if (!isVirtualProperty()) + { + final Object value = super.get(target); + // todo: value can be null for generated values? + if (value != null) + { + setCDOID(revision, value); + } + + return value; + } + + return null; + } + + if (isVirtualProperty()) + { + return HibernateUtil.getInstance().getIdValue(revision.getID()); + } + + Object id = super.get(target); + setCDOID(revision, id); + + // TODO: does this make sense? + // if (id.getId() == null) + // { + // id.setId((Serializable)id); + // } + return id; + } + + private void setCDOID(CDORevision target, Object value) + { + final InternalCDORevision revision = (InternalCDORevision)target; + final CDOID id = HibernateUtil.getInstance().getCDOID(revision); + if (id == null || id instanceof CDOIDTemp) + { + final CDOID newCDOID = HibernateUtil.getInstance().createCDOID(new CDOClassifierRef(revision.getEClass()), value); + revision.setID(newCDOID); + if (HibernateThreadContext.isCommitContextSet()) + { + final HibernateCommitContext commitContext = HibernateThreadContext.getCommitContext(); + commitContext.setNewID(id, newCDOID); + if (id instanceof CDOIDTemp) + { + commitContext.getCommitContext().addIDMapping(id, newCDOID); + } + } + } + } + + @Override + protected boolean isVirtualPropertyAllowed() + { + return true; + } +} |