You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2015/04/08 00:12:35 UTC
[1/2] tomee git commit: persistence synchronization parameter
Repository: tomee
Updated Branches:
refs/heads/master f3f3c7b9f -> 3bf595f3c
persistence synchronization parameter
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/dc66eb50
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/dc66eb50
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/dc66eb50
Branch: refs/heads/master
Commit: dc66eb500fc72e6c245fa4888cff8b4572a018ad
Parents: f3f3c7b
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Apr 8 00:05:53 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Apr 8 00:05:53 2015 +0200
----------------------------------------------------------------------
.../assembler/classic/JndiEncBuilder.java | 3 ++-
.../PersistenceContextReferenceInfo.java | 1 +
.../openejb/config/JndiEncInfoBuilder.java | 1 +
.../openejb/persistence/JtaEntityManager.java | 14 ++++++++---
.../persistence/JtaEntityManagerRegistry.java | 17 ++++++++++---
.../openejb/jee/PersistenceContextRef$JAXB.java | 17 +++++++++++++
.../openejb/jee/PersistenceContextRef.java | 10 ++++++++
.../jee/PersistenceContextSynchronization.java | 26 ++++++++++++++++++++
.../tomee/catalina/TomcatJndiBuilder.java | 2 +-
9 files changed, 82 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/dc66eb50/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
index ab1142c..ac37574 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
@@ -429,7 +429,8 @@ public class JndiEncBuilder {
throw new OpenEJBException("PersistenceUnit '" + contextInfo.unitId + "' not found for EXTENDED ref '" + contextInfo.referenceName + "'");
}
- final JtaEntityManager jtaEntityManager = new JtaEntityManager(contextInfo.persistenceUnitName, jtaEntityManagerRegistry, factory, contextInfo.properties, contextInfo.extended);
+ final JtaEntityManager jtaEntityManager = new JtaEntityManager(
+ contextInfo.persistenceUnitName, jtaEntityManagerRegistry, factory, contextInfo.properties, contextInfo.extended, contextInfo.synchronizationType);
final Reference reference = new PersistenceContextReference(jtaEntityManager);
bindings.put(normalize(contextInfo.referenceName), reference);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/dc66eb50/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceContextReferenceInfo.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceContextReferenceInfo.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceContextReferenceInfo.java
index 00b98dd..2a68748 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceContextReferenceInfo.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceContextReferenceInfo.java
@@ -26,6 +26,7 @@ public class PersistenceContextReferenceInfo extends InjectableInfo {
public String persistenceUnitName;
public String unitId;
public boolean extended;
+ public String synchronizationType;
public final Properties properties = new Properties();
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/dc66eb50/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
index 2b57c46..223a2d3 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/JndiEncInfoBuilder.java
@@ -269,6 +269,7 @@ public class JndiEncInfoBuilder {
final PersistenceContextReferenceInfo info = new PersistenceContextReferenceInfo();
info.referenceName = contextRef.getPersistenceContextRefName();
info.persistenceUnitName = contextRef.getPersistenceUnitName();
+ info.synchronizationType = contextRef.getPersistenceContextSynchronization() != null ? contextRef.getPersistenceContextSynchronization().name() : null;
info.unitId = contextRef.getMappedName();
info.location = buildLocationInfo(contextRef);
info.extended = contextRef.getPersistenceContextType() == PersistenceContextType.EXTENDED;
http://git-wip-us.apache.org/repos/asf/tomee/blob/dc66eb50/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java b/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
index e5bfced..deac5a0 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManager.java
@@ -32,6 +32,7 @@ import javax.persistence.FlushModeType;
import javax.persistence.LockModeType;
import javax.persistence.Query;
import javax.persistence.StoredProcedureQuery;
+import javax.persistence.SynchronizationType;
import javax.persistence.TransactionRequiredException;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
@@ -44,6 +45,7 @@ import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -76,15 +78,18 @@ public class JtaEntityManager implements EntityManager, Serializable {
private final EntityManagerFactory entityManagerFactory;
private final Map properties;
private final boolean extended;
+ private final SynchronizationType synchronizationType;
private final String unitName;
private final Logger logger;
private final boolean wrapNoTxQueries;
- public JtaEntityManager(final JtaEntityManagerRegistry registry, final EntityManagerFactory entityManagerFactory, final Map properties, final String unitName) {
- this(unitName, registry, entityManagerFactory, properties, false);
+ public JtaEntityManager(final JtaEntityManagerRegistry registry, final EntityManagerFactory entityManagerFactory,
+ final Map properties, final String unitName, final String synchronizationType) {
+ this(unitName, registry, entityManagerFactory, properties, false, synchronizationType);
}
- public JtaEntityManager(final String unitName, final JtaEntityManagerRegistry registry, final EntityManagerFactory entityManagerFactory, final Map properties, final boolean extended) {
+ public JtaEntityManager(final String unitName, final JtaEntityManagerRegistry registry, final EntityManagerFactory entityManagerFactory,
+ final Map properties, final boolean extended, final String synchronizationType) {
if (registry == null) {
throw new NullPointerException("registry is null");
}
@@ -96,6 +101,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
this.entityManagerFactory = entityManagerFactory;
this.properties = properties;
this.extended = extended;
+ this.synchronizationType = synchronizationType == null ? null : SynchronizationType.valueOf(synchronizationType.toUpperCase(Locale.ENGLISH));
logger = unitName == null ? baseLogger : baseLogger.getChildLogger(unitName);
final String wrapConfig = ReloadableEntityManagerFactory.class.isInstance(entityManagerFactory) ?
ReloadableEntityManagerFactory.class.cast(entityManagerFactory).getUnitProperties().getProperty("openejb.jpa.query.wrap-no-tx", "true") : "true";
@@ -103,7 +109,7 @@ public class JtaEntityManager implements EntityManager, Serializable {
}
EntityManager getEntityManager() {
- return registry.getEntityManager(entityManagerFactory, properties, extended, unitName);
+ return registry.getEntityManager(entityManagerFactory, properties, extended, unitName, synchronizationType);
}
boolean isTransactionActive() {
http://git-wip-us.apache.org/repos/asf/tomee/blob/dc66eb50/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java b/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java
index c87c00e..082303b 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java
@@ -24,6 +24,7 @@ import org.apache.openejb.util.Logger;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
+import javax.persistence.SynchronizationType;
import javax.persistence.TransactionRequiredException;
import javax.transaction.Status;
import javax.transaction.Synchronization;
@@ -81,7 +82,9 @@ public class JtaEntityManagerRegistry {
* instance already registered
*/
@Geronimo
- public EntityManager getEntityManager(final EntityManagerFactory entityManagerFactory, final Map properties, final boolean extended, final String unitName) throws IllegalStateException {
+ public EntityManager getEntityManager(final EntityManagerFactory entityManagerFactory,
+ final Map properties, final boolean extended, final String unitName,
+ final SynchronizationType synchronizationType) throws IllegalStateException {
if (entityManagerFactory == null) {
throw new NullPointerException("entityManagerFactory is null");
}
@@ -106,7 +109,9 @@ public class JtaEntityManagerRegistry {
// if transaction is active, we need to register the entity manager with the transaction manager
if (transactionActive) {
- entityManager.joinTransaction();
+ if (synchronizationType != SynchronizationType.UNSYNCHRONIZED) {
+ entityManager.joinTransaction();
+ }
transactionRegistry.putResource(txKey, entityManager);
}
@@ -115,7 +120,13 @@ public class JtaEntityManagerRegistry {
// create a new entity manager
final EntityManager entityManager;
- if (properties != null) {
+ if (synchronizationType != null) {
+ if (properties != null) {
+ entityManager = entityManagerFactory.createEntityManager(synchronizationType, properties);
+ } else {
+ entityManager = entityManagerFactory.createEntityManager(synchronizationType);
+ }
+ } else if (properties != null) {
entityManager = entityManagerFactory.createEntityManager(properties);
} else {
entityManager = entityManagerFactory.createEntityManager();
http://git-wip-us.apache.org/repos/asf/tomee/blob/dc66eb50/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/PersistenceContextRef$JAXB.java
----------------------------------------------------------------------
diff --git a/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/PersistenceContextRef$JAXB.java b/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/PersistenceContextRef$JAXB.java
index a636776..8850bf3 100644
--- a/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/PersistenceContextRef$JAXB.java
+++ b/container/openejb-jee-accessors/src/main/java/org/apache/openejb/jee/PersistenceContextRef$JAXB.java
@@ -146,6 +146,12 @@ public class PersistenceContextRef$JAXB
if (persistenceContextType != null) {
persistenceContextRef.persistenceContextType = persistenceContextType;
}
+ } else if (("persistence-context-synchronization" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
+ // ELEMENT: persistenceContextType
+ final PersistenceContextSynchronization synchronization = parsePersistenceContextSynchronization(elementReader, context, elementReader.getElementAsString());
+ if (synchronization != null) {
+ persistenceContextRef.persistenceContextSynchronization = synchronization;
+ }
} else if (("persistence-property" == elementReader.getLocalName()) && ("http://java.sun.com/xml/ns/javaee" == elementReader.getNamespaceURI())) {
// ELEMENT: persistenceProperty
final Property persistencePropertyItem = readProperty(elementReader, context);
@@ -372,4 +378,15 @@ public class PersistenceContextRef$JAXB
context.afterMarshal(persistenceContextRef, LifecycleCallback.NONE);
}
+ // should be in PersistenceContextSynchronization$JAXB but no need to generate the full sxc bean since we only need it here for now
+ public static PersistenceContextSynchronization parsePersistenceContextSynchronization(final XoXMLStreamReader reader, final RuntimeContext context, final String value)
+ throws Exception {
+ if ("Synchronized".equals(value)) {
+ return PersistenceContextSynchronization.SYNCHRONIZED;
+ } else if ("Unsynchronized".equals(value)) {
+ return PersistenceContextSynchronization.UNSYNCHRONIZED;
+ }
+ context.unexpectedEnumValue(reader, PersistenceContextType.class, value, "Synchronized", "Unsynchronized");
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/dc66eb50/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextRef.java
----------------------------------------------------------------------
diff --git a/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextRef.java b/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextRef.java
index 5912fe2..b664fa4 100644
--- a/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextRef.java
+++ b/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextRef.java
@@ -80,6 +80,8 @@ public class PersistenceContextRef implements JndiReference, PersistenceRef {
protected String persistenceUnitName;
@XmlElement(name = "persistence-context-type")
protected PersistenceContextType persistenceContextType;
+ @XmlElement(name = "persistence-context-synchronization")
+ protected PersistenceContextSynchronization persistenceContextSynchronization;
@XmlElement(name = "persistence-property", required = true)
protected List<Property> persistenceProperty;
@XmlElement(name = "mapped-name")
@@ -212,6 +214,14 @@ public class PersistenceContextRef implements JndiReference, PersistenceRef {
this.persistenceContextType = value;
}
+ public PersistenceContextSynchronization getPersistenceContextSynchronization() {
+ return persistenceContextSynchronization;
+ }
+
+ public void setPersistenceContextSynchronization(PersistenceContextSynchronization persistenceContextSynchronization) {
+ this.persistenceContextSynchronization = persistenceContextSynchronization;
+ }
+
public List<Property> getPersistenceProperty() {
if (persistenceProperty == null) {
persistenceProperty = new ArrayList<Property>();
http://git-wip-us.apache.org/repos/asf/tomee/blob/dc66eb50/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextSynchronization.java
----------------------------------------------------------------------
diff --git a/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextSynchronization.java b/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextSynchronization.java
new file mode 100644
index 0000000..b90cf70
--- /dev/null
+++ b/container/openejb-jee/src/main/java/org/apache/openejb/jee/PersistenceContextSynchronization.java
@@ -0,0 +1,26 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.openejb.jee;
+
+import javax.xml.bind.annotation.XmlEnumValue;
+
+public enum PersistenceContextSynchronization {
+ @XmlEnumValue("Synchronized")SYNCHRONIZED,
+ @XmlEnumValue("Unsynchronized")UNSYNCHRONIZED;
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/dc66eb50/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
index 8baa4e4..cb8c774 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
@@ -557,7 +557,7 @@ public class TomcatJndiBuilder {
}
final JtaEntityManagerRegistry jtaEntityManagerRegistry = SystemInstance.get().getComponent(JtaEntityManagerRegistry.class);
- setResource(resource, new JtaEntityManager(ref.persistenceUnitName, jtaEntityManagerRegistry, factory, ref.properties, ref.extended));
+ setResource(resource, new JtaEntityManager(ref.persistenceUnitName, jtaEntityManagerRegistry, factory, ref.properties, ref.extended, ref.synchronizationType));
}
if (addEntry) {
[2/2] tomee git commit: synchronization for persistence unit from
@PersistenceContext
Posted by rm...@apache.org.
synchronization for persistence unit from @PersistenceContext
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/3bf595f3
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3bf595f3
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3bf595f3
Branch: refs/heads/master
Commit: 3bf595f3c045a5d1644d99b5cff07933c3b24fc0
Parents: dc66eb5
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Apr 8 00:12:27 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Apr 8 00:12:27 2015 +0200
----------------------------------------------------------------------
.../org/apache/openejb/config/AnnotationDeployer.java | 7 +++++++
.../apache/openejb/config/PersistenceContextAnn.java | 2 ++
.../openejb/config/PersistenceContextAnnFactory.java | 14 ++++++++++++++
3 files changed, 23 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/3bf595f3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
index f4713bf..c47e3b1 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
@@ -84,6 +84,7 @@ import org.apache.openejb.jee.NamedMethod;
import org.apache.openejb.jee.OutboundResourceAdapter;
import org.apache.openejb.jee.ParamValue;
import org.apache.openejb.jee.PersistenceContextRef;
+import org.apache.openejb.jee.PersistenceContextSynchronization;
import org.apache.openejb.jee.PersistenceContextType;
import org.apache.openejb.jee.PersistenceUnitRef;
import org.apache.openejb.jee.PortComponent;
@@ -4555,6 +4556,9 @@ public class AnnotationDeployer implements DynamicDeployer {
PersistenceContextRef persistenceContextRef = consumer.getPersistenceContextRefMap().get(refName);
if (persistenceContextRef == null) {
persistenceContextRef = new PersistenceContextRef();
+ if (persistenceContext.synchronization() != null) { // should be the case in "normal" deployments
+ persistenceContextRef.setPersistenceContextSynchronization(PersistenceContextSynchronization.valueOf(persistenceContext.synchronization().toUpperCase(Locale.ENGLISH)));
+ }
persistenceContextRef.setPersistenceUnitName(persistenceContext.unitName());
persistenceContextRef.setPersistenceContextRefName(refName);
if ("EXTENDED".equalsIgnoreCase(persistenceContext.type())) {
@@ -4574,6 +4578,9 @@ public class AnnotationDeployer implements DynamicDeployer {
persistenceContextRef.setPersistenceContextType(PersistenceContextType.TRANSACTION);
}
}
+ if (persistenceContextRef.getPersistenceContextSynchronization() == null && persistenceContext.synchronization() != null) {
+ persistenceContextRef.setPersistenceContextSynchronization(PersistenceContextSynchronization.valueOf(persistenceContext.synchronization().toUpperCase(Locale.ENGLISH)));
+ }
}
List<Property> persistenceProperties = persistenceContextRef.getPersistenceProperty();
http://git-wip-us.apache.org/repos/asf/tomee/blob/3bf595f3/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnn.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnn.java b/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnn.java
index de59f66..aaf70b8 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnn.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnn.java
@@ -22,6 +22,8 @@ import java.util.Map;
public interface PersistenceContextAnn {
String name();
+ String synchronization();
+
String unitName();
String type();
http://git-wip-us.apache.org/repos/asf/tomee/blob/3bf595f3/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java b/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java
index cc4bd61..ee9671c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/PersistenceContextAnnFactory.java
@@ -28,6 +28,7 @@ import org.apache.xbean.asm5.shade.commons.EmptyVisitor;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceProperty;
+import javax.persistence.SynchronizationType;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
@@ -112,6 +113,11 @@ public class PersistenceContextAnnFactory {
return persistenceContext.name();
}
+ @Override
+ public String synchronization() {
+ return persistenceContext.synchronization().name();
+ }
+
public String unitName() {
return persistenceContext.unitName();
}
@@ -140,12 +146,18 @@ public class PersistenceContextAnnFactory {
public String name;
public String unitName;
public String type;
+ public String synchronization = SynchronizationType.SYNCHRONIZED.name(); // default
public final Map<String, String> properties = new LinkedHashMap<String, String>();
public String name() {
return name;
}
+ @Override
+ public String synchronization() {
+ return synchronization;
+ }
+
public String unitName() {
return unitName;
}
@@ -261,6 +273,8 @@ public class PersistenceContextAnnFactory {
persistenceContext.unitName = value;
} else if ("type".equals(name)) {
persistenceContext.type = value;
+ } else if ("synchronization".equals(name)) {
+ persistenceContext.synchronization = value;
}
}