You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by sk...@apache.org on 2014/01/17 15:10:59 UTC
[17/22] git commit: [OLINGO-51] Handle in Inline Entries -
deep insert cases
[OLINGO-51] Handle <links> in Inline Entries - deep insert cases
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/commit/6c8c2db5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/tree/6c8c2db5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/diff/6c8c2db5
Branch: refs/heads/olingo-117
Commit: 6c8c2db5f171274532abb03425d8df4c4e7c45c0
Parents: 0244da6
Author: Chandan V A <ch...@sap.com>
Authored: Wed Jan 15 17:37:34 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Wed Jan 15 17:37:34 2014 +0530
----------------------------------------------------------------------
.../jpa/processor/core/ODataEntityParser.java | 2 +-
.../processor/core/access/data/JPAEntity.java | 10 +++-
.../jpa/processor/core/access/data/JPALink.java | 50 ++++++++++++--------
.../core/access/data/JPAProcessorImpl.java | 4 +-
.../core/access/data/JPAEntityTest.java | 13 ++---
.../core/mock/ODataJPAContextMock.java | 9 ++++
.../core/mock/data/ODataEntryMockUtil.java | 13 +++--
.../jpa/processor/ref/model/Customer.java | 3 +-
8 files changed, 67 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6c8c2db5/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataEntityParser.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataEntityParser.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataEntityParser.java
index 0da3bcd..78bd1bc 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataEntityParser.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataEntityParser.java
@@ -135,7 +135,7 @@ public final class ODataEntityParser {
return uriInfo;
}
- public UriInfo parseBindingLink(final String link, final Map<String, String> options)
+ public UriInfo parseBindingLink(final String link, final Map<String, String> options)
throws ODataJPARuntimeException {
final PathSegment pathSegment = getPathSegment(link);
UriInfo uriInfo = null;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6c8c2db5/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
index 64b6f92..f6cf6c1 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
@@ -38,6 +38,7 @@ import org.apache.olingo.odata2.api.edm.EdmTypeKind;
import org.apache.olingo.odata2.api.edm.EdmTyped;
import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
+import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext;
import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;
import org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmMapping;
@@ -49,11 +50,14 @@ public class JPAEntity {
private Class<?> jpaType = null;
private HashMap<String, Method> accessModifiersWrite = null;
private JPAEntityParser jpaEntityParser = null;
+ private ODataJPAContext oDataJPAContext;
public HashMap<EdmNavigationProperty, EdmEntitySet> inlinedEntities = null;
- public JPAEntity(final EdmEntityType oDataEntityType, final EdmEntitySet oDataEntitySet) {
+ public JPAEntity(final EdmEntityType oDataEntityType, final EdmEntitySet oDataEntitySet,
+ final ODataJPAContext context) {
this.oDataEntityType = oDataEntityType;
this.oDataEntitySet = oDataEntitySet;
+ oDataJPAContext = context;
try {
JPAEdmMapping mapping = (JPAEdmMapping) oDataEntityType.getMapping();
jpaType = mapping.getJPAType();
@@ -151,10 +155,12 @@ public class JPAEntity {
EdmEntitySet edmRelatedEntitySet = oDataEntitySet.getRelatedEntitySet(navProperty);
List<ODataEntry> relatedEntries = (List<ODataEntry>) oDataEntryProperties.get(propertyName);
Collection<Object> relatedJPAEntites = instantiateRelatedJPAEntities(jpaEntity, navProperty);
- JPAEntity relatedEntity = new JPAEntity((EdmEntityType) structuralType, edmRelatedEntitySet);
+ JPAEntity relatedEntity = new JPAEntity((EdmEntityType) structuralType, edmRelatedEntitySet, oDataJPAContext);
for (ODataEntry oDataEntry : relatedEntries) {
relatedEntity.create(oDataEntry);
relatedJPAEntites.add(relatedEntity.getJPAEntity());
+ JPALink link = new JPALink(oDataJPAContext);
+ link.create(edmRelatedEntitySet, oDataEntry);
}
switch (navProperty.getMultiplicity()) {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6c8c2db5/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 f3b821b..18b5664 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
@@ -147,24 +147,24 @@ public class JPALink {
}
}
- private void delinkJPAEntities(final Object targetJPAEntity,
+ private void delinkJPAEntities(final Object jpaEntity,
final List<Object> relatedJPAEntities,
final EdmNavigationProperty targetNavigationProperty)
throws ODataJPARuntimeException {
try {
JPAEntityParser entityParser = new JPAEntityParser();
- Method setMethod = entityParser.getAccessModifier(targetJPAEntity,
+ Method setMethod = entityParser.getAccessModifier(jpaEntity,
targetNavigationProperty, JPAEntityParser.ACCESS_MODIFIER_SET);
- Method getMethod = entityParser.getAccessModifier(targetJPAEntity,
+ Method getMethod = entityParser.getAccessModifier(jpaEntity,
targetNavigationProperty, JPAEntityParser.ACCESS_MODIFIER_GET);
if (getMethod.getReturnType().getTypeParameters() != null
&& getMethod.getReturnType().getTypeParameters().length != 0) {
- setMethod.invoke(targetJPAEntity, relatedJPAEntities);
+ setMethod.invoke(jpaEntity, relatedJPAEntities);
} else {
- setMethod.invoke(targetJPAEntity, (Object) null);
+ setMethod.invoke(jpaEntity, (Object) null);
}
} catch (IllegalAccessException e) {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.INNER_EXCEPTION, e);
@@ -192,10 +192,32 @@ public class JPALink {
}
+ public void create(final EdmEntitySet entitySet, final ODataEntry oDataEntry) throws ODataJPARuntimeException,
+ ODataJPAModelException {
+ List<String> navPropertyNames;
+ try {
+ navPropertyNames = entitySet.getEntityType().getNavigationPropertyNames();
+ for (String navPropertyName : navPropertyNames) {
+ List<String> links = oDataEntry.getMetadata().getAssociationUris(navPropertyName);
+ if (links != null && links.isEmpty() == false) {
+ for (String link : links) {
+ UriInfo bindingUriInfo = parser.parseBindingLink(link, new HashMap<String, String>());
+ targetJPAEntity = jpaProcessor.process((GetEntityUriInfo) bindingUriInfo);
+ linkJPAEntities(targetJPAEntity, sourceJPAEntity, (EdmNavigationProperty) entitySet.getEntityType()
+ .getProperty(
+ navPropertyName));
+ }
+ }
+ }
+ } catch (EdmException e) {
+ throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()), e);
+ }
+
+ }
+
public void create(final PostUriInfo uriInfo, final ODataEntry oDataEntry) throws ODataJPARuntimeException,
ODataJPAModelException {
try {
- EdmEntitySet targetEntitySet = uriInfo.getTargetEntitySet();
int index = context.getODataContext().getPathInfo().getODataSegments().size() - 2;
UriInfo parsedUriInfo = parser.parseURISegment(index, index + 1);
Object targetJPAEntity = null;
@@ -210,22 +232,8 @@ public class JPALink {
.getNavigationProperty());
}
- List<String> navPropertyNames;
- navPropertyNames = targetEntitySet.getEntityType().getNavigationPropertyNames();
-
- for (String navPropertyName : navPropertyNames) {
- List<String> links = oDataEntry.getMetadata().getAssociationUris(navPropertyName);
- if (links != null && links.isEmpty() == false) {
- for (String link : links) {
- UriInfo bindingUriInfo = parser.parseBindingLink(link, new HashMap<String, String>());
- targetJPAEntity = jpaProcessor.process((GetEntityUriInfo) bindingUriInfo);
+ create(uriInfo.getTargetEntitySet(), oDataEntry);
- linkJPAEntities(targetJPAEntity, sourceJPAEntity, (EdmNavigationProperty) targetEntitySet.getEntityType()
- .getProperty(
- navPropertyName));
- }
- }
- }
} catch (EdmException e) {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()), e);
} catch (ODataException e) {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6c8c2db5/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 9a5b101..1a8a0f0 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
@@ -305,7 +305,7 @@ public class JPAProcessorImpl implements JPAProcessor {
final EdmEntitySet oDataEntitySet = createView.getTargetEntitySet();
final EdmEntityType oDataEntityType = oDataEntitySet.getEntityType();
- final JPAEntity virtualJPAEntity = new JPAEntity(oDataEntityType, oDataEntitySet);
+ final JPAEntity virtualJPAEntity = new JPAEntity(oDataEntityType, oDataEntitySet, oDataJPAContext);
final List<Object> createList = new ArrayList<Object>();
Object jpaEntity = null;
@@ -368,7 +368,7 @@ public class JPAProcessorImpl implements JPAProcessor {
final EdmEntitySet oDataEntitySet = updateView.getTargetEntitySet();
final EdmEntityType oDataEntityType = oDataEntitySet.getEntityType();
- final JPAEntity virtualJPAEntity = new JPAEntity(oDataEntityType, oDataEntitySet);
+ final JPAEntity virtualJPAEntity = new JPAEntity(oDataEntityType, oDataEntitySet, oDataJPAContext);
virtualJPAEntity.setJPAEntity(jpaEntity);
if (content != null) {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6c8c2db5/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityTest.java
index 6b81805..caf3167 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityTest.java
@@ -28,6 +28,7 @@ import org.apache.olingo.odata2.api.edm.EdmEntityType;
import org.apache.olingo.odata2.api.edm.EdmException;
import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;
import org.apache.olingo.odata2.jpa.processor.core.common.ODataJPATestConstants;
+import org.apache.olingo.odata2.jpa.processor.core.mock.ODataJPAContextMock;
import org.apache.olingo.odata2.jpa.processor.core.mock.data.EdmMockUtilV2;
import org.apache.olingo.odata2.jpa.processor.core.mock.data.JPATypeMock;
import org.apache.olingo.odata2.jpa.processor.core.mock.data.JPATypeMock.JPARelatedTypeMock;
@@ -46,7 +47,7 @@ public class JPAEntityTest {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, true);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
- jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
+ jpaEntity = new JPAEntity(edmEntityType, edmEntitySet, null);
jpaEntity.create(ODataEntryMockUtil.mockODataEntryWithComplexType(JPATypeMock.ENTITY_NAME));
} catch (ODataJPARuntimeException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
@@ -75,7 +76,7 @@ public class JPAEntityTest {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, false);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
- jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
+ jpaEntity = new JPAEntity(edmEntityType, edmEntitySet, null);
jpaEntity.create(ODataEntryMockUtil.mockODataEntry(JPATypeMock.ENTITY_NAME));
} catch (ODataJPARuntimeException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
@@ -96,7 +97,7 @@ public class JPAEntityTest {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, false);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
- jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
+ jpaEntity = new JPAEntity(edmEntityType, edmEntitySet, ODataJPAContextMock.mockODataJPAContext());
jpaEntity.create(ODataEntryMockUtil.mockODataEntryWithInline(JPATypeMock.ENTITY_NAME));
} catch (ODataJPARuntimeException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
@@ -124,7 +125,7 @@ public class JPAEntityTest {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, false);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
- jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
+ jpaEntity = new JPAEntity(edmEntityType, edmEntitySet, null);
jpaEntity.create(ODataEntryMockUtil.mockODataEntryProperties(JPATypeMock.ENTITY_NAME));
} catch (ODataJPARuntimeException e) {
fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage()
@@ -145,7 +146,7 @@ public class JPAEntityTest {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, false);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
- jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
+ jpaEntity = new JPAEntity(edmEntityType, edmEntitySet, null);
JPATypeMock jpaTypeMock = new JPATypeMock();
jpaEntity.setJPAEntity(jpaTypeMock);
jpaEntity.update(ODataEntryMockUtil.mockODataEntry(JPATypeMock.ENTITY_NAME));
@@ -168,7 +169,7 @@ public class JPAEntityTest {
EdmEntitySet edmEntitySet = EdmMockUtilV2.mockEdmEntitySet(JPATypeMock.ENTITY_NAME, false);
EdmEntityType edmEntityType = edmEntitySet.getEntityType();
- jpaEntity = new JPAEntity(edmEntityType, edmEntitySet);
+ jpaEntity = new JPAEntity(edmEntityType, edmEntitySet, null);
JPATypeMock jpaTypeMock = new JPATypeMock();
jpaEntity.setJPAEntity(jpaTypeMock);
jpaEntity.update(ODataEntryMockUtil.mockODataEntryProperties(JPATypeMock.ENTITY_NAME));
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6c8c2db5/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
index 4d00503..17464a4 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
@@ -18,6 +18,7 @@
******************************************************************************/
package org.apache.olingo.odata2.jpa.processor.core.mock;
+import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.metamodel.Metamodel;
@@ -35,6 +36,7 @@ public abstract class ODataJPAContextMock {
ODataJPAContext odataJPAContext = EasyMock.createMock(ODataJPAContext.class);
EasyMock.expect(odataJPAContext.getPersistenceUnitName()).andStubReturn(NAMESPACE);
EasyMock.expect(odataJPAContext.getEntityManagerFactory()).andReturn(mockEntityManagerFactory());
+ EasyMock.expect(odataJPAContext.getEntityManager()).andReturn(mockEntityManager());
EasyMock.expect(odataJPAContext.getJPAEdmMappingModel()).andReturn(MAPPING_MODEL);
EasyMock.expect(odataJPAContext.getJPAEdmExtension()).andReturn(null);
EasyMock.expect(odataJPAContext.getDefaultNaming()).andReturn(true);
@@ -56,6 +58,13 @@ public abstract class ODataJPAContextMock {
return odataJPAContext;
}
+ private static EntityManager mockEntityManager() {
+ EntityManager em = EasyMock.createMock(EntityManager.class);
+ EasyMock.replay(em);
+ return em;
+
+ }
+
private static EntityManagerFactory mockEntityManagerFactory() {
EntityManagerFactory emf = EasyMock.createMock(EntityManagerFactory.class);
EasyMock.expect(emf.getMetamodel()).andReturn(mockMetaModel());
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6c8c2db5/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/data/ODataEntryMockUtil.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/data/ODataEntryMockUtil.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/data/ODataEntryMockUtil.java
index 92912cc..019bfb6 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/data/ODataEntryMockUtil.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/data/ODataEntryMockUtil.java
@@ -26,6 +26,7 @@ import java.util.Map;
import java.util.TimeZone;
import java.util.UUID;
+import org.apache.olingo.odata2.api.ep.entry.EntryMetadata;
import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
import org.apache.olingo.odata2.jpa.processor.core.mock.data.JPATypeMock.JPARelatedTypeMock;
@@ -50,7 +51,11 @@ public class ODataEntryMockUtil {
ODataEntry oDataEntry = EasyMock.createMock(ODataEntry.class);
EasyMock.expect(oDataEntry.getProperties()).andReturn(mockODataEntryProperties(entityName)).anyTimes();
- EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(false);
+ EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(false).anyTimes();
+ EntryMetadata entryMetadata = EasyMock.createMock(EntryMetadata.class);
+ EasyMock.expect(entryMetadata.getAssociationUris(EasyMock.isA(String.class))).andReturn(null).anyTimes();
+ EasyMock.replay(entryMetadata);
+ EasyMock.expect(oDataEntry.getMetadata()).andReturn(entryMetadata).anyTimes();
EasyMock.replay(oDataEntry);
return oDataEntry;
}
@@ -60,7 +65,7 @@ public class ODataEntryMockUtil {
EasyMock.expect(oDataEntry.getProperties()).andReturn(mockODataEntryPropertiesWithComplexType(entityName))
.anyTimes();
- EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(false);
+ EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(false).anyTimes();
EasyMock.replay(oDataEntry);
return oDataEntry;
}
@@ -117,9 +122,9 @@ public class ODataEntryMockUtil {
ODataEntry oDataEntry = EasyMock.createMock(ODataEntry.class);
EasyMock.expect(oDataEntry.getProperties()).andReturn(mockODataEntryPropertiesWithInline(entityName)).anyTimes();
if (entityName.equals(JPATypeMock.ENTITY_NAME)) {
- EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(true);
+ EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(true).anyTimes();
} else {
- EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(false);
+ EasyMock.expect(oDataEntry.containsInlineEntry()).andReturn(false).anyTimes();
}
EasyMock.replay(oDataEntry);
return oDataEntry;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6c8c2db5/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
index 18f24b4..0e51e48 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata2.jpa.processor.ref.model;
import java.util.ArrayList;
import java.util.List;
+import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
@@ -42,7 +43,7 @@ public class Customer {
@Embedded
private Address address;
- @OneToMany(mappedBy = "customer")
+ @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL)
private List<SalesOrderHeader> orders = new ArrayList<SalesOrderHeader>();
public Long getId() {