You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2015/03/07 13:26:29 UTC
olingo-odata2 git commit: [OLINGO-580] Support for JTA based
transaction
Repository: olingo-odata2
Updated Branches:
refs/heads/master 313bbbabe -> 83313c1c6
[OLINGO-580] Support for JTA based transaction
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/83313c1c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/83313c1c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/83313c1c
Branch: refs/heads/master
Commit: 83313c1c6b986f219390284606bf0be89abb9694
Parents: 313bbba
Author: Chandan V A <ch...@sap.com>
Authored: Sat Mar 7 17:55:55 2015 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sat Mar 7 17:55:55 2015 +0530
----------------------------------------------------------------------
.../jpa/processor/api/ODataJPAContext.java | 6 +-
.../processor/api/ODataJPAServiceFactory.java | 133 +++++++++----------
.../jpa/processor/core/ODataJPAContextImpl.java | 12 +-
.../core/ODataJPAProcessorDefault.java | 6 +-
.../core/ODataJPATransactionLocalDefault.java | 55 ++++++++
.../jpa/processor/core/access/data/JPALink.java | 20 +--
.../core/access/data/JPAProcessorImpl.java | 13 +-
.../core/ODataJPAProcessorDefaultTest.java | 2 +-
.../core/access/data/JPAProcessorImplTest.java | 2 +-
.../ODataJPATransactionLocalDefault.java | 54 --------
.../ref/web/JPAReferenceServiceFactory.java | 6 -
11 files changed, 150 insertions(+), 159 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAContext.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAContext.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAContext.java
index 0ec7ca7..373c2d7 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAContext.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAContext.java
@@ -229,8 +229,8 @@ public interface ODataJPAContext {
public JPAPaging getPaging();
/**
- * The transaction context
- * @return transaction context
+ * The method returns the ODataJPATransaction.
+ * @return ODataJPATransaction
*/
- public ODataJPATransaction getODataJpaTransaction();
+ public ODataJPATransaction getODataJPATransaction();
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAServiceFactory.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAServiceFactory.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAServiceFactory.java
index ba1248e..bb982b8 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAServiceFactory.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPAServiceFactory.java
@@ -84,6 +84,34 @@ public abstract class ODataJPAServiceFactory extends ODataServiceFactory {
private ODataJPATransaction oDataJPATransaction = null;
/**
+ * Implement this method and initialize OData JPA Context. It is mandatory
+ * to set an instance of type {@link javax.persistence.EntityManagerFactory} into the context. An exception of type
+ * {@link org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException} is thrown if
+ * EntityManagerFactory is not initialized. <br>
+ * <br>
+ * <b>Sample Code:</b> <code>
+ * <p>public class JPAReferenceServiceFactory extends ODataJPAServiceFactory{</p>
+ *
+ * <blockquote>private static final String PUNIT_NAME = "punit";
+ * <br>
+ * public ODataJPAContext initializeODataJPAContext() {
+ * <blockquote>ODataJPAContext oDataJPAContext = this.getODataJPAContext();
+ * <br>
+ * EntityManagerFactory emf = Persistence.createEntityManagerFactory(PUNIT_NAME);
+ * <br>
+ * oDataJPAContext.setEntityManagerFactory(emf);
+ * oDataJPAContext.setPersistenceUnitName(PUNIT_NAME);
+ * <br> return oDataJPAContext;</blockquote>
+ * }</blockquote>
+ * } </code>
+ * <p>
+ *
+ * @return an instance of type {@link org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext}
+ * @throws ODataJPARuntimeException
+ */
+ public abstract ODataJPAContext initializeODataJPAContext() throws ODataJPARuntimeException;
+
+ /**
* Creates an OData Service based on the values set in
* {@link org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext} and
* {@link org.apache.olingo.odata2.api.processor.ODataContext}.
@@ -114,42 +142,6 @@ public abstract class ODataJPAServiceFactory extends ODataServiceFactory {
return createODataSingleProcessorService(edmProvider, odataJPAProcessor);
}
- private void validatePreConditions() throws ODataJPARuntimeException {
-
- if (oDataJPAContext.getEntityManagerFactory() == null) {
- throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.ENTITY_MANAGER_NOT_INITIALIZED, null);
- }
-
- }
-
- /**
- * Implement this method and initialize OData JPA Context. It is mandatory
- * to set an instance of type {@link javax.persistence.EntityManagerFactory} into the context. An exception of type
- * {@link org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException} is thrown if
- * EntityManagerFactory is not initialized. <br>
- * <br>
- * <b>Sample Code:</b> <code>
- * <p>public class JPAReferenceServiceFactory extends ODataJPAServiceFactory{</p>
- *
- * <blockquote>private static final String PUNIT_NAME = "punit";
- * <br>
- * public ODataJPAContext initializeODataJPAContext() {
- * <blockquote>ODataJPAContext oDataJPAContext = this.getODataJPAContext();
- * <br>
- * EntityManagerFactory emf = Persistence.createEntityManagerFactory(PUNIT_NAME);
- * <br>
- * oDataJPAContext.setEntityManagerFactory(emf);
- * oDataJPAContext.setPersistenceUnitName(PUNIT_NAME);
- * <br> return oDataJPAContext;</blockquote>
- * }</blockquote>
- * } </code>
- * <p>
- *
- * @return an instance of type {@link org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext}
- * @throws ODataJPARuntimeException
- */
- public abstract ODataJPAContext initializeODataJPAContext() throws ODataJPARuntimeException;
-
/**
* @return an instance of type {@link ODataJPAContext}
* @throws ODataJPARuntimeException
@@ -165,29 +157,6 @@ public abstract class ODataJPAServiceFactory extends ODataServiceFactory {
}
- /**
- * The method sets the context whether a detail error message should be thrown
- * or a less detail error message should be thrown by the library.
- * @param setDetailErrors takes
- * <ul><li>true - to indicate that library should throw a detailed error message</li>
- * <li>false - to indicate that library should not throw a detailed error message</li>
- * </ul>
- *
- */
- protected void setDetailErrors(final boolean setDetailErrors) {
- this.setDetailErrors = setDetailErrors;
- }
-
- /**
- * The methods sets the context with a callback implementation for JPA provider specific content.
- * For details refer to {@link org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent}
- * @param onJPAWriteContent is an instance of type
- * {@link org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent}
- */
- protected void setOnWriteJPAContent(final OnJPAWriteContent onJPAWriteContent) {
- this.onJPAWriteContent = onJPAWriteContent;
- }
-
@SuppressWarnings("unchecked")
@Override
public <T extends ODataCallback> T getCallback(final Class<? extends ODataCallback> callbackInterface) {
@@ -196,21 +165,27 @@ public abstract class ODataJPAServiceFactory extends ODataServiceFactory {
return (T) new ODataJPAErrorCallback();
}
}
-
if (onJPAWriteContent != null) {
if (callbackInterface.isAssignableFrom(OnJPAWriteContent.class)) {
return (T) onJPAWriteContent;
}
}
-
- if (oDataJPATransaction != null) {
- if (callbackInterface.isAssignableFrom(ODataJPATransaction.class)) {
- return (T) oDataJPATransaction;
- }
+ if (oDataJPATransaction != null) {
+ if (callbackInterface.isAssignableFrom(ODataJPATransaction.class)) {
+ return (T) oDataJPATransaction;
}
+ }
+ return null;
+ }
-
- return null;
+ /**
+ * The methods sets the context with a callback implementation for JPA provider specific content.
+ * For details refer to {@link org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent}
+ * @param onJPAWriteContent is an instance of type
+ * {@link org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent}
+ */
+ protected void setOnWriteJPAContent(final OnJPAWriteContent onJPAWriteContent) {
+ this.onJPAWriteContent = onJPAWriteContent;
}
/**
@@ -220,15 +195,27 @@ public abstract class ODataJPAServiceFactory extends ODataServiceFactory {
* {@link org.apache.olingo.odata2.jpa.processor.api.ODataJPATransaction}
*/
protected void setODataJPATransaction(final ODataJPATransaction oDataJPATransaction) {
- this.oDataJPATransaction = oDataJPATransaction;
+ this.oDataJPATransaction = oDataJPATransaction;
}
/**
- * Simple method to retrieve the current ODataJPATransactionContext optimized for fast access
- *
- * @return the current ODataJPATransaction
+ * The method sets the context whether a detail error message should be thrown
+ * or a less detail error message should be thrown by the library.
+ * @param setDetailErrors takes
+ * <ul><li>true - to indicate that library should throw a detailed error message</li>
+ * <li>false - to indicate that library should not throw a detailed error message</li>
+ * </ul>
+ *
*/
- public ODataJPATransaction getDataJPATransaction() {
- return oDataJPATransaction;
+ protected void setDetailErrors(final boolean setDetailErrors) {
+ this.setDetailErrors = setDetailErrors;
+ }
+
+ private void validatePreConditions() throws ODataJPARuntimeException {
+
+ if (oDataJPAContext.getEntityManagerFactory() == null) {
+ throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.ENTITY_MANAGER_NOT_INITIALIZED, null);
+ }
+
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAContextImpl.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAContextImpl.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAContextImpl.java
index 66d0ff0..0da67e1 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAContextImpl.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAContextImpl.java
@@ -43,6 +43,7 @@ public class ODataJPAContextImpl implements ODataJPAContext {
private JPAPaging jpaPaging;
private static final ThreadLocal<ODataContext> oDataContextThreadLocal = new ThreadLocal<ODataContext>();
private boolean defaultNaming = true;
+ private ODataJPATransaction transaction = null;
@Override
public String getPersistenceUnitName() {
@@ -169,7 +170,14 @@ public class ODataJPAContextImpl implements ODataJPAContext {
}
@Override
- public ODataJPATransaction getODataJpaTransaction() {
- return odataContext.getServiceFactory().getCallback(ODataJPATransaction.class);
+ public ODataJPATransaction getODataJPATransaction() {
+ if (transaction == null) {
+ transaction = odataContext.getServiceFactory().getCallback(ODataJPATransaction.class);
+ // Fallback to RESOURCE_LOCAL based transaction
+ if (transaction == null) {
+ transaction = new ODataJPATransactionLocalDefault(getEntityManager());
+ }
+ }
+ return transaction;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefault.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefault.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefault.java
index 2d4e37e..2bc2635 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefault.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefault.java
@@ -264,21 +264,21 @@ public class ODataJPAProcessorDefault extends ODataJPAProcessor {
throws ODataException {
List<ODataResponse> responses = new ArrayList<ODataResponse>();
try {
- oDataJPAContext.getODataJpaTransaction().begin();
+ oDataJPAContext.getODataJPATransaction().begin();
for (ODataRequest request : requests) {
oDataJPAContext.setODataContext(getContext());
ODataResponse response = handler.handleRequest(request);
if (response.getStatus().getStatusCode() >= HttpStatusCodes.BAD_REQUEST.getStatusCode()) {
// Rollback
- oDataJPAContext.getODataJpaTransaction().rollback();
+ oDataJPAContext.getODataJPATransaction().rollback();
List<ODataResponse> errorResponses = new ArrayList<ODataResponse>(1);
errorResponses.add(response);
return BatchResponsePart.responses(errorResponses).changeSet(false).build();
}
responses.add(response);
}
- oDataJPAContext.getODataJpaTransaction().commit();
+ oDataJPAContext.getODataJPATransaction().commit();
return BatchResponsePart.responses(responses).changeSet(true).build();
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPATransactionLocalDefault.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPATransactionLocalDefault.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPATransactionLocalDefault.java
new file mode 100644
index 0000000..532764c
--- /dev/null
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPATransactionLocalDefault.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * 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.olingo.odata2.jpa.processor.core;
+
+import org.apache.olingo.odata2.jpa.processor.api.ODataJPATransaction;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+
+public class ODataJPATransactionLocalDefault implements ODataJPATransaction {
+
+ private EntityTransaction tx = null;
+
+ public ODataJPATransactionLocalDefault(EntityManager em) {
+ this.tx = em.getTransaction();
+ }
+
+ @Override
+ public void begin() {
+ if (!isActive()) {
+ tx.begin();
+ }
+ }
+
+ @Override
+ public void commit() {
+ tx.commit();
+ }
+
+ @Override
+ public void rollback() {
+ tx.rollback();
+ }
+
+ @Override
+ public boolean isActive() {
+ return tx.isActive();
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPALink.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPALink.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPALink.java
index 7e3ae73..72e32df 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPALink.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPALink.java
@@ -149,19 +149,21 @@ public class JPALink {
public void save() {
EntityManager em = context.getEntityManager();
- ODataJPATransaction tx = context.getODataJpaTransaction();
+ ODataJPATransaction tx = context.getODataJPATransaction();
+ boolean isLocalTransaction = false;
if (!tx.isActive()) {
tx.begin();
- if (sourceJPAEntity != null) {
- em.persist(sourceJPAEntity);
- }
- if (targetJPAEntity != null) {
- em.persist(targetJPAEntity);
- em.flush();
- }
+ isLocalTransaction = true;
+ }
+ if (sourceJPAEntity != null) {
+ em.persist(sourceJPAEntity);
+ }
+ if (targetJPAEntity != null) {
+ em.persist(targetJPAEntity);
+ }
+ if (isLocalTransaction && (em.contains(sourceJPAEntity) || em.contains(targetJPAEntity))) {
tx.commit();
}
-
}
public void create(final EdmEntitySet entitySet, final ODataEntry oDataEntry,
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
index ef4d9dc..477edff 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
@@ -355,7 +355,7 @@ public class JPAProcessorImpl implements JPAProcessor {
em.remove(selectedObject);
em.flush();
if (isLocalTransaction) {
- oDataJPAContext.getODataJpaTransaction().commit();
+ oDataJPAContext.getODataJPATransaction().commit();
}
} catch (Exception e) {
@@ -456,7 +456,7 @@ public class JPAProcessorImpl implements JPAProcessor {
em.persist(jpaEntity);
if (em.contains(jpaEntity)) {
if (isLocalTransaction) {
- oDataJPAContext.getODataJpaTransaction().commit();
+ oDataJPAContext.getODataJPATransaction().commit();
}
return jpaEntity;
}
@@ -507,7 +507,7 @@ public class JPAProcessorImpl implements JPAProcessor {
}
em.flush();
if (isLocalTransaction) {
- oDataJPAContext.getODataJpaTransaction().commit();
+ oDataJPAContext.getODataJPATransaction().commit();
}
} catch (Exception e) {
throw ODataJPARuntimeException.throwException(
@@ -572,12 +572,11 @@ public class JPAProcessorImpl implements JPAProcessor {
}
private boolean setTransaction() {
- ODataJPATransaction transactionContext = oDataJPAContext.getODataJpaTransaction();
- if (!transactionContext.isActive()) {
- transactionContext.begin();
+ ODataJPATransaction transaction = oDataJPAContext.getODataJPATransaction();
+ if (!transaction.isActive()) {
+ transaction.begin();
return true;
}
-
return false;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java
index 195559e..ba43d37 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java
@@ -321,7 +321,7 @@ public class ODataJPAProcessorDefaultTest extends JPAEdmTestModelView {
ODataJPAContext odataJPAContext = EasyMock.createMock(ODataJPAContext.class);
EasyMock.expect(odataJPAContext.getPersistenceUnitName()).andStubReturn("salesorderprocessing");
EasyMock.expect(odataJPAContext.getEntityManagerFactory()).andStubReturn(mockEntityManagerFactory());
- EasyMock.expect(odataJPAContext.getODataJpaTransaction()).andStubReturn(getLocalJpaTransaction());
+ EasyMock.expect(odataJPAContext.getODataJPATransaction()).andStubReturn(getLocalJpaTransaction());
EasyMock.expect(odataJPAContext.getODataContext()).andStubReturn(getLocalODataContext());
odataJPAContext.setODataContext((ODataContext) EasyMock.anyObject());
EasyMock.expectLastCall().anyTimes();
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImplTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImplTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImplTest.java
index 05afa5f..01e726d 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImplTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImplTest.java
@@ -286,7 +286,7 @@ public class JPAProcessorImplTest {
ODataJPAContext odataJPAContext = EasyMock.createMock(ODataJPAContext.class);
EasyMock.expect(odataJPAContext.getPersistenceUnitName()).andStubReturn("salesorderprocessing");
EasyMock.expect(odataJPAContext.getEntityManagerFactory()).andStubReturn(mockEntityManagerFactory());
- EasyMock.expect(odataJPAContext.getODataJpaTransaction()).andStubReturn(getLocalJpaTransaction());
+ EasyMock.expect(odataJPAContext.getODataJPATransaction()).andStubReturn(getLocalJpaTransaction());
EasyMock.expect(odataJPAContext.getODataContext()).andStubReturn(getLocalODataContext());
EasyMock.expect(odataJPAContext.getEntityManager()).andStubReturn(getLocalEntityManager());
EasyMock.expect(odataJPAContext.getPageSize()).andReturn(10).anyTimes();
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/extension/ODataJPATransactionLocalDefault.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/extension/ODataJPATransactionLocalDefault.java b/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/extension/ODataJPATransactionLocalDefault.java
deleted file mode 100644
index 9291962..0000000
--- a/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/extension/ODataJPATransactionLocalDefault.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * 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.olingo.odata2.jpa.processor.ref.extension;
-
-
-import org.apache.olingo.odata2.jpa.processor.api.ODataJPATransaction;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityTransaction;
-
-public class ODataJPATransactionLocalDefault implements ODataJPATransaction {
-
- private EntityTransaction tx = null;
-
- public ODataJPATransactionLocalDefault(EntityManager em) {
- this.tx = em.getTransaction();
- }
-
- @Override
- public void begin() {
- tx.begin();
- }
-
- @Override
- public void commit() {
- tx.commit();
- }
-
- @Override
- public void rollback() {
- tx.rollback();
- }
-
- @Override
- public boolean isActive() {
- return tx.isActive();
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/83313c1c/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java b/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
index 9452535..c264f70 100644
--- a/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
+++ b/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
@@ -24,8 +24,6 @@ import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext;
import org.apache.olingo.odata2.jpa.processor.api.ODataJPAServiceFactory;
import org.apache.olingo.odata2.jpa.processor.api.OnJPAWriteContent;
import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;
-import org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmExtension;
-import org.apache.olingo.odata2.jpa.processor.ref.extension.ODataJPATransactionLocalDefault;
import org.apache.olingo.odata2.jpa.processor.ref.extension.OnDBWriteContent;
import org.apache.olingo.odata2.jpa.processor.ref.extension.SalesOrderProcessingExtension;
import org.apache.olingo.odata2.jpa.processor.ref.factory.JPAEntityManagerFactory;
@@ -50,10 +48,6 @@ public class JPAReferenceServiceFactory extends ODataJPAServiceFactory {
oDataJPAContext.setDefaultNaming(false);
setErrorLevel();
setOnWriteJPAContent(onDBWriteContent);
- if(getDataJPATransaction() == null) {
- setODataJPATransaction(new ODataJPATransactionLocalDefault(getODataJPAContext().getEntityManager()));
- }
-
return oDataJPAContext;
}