Repository: olingo-odata2 Updated Branches: refs/heads/OLINGO-1018-JPA_API_DefaultProcessor 571a10ebe -> 034573491
[OLINGO-1018] Removed obsolete ODataJPAProcessorDefault Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/03457349 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/03457349 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/03457349 Branch: refs/heads/OLINGO-1018-JPA_API_DefaultProcessor Commit: 03457349196c8788f7865e4478071c14d77c9ea3 Parents: 571a10e Author: mibo <[email protected]> Authored: Thu Sep 8 20:43:41 2016 +0200 Committer: mibo <[email protected]> Committed: Thu Sep 8 20:43:41 2016 +0200 ---------------------------------------------------------------------- .../processor/api/ODataJPADefaultProcessor.java | 6 +- .../core/ODataJPAProcessorDefault.java | 29 - .../core/factory/ODataJPAFactoryImpl.java | 4 +- .../core/ODataJPADefaultProcessorTest.java | 588 +++++++++++++++++++ .../core/ODataJPAProcessorDefaultTest.java | 587 ------------------ .../core/access/data/JPAProcessorImplTest.java | 4 +- 6 files changed, 593 insertions(+), 625 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/03457349/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPADefaultProcessor.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPADefaultProcessor.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPADefaultProcessor.java index ca89e13..e562dc7 100644 --- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPADefaultProcessor.java +++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPADefaultProcessor.java @@ -29,19 +29,15 @@ import org.apache.olingo.odata2.api.processor.ODataRequest; import org.apache.olingo.odata2.api.processor.ODataResponse; import org.apache.olingo.odata2.api.uri.PathInfo; import org.apache.olingo.odata2.api.uri.info.*; -import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPAException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; -public class ODataJPADefaultProcessor extends ODataJPAProcessor { +public abstract class ODataJPADefaultProcessor extends ODataJPAProcessor { public ODataJPADefaultProcessor(final ODataJPAContext oDataJPAContext) { super(oDataJPAContext); - if (oDataJPAContext == null) { - throw new IllegalArgumentException(ODataJPAException.ODATA_JPACTX_NULL); - } } @Override http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/03457349/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 deleted file mode 100644 index 8daf88e..0000000 --- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefault.java +++ /dev/null @@ -1,29 +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.core; - -import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext; -import org.apache.olingo.odata2.jpa.processor.api.ODataJPADefaultProcessor; - -public class ODataJPAProcessorDefault extends ODataJPADefaultProcessor { - - public ODataJPAProcessorDefault(final ODataJPAContext oDataJPAContext) { - super(oDataJPAContext); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/03457349/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/factory/ODataJPAFactoryImpl.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/factory/ODataJPAFactoryImpl.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/factory/ODataJPAFactoryImpl.java index ce08757..6ef809f 100644 --- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/factory/ODataJPAFactoryImpl.java +++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/factory/ODataJPAFactoryImpl.java @@ -23,6 +23,7 @@ import java.util.Locale; import org.apache.olingo.odata2.api.edm.provider.EdmProvider; import org.apache.olingo.odata2.api.processor.ODataSingleProcessor; import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext; +import org.apache.olingo.odata2.jpa.processor.api.ODataJPADefaultProcessor; import org.apache.olingo.odata2.jpa.processor.api.ODataJPAResponseBuilder; import org.apache.olingo.odata2.jpa.processor.api.access.JPAEdmMappingModelAccess; import org.apache.olingo.odata2.jpa.processor.api.access.JPAMethodContext.JPAMethodContextBuilder; @@ -39,7 +40,6 @@ import org.apache.olingo.odata2.jpa.processor.api.jpql.JPQLStatement.JPQLStateme import org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmMapping; import org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmModelView; import org.apache.olingo.odata2.jpa.processor.core.ODataJPAContextImpl; -import org.apache.olingo.odata2.jpa.processor.core.ODataJPAProcessorDefault; import org.apache.olingo.odata2.jpa.processor.core.ODataJPAResponseBuilderDefault; import org.apache.olingo.odata2.jpa.processor.core.access.data.JPAFunctionContext; import org.apache.olingo.odata2.jpa.processor.core.access.data.JPAProcessorImpl; @@ -173,7 +173,7 @@ public class ODataJPAFactoryImpl extends ODataJPAFactory { @Override public ODataSingleProcessor createODataProcessor(final ODataJPAContext oDataJPAContext) { - return new ODataJPAProcessorDefault(oDataJPAContext); + return new ODataJPADefaultProcessor(oDataJPAContext) { }; } @Override http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/03457349/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPADefaultProcessorTest.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPADefaultProcessorTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPADefaultProcessorTest.java new file mode 100644 index 0000000..71e790f --- /dev/null +++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPADefaultProcessorTest.java @@ -0,0 +1,588 @@ +/******************************************************************************* + * 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 static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.EntityTransaction; +import javax.persistence.Query; +import javax.persistence.metamodel.EntityType; +import javax.persistence.metamodel.Metamodel; + +import org.apache.olingo.odata2.api.commons.HttpContentType; +import org.apache.olingo.odata2.api.commons.InlineCount; +import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode; +import org.apache.olingo.odata2.api.edm.EdmEntityContainer; +import org.apache.olingo.odata2.api.edm.EdmEntitySet; +import org.apache.olingo.odata2.api.edm.EdmEntityType; +import org.apache.olingo.odata2.api.edm.EdmException; +import org.apache.olingo.odata2.api.edm.EdmFacets; +import org.apache.olingo.odata2.api.edm.EdmMapping; +import org.apache.olingo.odata2.api.edm.EdmProperty; +import org.apache.olingo.odata2.api.edm.EdmType; +import org.apache.olingo.odata2.api.edm.EdmTypeKind; +import org.apache.olingo.odata2.api.edm.EdmTyped; +import org.apache.olingo.odata2.api.exception.ODataException; +import org.apache.olingo.odata2.api.processor.ODataContext; +import org.apache.olingo.odata2.api.processor.ODataResponse; +import org.apache.olingo.odata2.api.uri.KeyPredicate; +import org.apache.olingo.odata2.api.uri.NavigationSegment; +import org.apache.olingo.odata2.api.uri.PathInfo; +import org.apache.olingo.odata2.api.uri.UriInfo; +import org.apache.olingo.odata2.api.uri.expression.FilterExpression; +import org.apache.olingo.odata2.api.uri.expression.OrderByExpression; +import org.apache.olingo.odata2.api.uri.info.DeleteUriInfo; +import org.apache.olingo.odata2.api.uri.info.GetEntityCountUriInfo; +import org.apache.olingo.odata2.api.uri.info.GetEntitySetCountUriInfo; +import org.apache.olingo.odata2.api.uri.info.GetEntityUriInfo; +import org.apache.olingo.odata2.api.uri.info.PostUriInfo; +import org.apache.olingo.odata2.api.uri.info.PutMergePatchUriInfo; +import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext; +import org.apache.olingo.odata2.jpa.processor.api.ODataJPADefaultProcessor; +import org.apache.olingo.odata2.jpa.processor.api.ODataJPATransaction; +import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPAModelException; +import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException; +import org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmMapping; +import org.apache.olingo.odata2.jpa.processor.core.common.ODataJPATestConstants; +import org.apache.olingo.odata2.jpa.processor.core.mock.ODataContextMock; +import org.apache.olingo.odata2.jpa.processor.core.mock.ODataServiceMock; +import org.apache.olingo.odata2.jpa.processor.core.mock.data.SalesOrderHeader; +import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmMappingImpl; +import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmTestModelView; +import org.easymock.EasyMock; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class ODataJPADefaultProcessorTest extends JPAEdmTestModelView { + + private ODataJPADefaultProcessor objODataJPAProcessorDefault; + + private static final String STR_LOCAL_URI = "http://localhost:8080/org.apache.olingo.odata2.processor.ref.web/"; + private static final String SALESORDERPROCESSING_CONTAINER = "salesorderprocessingContainer"; + private static final String SO_ID = "SoId"; + private static final String SALES_ORDER = "SalesOrder"; + private static final String SALES_ORDER_HEADERS = "SalesOrderHeaders"; + private static final String STR_CONTENT_TYPE = "Content-Type"; + + @Before + public void setUp() { + objODataJPAProcessorDefault = new ODataJPADefaultProcessor(getLocalmockODataJPAContext()) { }; + } + + @Test + public void testReadEntitySetGetEntitySetUriInfoString() { + try { + GetEntityUriInfo getEntityView = getEntityUriInfo(); + Assert.assertNotNull(objODataJPAProcessorDefault.readEntity(getEntityView, HttpContentType.APPLICATION_XML)); + } catch (ODataJPAModelException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } catch (ODataJPARuntimeException e1) {// Expected + assertTrue(true); + } catch (ODataException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } + + } + + @Test + public void testcountEntitySet() { + try { + ODataResponse countEntitySet = + objODataJPAProcessorDefault.countEntitySet(getEntitySetCountUriInfo(), HttpContentType.APPLICATION_XML); + Assert.assertNotNull(countEntitySet); + Object entity = countEntitySet.getEntity(); + Assert.assertNotNull(entity); + + byte[] b = new byte[2]; + ((ByteArrayInputStream) entity).read(b); + Assert.assertEquals("11", new String(b, Charset.forName("utf-8"))); + } catch (ODataException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } catch (Exception e) { + assertTrue(true); + } + } + + @Test + public void testExistsEntity() { + try { + Assert.assertNotNull(objODataJPAProcessorDefault.existsEntity(getEntityCountUriInfo(), + HttpContentType.APPLICATION_XML)); + Assert.assertNull("ContentType MUST NOT set by entity provider", objODataJPAProcessorDefault.existsEntity( + getEntityCountUriInfo(), HttpContentType.APPLICATION_XML).getHeader(STR_CONTENT_TYPE)); + } catch (ODataException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } catch (Exception e) { + assertTrue(true); + } + } + + @Test + public void testDeleteEntity() { + try { + Assert.assertNotNull(objODataJPAProcessorDefault.deleteEntity(getDeletetUriInfo(), + HttpContentType.APPLICATION_XML)); + } catch (ODataException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } + } + + @Test + public void testCreateEntity() { + try { + Assert.assertNotNull(objODataJPAProcessorDefault.createEntity(getPostUriInfo(), getMockedInputStreamContent(), + HttpContentType.APPLICATION_XML, HttpContentType.APPLICATION_XML)); + } catch (ODataException e) { + Assert.assertTrue(true); // Expected TODO - need to revisit + } + } + + @Test + public void testUpdateEntity() { + try { + Assert.assertNotNull(objODataJPAProcessorDefault.updateEntity(getPutUriInfo(), getMockedInputStreamContent(), + HttpContentType.APPLICATION_XML, false, HttpContentType.APPLICATION_XML)); + } catch (ODataException e) { + Assert.assertTrue(true); // Expected TODO - need to revisit + } + } + + private PutMergePatchUriInfo getPutUriInfo() { + return (PutMergePatchUriInfo) getDeletetUriInfo(); + } + + private PostUriInfo getPostUriInfo() { + return (PostUriInfo) getDeletetUriInfo(); + } + + private InputStream getMockedInputStreamContent() { + return new ByteArrayInputStream(getEntityBody().getBytes()); + } + + private String getEntityBody() { + return "<entry xmlns=\"http://www.w3.org/2005/Atom\" " + + "xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" " + + "xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" " + + "xml:base=\"http://localhost:8080/org.apache.olingo.odata2.processor.ref.web/SalesOrderProcessing.svc/\">" + + "<content type=\"application/xml\">" + + "<m:properties>" + + "<d:ID>2</d:ID>" + + "<d:CreationDate>2013-01-02T00:00:00</d:CreationDate>" + + "<d:CurrencyCode>Code_555</d:CurrencyCode>" + + "<d:BuyerAddressInfo m:type=\"SalesOrderProcessing.AddressInfo\">" + + "<d:Street>Test_Street_Name_055</d:Street>" + + "<d:Number>2</d:Number>" + + "<d:Country>Test_Country_2</d:Country>" + + "<d:City>Test_City_2</d:City>" + + "</d:BuyerAddressInfo>" + + "<d:GrossAmount>0.0</d:GrossAmount>" + + "<d:BuyerId>2</d:BuyerId>" + + "<d:DeliveryStatus>true</d:DeliveryStatus>" + + "<d:BuyerName>buyerName_2</d:BuyerName>" + + "<d:NetAmount>0.0</d:NetAmount>" + "</m:properties>" + "</content>" + "</entry>"; + } + + private GetEntitySetCountUriInfo getEntitySetCountUriInfo() { + return getLocalUriInfo(); + } + + private GetEntityCountUriInfo getEntityCountUriInfo() { + return getLocalUriInfo(); + } + + private DeleteUriInfo getDeletetUriInfo() { + UriInfo objUriInfo = EasyMock.createMock(UriInfo.class); + EasyMock.expect(objUriInfo.getStartEntitySet()).andStubReturn(getLocalEdmEntitySet()); + List<NavigationSegment> navSegments = new ArrayList<NavigationSegment>(); + EasyMock.expect(objUriInfo.getNavigationSegments()).andReturn(navSegments).anyTimes(); + EasyMock.expect(objUriInfo.getTargetEntitySet()).andStubReturn(getLocalEdmEntitySet()); + EasyMock.expect(objUriInfo.getSelect()).andStubReturn(null); + EasyMock.expect(objUriInfo.getOrderBy()).andStubReturn(getOrderByExpression()); + EasyMock.expect(objUriInfo.getTop()).andStubReturn(getTop()); + EasyMock.expect(objUriInfo.getSkip()).andStubReturn(getSkip()); + EasyMock.expect(objUriInfo.getInlineCount()).andStubReturn(getInlineCount()); + EasyMock.expect(objUriInfo.getFilter()).andStubReturn(getFilter()); + EasyMock.expect(objUriInfo.getKeyPredicates()).andStubReturn(getKeyPredicates()); + EasyMock.expect(objUriInfo.isLinks()).andStubReturn(false); + EasyMock.replay(objUriInfo); + return objUriInfo; + } + + private List<KeyPredicate> getKeyPredicates() { + List<KeyPredicate> keyPredicates = new ArrayList<KeyPredicate>(); + return keyPredicates; + } + + /** + * @return + */ + private UriInfo getLocalUriInfo() { + UriInfo objUriInfo = EasyMock.createMock(UriInfo.class); + EasyMock.expect(objUriInfo.getStartEntitySet()).andStubReturn(getLocalEdmEntitySet()); + List<NavigationSegment> navSegments = new ArrayList<NavigationSegment>(); + EasyMock.expect(objUriInfo.getNavigationSegments()).andReturn(navSegments).anyTimes(); + EasyMock.expect(objUriInfo.getTargetEntitySet()).andStubReturn(getLocalEdmEntitySet()); + EasyMock.expect(objUriInfo.getSelect()).andStubReturn(null); + EasyMock.expect(objUriInfo.getOrderBy()).andStubReturn(getOrderByExpression()); + EasyMock.expect(objUriInfo.getTop()).andStubReturn(getTop()); + EasyMock.expect(objUriInfo.getSkip()).andStubReturn(getSkip()); + EasyMock.expect(objUriInfo.getInlineCount()).andStubReturn(getInlineCount()); + EasyMock.expect(objUriInfo.getFilter()).andStubReturn(getFilter()); + EasyMock.expect(objUriInfo.getFunctionImport()).andStubReturn(null); + EasyMock.replay(objUriInfo); + return objUriInfo; + } + + /** + * @return + * @throws EdmException + */ + private EdmEntitySet getLocalEdmEntitySet() { + EdmEntitySet edmEntitySet = EasyMock.createMock(EdmEntitySet.class); + try { + EasyMock.expect(edmEntitySet.getName()).andStubReturn(SALES_ORDER_HEADERS); + EasyMock.expect(edmEntitySet.getEntityContainer()).andStubReturn(getLocalEdmEntityContainer()); + EasyMock.expect(edmEntitySet.getEntityType()).andStubReturn(getLocalEdmEntityType()); + EasyMock.replay(edmEntitySet); + } catch (EdmException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } + return edmEntitySet; + } + + /** + * @return + * @throws EdmException + */ + private EdmEntityType getLocalEdmEntityType() { + EdmEntityType edmEntityType = EasyMock.createMock(EdmEntityType.class); + try { + EasyMock.expect(edmEntityType.getKeyProperties()).andStubReturn(new ArrayList<EdmProperty>()); + EasyMock.expect(edmEntityType.getPropertyNames()).andStubReturn(getLocalPropertyNames()); + EasyMock.expect(edmEntityType.getProperty(SO_ID)).andStubReturn(getEdmTypedMockedObj(SALES_ORDER)); + EasyMock.expect(edmEntityType.getKind()).andStubReturn(EdmTypeKind.SIMPLE); + EasyMock.expect(edmEntityType.getNamespace()).andStubReturn(SALES_ORDER_HEADERS); + EasyMock.expect(edmEntityType.getName()).andStubReturn(SALES_ORDER_HEADERS); + EasyMock.expect(edmEntityType.hasStream()).andStubReturn(false); + EasyMock.expect(edmEntityType.getNavigationPropertyNames()).andStubReturn(new ArrayList<String>()); + EasyMock.expect(edmEntityType.getKeyPropertyNames()).andStubReturn(new ArrayList<String>()); + EasyMock.expect(edmEntityType.getMapping()).andStubReturn((EdmMapping) getEdmMappingMockedObj(SALES_ORDER)); + EasyMock.replay(edmEntityType); + } catch (EdmException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } + return edmEntityType; + } + + private InlineCount getInlineCount() { + return InlineCount.NONE; + } + + private FilterExpression getFilter() { + return null; + } + + private Integer getSkip() { + return null; + } + + private Integer getTop() { + return null; + } + + private OrderByExpression getOrderByExpression() { + return null; + } + + private ODataJPAContext getLocalmockODataJPAContext() { + ODataJPAContext odataJPAContext = EasyMock.createMock(ODataJPAContext.class); + EasyMock.expect(odataJPAContext.getPageSize()).andReturn(0).anyTimes(); + EasyMock.expect(odataJPAContext.getPersistenceUnitName()).andStubReturn("salesorderprocessing"); + EasyMock.expect(odataJPAContext.getEntityManagerFactory()).andStubReturn(mockEntityManagerFactory()); + EasyMock.expect(odataJPAContext.getODataJPATransaction()).andStubReturn(getLocalJpaTransaction()); + EasyMock.expect(odataJPAContext.getODataContext()).andStubReturn(getLocalODataContext()); + odataJPAContext.setODataContext((ODataContext) EasyMock.anyObject()); + EasyMock.expectLastCall().anyTimes(); + EasyMock.expect(odataJPAContext.getEntityManager()).andStubReturn(getLocalEntityManager()); + EasyMock.expect(odataJPAContext.isContainerManaged()).andReturn(false); + EasyMock.expectLastCall().anyTimes(); + EasyMock.replay(odataJPAContext); + return odataJPAContext; + } + + private ODataJPATransaction getLocalJpaTransaction() { + ODataJPATransaction tx = EasyMock.createMock(ODataJPATransaction.class); + tx.begin(); // testing void method + tx.commit();// testing void method + tx.rollback();// testing void method + EasyMock.expect(tx.isActive()).andReturn(false); + EasyMock.replay(tx); + return tx; + } + + private EntityManagerFactory mockEntityManagerFactory() { + EntityManagerFactory emf = EasyMock.createMock(EntityManagerFactory.class); + EasyMock.expect(emf.getMetamodel()).andStubReturn(mockMetaModel()); + EasyMock.expect(emf.createEntityManager()).andStubReturn(getLocalEntityManager()); + EasyMock.replay(emf); + return emf; + } + + private EntityManagerFactory mockEntityManagerFactory2() {// For create, to avoid stackoverflow + EntityManagerFactory emf = EasyMock.createMock(EntityManagerFactory.class); + EasyMock.expect(emf.getMetamodel()).andStubReturn(mockMetaModel()); + EasyMock.replay(emf); + return emf; + } + + private EntityManager getLocalEntityManager() { + EntityManager em = EasyMock.createMock(EntityManager.class); + EasyMock.expect(em.createQuery("SELECT E1 FROM SalesOrderHeaders E1")).andStubReturn(getQuery()); + EasyMock.expect(em.createQuery("SELECT COUNT ( E1 ) FROM SalesOrderHeaders E1")).andStubReturn( + getQueryForSelectCount()); + EasyMock.expect(em.getEntityManagerFactory()).andStubReturn(mockEntityManagerFactory2());// For create + EasyMock.expect(em.getTransaction()).andStubReturn(getLocalTransaction()); // For Delete + EasyMock.expect(em.isOpen()).andReturn(true).anyTimes(); + Address obj = new Address(); + em.remove(obj);// testing void method + em.flush(); + em.close(); + EasyMock.expectLastCall().anyTimes(); + EasyMock.replay(em); + return em; + } + + private EntityTransaction getLocalTransaction() { + EntityTransaction entityTransaction = EasyMock.createMock(EntityTransaction.class); + entityTransaction.begin(); // testing void method + entityTransaction.commit();// testing void method + entityTransaction.rollback();// testing void method + EasyMock.expect(entityTransaction.isActive()).andReturn(false); + EasyMock.replay(entityTransaction); + return entityTransaction; + } + + private Query getQuery() { + Query query = EasyMock.createMock(Query.class); + EasyMock.expect(query.getResultList()).andStubReturn(getResultList()); + EasyMock.replay(query); + return query; + } + + private Query getQueryForSelectCount() { + Query query = EasyMock.createMock(Query.class); + EasyMock.expect(query.getResultList()).andStubReturn(getResultListForSelectCount()); + EasyMock.replay(query); + return query; + } + + private List<?> getResultList() { + List<Object> list = new ArrayList<Object>(); + list.add(new Address()); + return list; + } + + private List<?> getResultListForSelectCount() { + List<Object> list = new ArrayList<Object>(); + list.add(new Long(11)); + return list; + } + + class Address { + private String soId = "12"; + + public String getSoId() { + return soId; + } + + @Override + public boolean equals(final Object obj) { + boolean isEqual = false; + if (obj instanceof Address) { + isEqual = getSoId().equalsIgnoreCase(((Address) obj).getSoId());// + } + return isEqual; + } + } + + private Metamodel mockMetaModel() { + Metamodel metaModel = EasyMock.createMock(Metamodel.class); + EasyMock.expect(metaModel.getEntities()).andStubReturn(getLocalEntities()); + EasyMock.replay(metaModel); + return metaModel; + } + + private Set<EntityType<?>> getLocalEntities() { + Set<EntityType<?>> entityTypeSet = new HashSet<EntityType<?>>(); + entityTypeSet.add(getLocalJPAEntityType()); + return entityTypeSet; + } + + @SuppressWarnings("rawtypes") + private EntityType<EntityType> getLocalJPAEntityType() { + @SuppressWarnings("unchecked") + EntityType<EntityType> entityType = EasyMock.createMock(EntityType.class); + EasyMock.expect(entityType.getJavaType()).andStubReturn(EntityType.class); + EasyMock.replay(entityType); + return entityType; + } + + private GetEntityUriInfo getEntityUriInfo() { + GetEntityUriInfo getEntityView = EasyMock.createMock(GetEntityUriInfo.class); + EdmEntitySet edmEntitySet = EasyMock.createMock(EdmEntitySet.class); + EdmEntityType edmEntityType = EasyMock.createMock(EdmEntityType.class); + try { + EasyMock.expect(getEntityView.getExpand()).andStubReturn(null); + EasyMock.expect(edmEntityType.getKeyProperties()).andStubReturn(new ArrayList<EdmProperty>()); + EasyMock.expect(edmEntitySet.getEntityType()).andStubReturn(edmEntityType); + EasyMock.expect(edmEntitySet.getName()).andStubReturn(SALES_ORDER_HEADERS); + + EasyMock.expect(getEntityView.getSelect()).andStubReturn(null); + EasyMock.expect(getEntityView.getTargetEntitySet()).andStubReturn(edmEntitySet); + EasyMock.expect(edmEntityType.getPropertyNames()).andStubReturn(getLocalPropertyNames()); + EasyMock.expect(edmEntityType.getProperty(SO_ID)).andStubReturn(getEdmTypedMockedObj(SO_ID)); + + EasyMock.expect(edmEntityType.getMapping()).andStubReturn((EdmMapping) getEdmMappingMockedObj(SALES_ORDER)); + + EasyMock.expect(edmEntityType.getKind()).andStubReturn(EdmTypeKind.SIMPLE); + EasyMock.expect(edmEntityType.getNamespace()).andStubReturn(SALES_ORDER_HEADERS); + EasyMock.expect(edmEntityType.getName()).andStubReturn(SALES_ORDER_HEADERS); + EasyMock.expect(edmEntityType.hasStream()).andStubReturn(false); + EasyMock.expect(edmEntityType.getNavigationPropertyNames()).andStubReturn(new ArrayList<String>()); + EasyMock.expect(edmEntityType.getKeyPropertyNames()).andStubReturn(new ArrayList<String>()); + + EasyMock.expect(edmEntitySet.getEntityContainer()).andStubReturn(getLocalEdmEntityContainer()); + + EasyMock.replay(edmEntityType, edmEntitySet); + EasyMock.expect(getEntityView.getKeyPredicates()).andStubReturn(new ArrayList<KeyPredicate>()); + List<NavigationSegment> navigationSegments = new ArrayList<NavigationSegment>(); + EasyMock.expect(getEntityView.getNavigationSegments()).andReturn(navigationSegments); + EasyMock.expect(getEntityView.getStartEntitySet()).andReturn(edmEntitySet); + + EasyMock.replay(getEntityView); + } catch (EdmException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } + return getEntityView; + } + + private EdmEntityContainer getLocalEdmEntityContainer() { + EdmEntityContainer edmEntityContainer = EasyMock.createMock(EdmEntityContainer.class); + EasyMock.expect(edmEntityContainer.isDefaultEntityContainer()).andStubReturn(true); + try { + EasyMock.expect(edmEntityContainer.getName()).andStubReturn(SALESORDERPROCESSING_CONTAINER); + } catch (EdmException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } + + EasyMock.replay(edmEntityContainer); + return edmEntityContainer; + } + + private EdmTyped getEdmTypedMockedObj(final String propertyName) { + EdmProperty mockedEdmProperty = EasyMock.createMock(EdmProperty.class); + try { + EasyMock.expect(mockedEdmProperty.getMapping()).andStubReturn((EdmMapping) getEdmMappingMockedObj(propertyName)); + EdmType edmType = EasyMock.createMock(EdmType.class); + EasyMock.expect(edmType.getKind()).andStubReturn(EdmTypeKind.SIMPLE); + EasyMock.replay(edmType); + EasyMock.expect(mockedEdmProperty.getName()).andStubReturn("identifier"); + EasyMock.expect(mockedEdmProperty.getType()).andStubReturn(edmType); + EasyMock.expect(mockedEdmProperty.getFacets()).andStubReturn(getEdmFacetsMockedObj()); + + EasyMock.replay(mockedEdmProperty); + } catch (EdmException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } + return mockedEdmProperty; + } + + private EdmFacets getEdmFacetsMockedObj() { + EdmFacets facets = EasyMock.createMock(EdmFacets.class); + EasyMock.expect(facets.getConcurrencyMode()).andStubReturn(EdmConcurrencyMode.Fixed); + + EasyMock.replay(facets); + return facets; + } + + private JPAEdmMapping getEdmMappingMockedObj(final String propertyName) { + JPAEdmMappingImpl mockedEdmMapping = EasyMock.createMock(JPAEdmMappingImpl.class); + if (propertyName.equalsIgnoreCase(SALES_ORDER)) { + EasyMock.expect(((EdmMapping) mockedEdmMapping).getInternalName()).andStubReturn(SALES_ORDER_HEADERS); + } else { + EasyMock.expect(((EdmMapping) mockedEdmMapping).getInternalName()).andStubReturn(propertyName); + } + EasyMock.expect(mockedEdmMapping.getODataJPATombstoneEntityListener()).andReturn(null); + EasyMock.<Class<?>> expect(mockedEdmMapping.getJPAType()).andReturn(SalesOrderHeader.class); + EasyMock.replay(mockedEdmMapping); + return mockedEdmMapping; + } + + private List<String> getLocalPropertyNames() { + List<String> list = new ArrayList<String>(); + list.add(SO_ID); + return list; + } + + private ODataContext getLocalODataContext() { + ODataContext objODataContext = null; + try { + ODataContextMock contextMock = new ODataContextMock(); + contextMock.setODataService(new ODataServiceMock().mock()); + contextMock.setPathInfo(getLocalPathInfo()); + objODataContext = contextMock.mock(); + + } catch (ODataException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } + return objODataContext; + } + + private PathInfo getLocalPathInfo() { + PathInfo pathInfo = EasyMock.createMock(PathInfo.class); + EasyMock.expect(pathInfo.getServiceRoot()).andStubReturn(getLocalURI()); + EasyMock.replay(pathInfo); + return pathInfo; + } + + private URI getLocalURI() { + URI uri = null; + try { + uri = new URI(STR_LOCAL_URI); + } catch (URISyntaxException e) { + fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); + } + return uri; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/03457349/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 deleted file mode 100644 index 14cb5d3..0000000 --- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAProcessorDefaultTest.java +++ /dev/null @@ -1,587 +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.core; - -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.EntityTransaction; -import javax.persistence.Query; -import javax.persistence.metamodel.EntityType; -import javax.persistence.metamodel.Metamodel; - -import org.apache.olingo.odata2.api.commons.HttpContentType; -import org.apache.olingo.odata2.api.commons.InlineCount; -import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode; -import org.apache.olingo.odata2.api.edm.EdmEntityContainer; -import org.apache.olingo.odata2.api.edm.EdmEntitySet; -import org.apache.olingo.odata2.api.edm.EdmEntityType; -import org.apache.olingo.odata2.api.edm.EdmException; -import org.apache.olingo.odata2.api.edm.EdmFacets; -import org.apache.olingo.odata2.api.edm.EdmMapping; -import org.apache.olingo.odata2.api.edm.EdmProperty; -import org.apache.olingo.odata2.api.edm.EdmType; -import org.apache.olingo.odata2.api.edm.EdmTypeKind; -import org.apache.olingo.odata2.api.edm.EdmTyped; -import org.apache.olingo.odata2.api.exception.ODataException; -import org.apache.olingo.odata2.api.processor.ODataContext; -import org.apache.olingo.odata2.api.processor.ODataResponse; -import org.apache.olingo.odata2.api.uri.KeyPredicate; -import org.apache.olingo.odata2.api.uri.NavigationSegment; -import org.apache.olingo.odata2.api.uri.PathInfo; -import org.apache.olingo.odata2.api.uri.UriInfo; -import org.apache.olingo.odata2.api.uri.expression.FilterExpression; -import org.apache.olingo.odata2.api.uri.expression.OrderByExpression; -import org.apache.olingo.odata2.api.uri.info.DeleteUriInfo; -import org.apache.olingo.odata2.api.uri.info.GetEntityCountUriInfo; -import org.apache.olingo.odata2.api.uri.info.GetEntitySetCountUriInfo; -import org.apache.olingo.odata2.api.uri.info.GetEntityUriInfo; -import org.apache.olingo.odata2.api.uri.info.PostUriInfo; -import org.apache.olingo.odata2.api.uri.info.PutMergePatchUriInfo; -import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext; -import org.apache.olingo.odata2.jpa.processor.api.ODataJPATransaction; -import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPAModelException; -import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException; -import org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmMapping; -import org.apache.olingo.odata2.jpa.processor.core.common.ODataJPATestConstants; -import org.apache.olingo.odata2.jpa.processor.core.mock.ODataContextMock; -import org.apache.olingo.odata2.jpa.processor.core.mock.ODataServiceMock; -import org.apache.olingo.odata2.jpa.processor.core.mock.data.SalesOrderHeader; -import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmMappingImpl; -import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmTestModelView; -import org.easymock.EasyMock; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -public class ODataJPAProcessorDefaultTest extends JPAEdmTestModelView { - - ODataJPAProcessorDefault objODataJPAProcessorDefault; - - private static final String STR_LOCAL_URI = "http://localhost:8080/org.apache.olingo.odata2.processor.ref.web/"; - private static final String SALESORDERPROCESSING_CONTAINER = "salesorderprocessingContainer"; - private static final String SO_ID = "SoId"; - private static final String SALES_ORDER = "SalesOrder"; - private static final String SALES_ORDER_HEADERS = "SalesOrderHeaders"; - private static final String STR_CONTENT_TYPE = "Content-Type"; - - @Before - public void setUp() { - objODataJPAProcessorDefault = new ODataJPAProcessorDefault(getLocalmockODataJPAContext()); - } - - @Test - public void testReadEntitySetGetEntitySetUriInfoString() { - try { - GetEntityUriInfo getEntityView = getEntityUriInfo(); - Assert.assertNotNull(objODataJPAProcessorDefault.readEntity(getEntityView, HttpContentType.APPLICATION_XML)); - } catch (ODataJPAModelException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e1) {// Expected - assertTrue(true); - } catch (ODataException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - - } - - @Test - public void testcountEntitySet() { - try { - ODataResponse countEntitySet = - objODataJPAProcessorDefault.countEntitySet(getEntitySetCountUriInfo(), HttpContentType.APPLICATION_XML); - Assert.assertNotNull(countEntitySet); - Object entity = countEntitySet.getEntity(); - Assert.assertNotNull(entity); - - byte[] b = new byte[2]; - ((ByteArrayInputStream) entity).read(b); - Assert.assertEquals("11", new String(b, Charset.forName("utf-8"))); - } catch (ODataException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (Exception e) { - assertTrue(true); - } - } - - @Test - public void testExistsEntity() { - try { - Assert.assertNotNull(objODataJPAProcessorDefault.existsEntity(getEntityCountUriInfo(), - HttpContentType.APPLICATION_XML)); - Assert.assertNull("ContentType MUST NOT set by entity provider", objODataJPAProcessorDefault.existsEntity( - getEntityCountUriInfo(), HttpContentType.APPLICATION_XML).getHeader(STR_CONTENT_TYPE)); - } catch (ODataException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (Exception e) { - assertTrue(true); - } - } - - @Test - public void testDeleteEntity() { - try { - Assert.assertNotNull(objODataJPAProcessorDefault.deleteEntity(getDeletetUriInfo(), - HttpContentType.APPLICATION_XML)); - } catch (ODataException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testCreateEntity() { - try { - Assert.assertNotNull(objODataJPAProcessorDefault.createEntity(getPostUriInfo(), getMockedInputStreamContent(), - HttpContentType.APPLICATION_XML, HttpContentType.APPLICATION_XML)); - } catch (ODataException e) { - Assert.assertTrue(true); // Expected TODO - need to revisit - } - } - - @Test - public void testUpdateEntity() { - try { - Assert.assertNotNull(objODataJPAProcessorDefault.updateEntity(getPutUriInfo(), getMockedInputStreamContent(), - HttpContentType.APPLICATION_XML, false, HttpContentType.APPLICATION_XML)); - } catch (ODataException e) { - Assert.assertTrue(true); // Expected TODO - need to revisit - } - } - - private PutMergePatchUriInfo getPutUriInfo() { - return (PutMergePatchUriInfo) getDeletetUriInfo(); - } - - private PostUriInfo getPostUriInfo() { - return (PostUriInfo) getDeletetUriInfo(); - } - - private InputStream getMockedInputStreamContent() { - return new ByteArrayInputStream(getEntityBody().getBytes()); - } - - private String getEntityBody() { - return "<entry xmlns=\"http://www.w3.org/2005/Atom\" " + - "xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\" " + - "xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" " + - "xml:base=\"http://localhost:8080/org.apache.olingo.odata2.processor.ref.web/SalesOrderProcessing.svc/\">" - + "<content type=\"application/xml\">" - + "<m:properties>" - + "<d:ID>2</d:ID>" - + "<d:CreationDate>2013-01-02T00:00:00</d:CreationDate>" - + "<d:CurrencyCode>Code_555</d:CurrencyCode>" - + "<d:BuyerAddressInfo m:type=\"SalesOrderProcessing.AddressInfo\">" - + "<d:Street>Test_Street_Name_055</d:Street>" - + "<d:Number>2</d:Number>" - + "<d:Country>Test_Country_2</d:Country>" - + "<d:City>Test_City_2</d:City>" - + "</d:BuyerAddressInfo>" - + "<d:GrossAmount>0.0</d:GrossAmount>" - + "<d:BuyerId>2</d:BuyerId>" - + "<d:DeliveryStatus>true</d:DeliveryStatus>" - + "<d:BuyerName>buyerName_2</d:BuyerName>" - + "<d:NetAmount>0.0</d:NetAmount>" + "</m:properties>" + "</content>" + "</entry>"; - } - - private GetEntitySetCountUriInfo getEntitySetCountUriInfo() { - return getLocalUriInfo(); - } - - private GetEntityCountUriInfo getEntityCountUriInfo() { - return getLocalUriInfo(); - } - - private DeleteUriInfo getDeletetUriInfo() { - UriInfo objUriInfo = EasyMock.createMock(UriInfo.class); - EasyMock.expect(objUriInfo.getStartEntitySet()).andStubReturn(getLocalEdmEntitySet()); - List<NavigationSegment> navSegments = new ArrayList<NavigationSegment>(); - EasyMock.expect(objUriInfo.getNavigationSegments()).andReturn(navSegments).anyTimes(); - EasyMock.expect(objUriInfo.getTargetEntitySet()).andStubReturn(getLocalEdmEntitySet()); - EasyMock.expect(objUriInfo.getSelect()).andStubReturn(null); - EasyMock.expect(objUriInfo.getOrderBy()).andStubReturn(getOrderByExpression()); - EasyMock.expect(objUriInfo.getTop()).andStubReturn(getTop()); - EasyMock.expect(objUriInfo.getSkip()).andStubReturn(getSkip()); - EasyMock.expect(objUriInfo.getInlineCount()).andStubReturn(getInlineCount()); - EasyMock.expect(objUriInfo.getFilter()).andStubReturn(getFilter()); - EasyMock.expect(objUriInfo.getKeyPredicates()).andStubReturn(getKeyPredicates()); - EasyMock.expect(objUriInfo.isLinks()).andStubReturn(false); - EasyMock.replay(objUriInfo); - return objUriInfo; - } - - private List<KeyPredicate> getKeyPredicates() { - List<KeyPredicate> keyPredicates = new ArrayList<KeyPredicate>(); - return keyPredicates; - } - - /** - * @return - */ - private UriInfo getLocalUriInfo() { - UriInfo objUriInfo = EasyMock.createMock(UriInfo.class); - EasyMock.expect(objUriInfo.getStartEntitySet()).andStubReturn(getLocalEdmEntitySet()); - List<NavigationSegment> navSegments = new ArrayList<NavigationSegment>(); - EasyMock.expect(objUriInfo.getNavigationSegments()).andReturn(navSegments).anyTimes(); - EasyMock.expect(objUriInfo.getTargetEntitySet()).andStubReturn(getLocalEdmEntitySet()); - EasyMock.expect(objUriInfo.getSelect()).andStubReturn(null); - EasyMock.expect(objUriInfo.getOrderBy()).andStubReturn(getOrderByExpression()); - EasyMock.expect(objUriInfo.getTop()).andStubReturn(getTop()); - EasyMock.expect(objUriInfo.getSkip()).andStubReturn(getSkip()); - EasyMock.expect(objUriInfo.getInlineCount()).andStubReturn(getInlineCount()); - EasyMock.expect(objUriInfo.getFilter()).andStubReturn(getFilter()); - EasyMock.expect(objUriInfo.getFunctionImport()).andStubReturn(null); - EasyMock.replay(objUriInfo); - return objUriInfo; - } - - /** - * @return - * @throws EdmException - */ - private EdmEntitySet getLocalEdmEntitySet() { - EdmEntitySet edmEntitySet = EasyMock.createMock(EdmEntitySet.class); - try { - EasyMock.expect(edmEntitySet.getName()).andStubReturn(SALES_ORDER_HEADERS); - EasyMock.expect(edmEntitySet.getEntityContainer()).andStubReturn(getLocalEdmEntityContainer()); - EasyMock.expect(edmEntitySet.getEntityType()).andStubReturn(getLocalEdmEntityType()); - EasyMock.replay(edmEntitySet); - } catch (EdmException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - return edmEntitySet; - } - - /** - * @return - * @throws EdmException - */ - private EdmEntityType getLocalEdmEntityType() { - EdmEntityType edmEntityType = EasyMock.createMock(EdmEntityType.class); - try { - EasyMock.expect(edmEntityType.getKeyProperties()).andStubReturn(new ArrayList<EdmProperty>()); - EasyMock.expect(edmEntityType.getPropertyNames()).andStubReturn(getLocalPropertyNames()); - EasyMock.expect(edmEntityType.getProperty(SO_ID)).andStubReturn(getEdmTypedMockedObj(SALES_ORDER)); - EasyMock.expect(edmEntityType.getKind()).andStubReturn(EdmTypeKind.SIMPLE); - EasyMock.expect(edmEntityType.getNamespace()).andStubReturn(SALES_ORDER_HEADERS); - EasyMock.expect(edmEntityType.getName()).andStubReturn(SALES_ORDER_HEADERS); - EasyMock.expect(edmEntityType.hasStream()).andStubReturn(false); - EasyMock.expect(edmEntityType.getNavigationPropertyNames()).andStubReturn(new ArrayList<String>()); - EasyMock.expect(edmEntityType.getKeyPropertyNames()).andStubReturn(new ArrayList<String>()); - EasyMock.expect(edmEntityType.getMapping()).andStubReturn((EdmMapping) getEdmMappingMockedObj(SALES_ORDER)); - EasyMock.replay(edmEntityType); - } catch (EdmException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - return edmEntityType; - } - - private InlineCount getInlineCount() { - return InlineCount.NONE; - } - - private FilterExpression getFilter() { - return null; - } - - private Integer getSkip() { - return null; - } - - private Integer getTop() { - return null; - } - - private OrderByExpression getOrderByExpression() { - return null; - } - - private ODataJPAContext getLocalmockODataJPAContext() { - ODataJPAContext odataJPAContext = EasyMock.createMock(ODataJPAContext.class); - EasyMock.expect(odataJPAContext.getPageSize()).andReturn(0).anyTimes(); - EasyMock.expect(odataJPAContext.getPersistenceUnitName()).andStubReturn("salesorderprocessing"); - EasyMock.expect(odataJPAContext.getEntityManagerFactory()).andStubReturn(mockEntityManagerFactory()); - EasyMock.expect(odataJPAContext.getODataJPATransaction()).andStubReturn(getLocalJpaTransaction()); - EasyMock.expect(odataJPAContext.getODataContext()).andStubReturn(getLocalODataContext()); - odataJPAContext.setODataContext((ODataContext) EasyMock.anyObject()); - EasyMock.expectLastCall().anyTimes(); - EasyMock.expect(odataJPAContext.getEntityManager()).andStubReturn(getLocalEntityManager()); - EasyMock.expect(odataJPAContext.isContainerManaged()).andReturn(false); - EasyMock.expectLastCall().anyTimes(); - EasyMock.replay(odataJPAContext); - return odataJPAContext; - } - - private ODataJPATransaction getLocalJpaTransaction() { - ODataJPATransaction tx = EasyMock.createMock(ODataJPATransaction.class); - tx.begin(); // testing void method - tx.commit();// testing void method - tx.rollback();// testing void method - EasyMock.expect(tx.isActive()).andReturn(false); - EasyMock.replay(tx); - return tx; - } - - private EntityManagerFactory mockEntityManagerFactory() { - EntityManagerFactory emf = EasyMock.createMock(EntityManagerFactory.class); - EasyMock.expect(emf.getMetamodel()).andStubReturn(mockMetaModel()); - EasyMock.expect(emf.createEntityManager()).andStubReturn(getLocalEntityManager()); - EasyMock.replay(emf); - return emf; - } - - private EntityManagerFactory mockEntityManagerFactory2() {// For create, to avoid stackoverflow - EntityManagerFactory emf = EasyMock.createMock(EntityManagerFactory.class); - EasyMock.expect(emf.getMetamodel()).andStubReturn(mockMetaModel()); - EasyMock.replay(emf); - return emf; - } - - private EntityManager getLocalEntityManager() { - EntityManager em = EasyMock.createMock(EntityManager.class); - EasyMock.expect(em.createQuery("SELECT E1 FROM SalesOrderHeaders E1")).andStubReturn(getQuery()); - EasyMock.expect(em.createQuery("SELECT COUNT ( E1 ) FROM SalesOrderHeaders E1")).andStubReturn( - getQueryForSelectCount()); - EasyMock.expect(em.getEntityManagerFactory()).andStubReturn(mockEntityManagerFactory2());// For create - EasyMock.expect(em.getTransaction()).andStubReturn(getLocalTransaction()); // For Delete - EasyMock.expect(em.isOpen()).andReturn(true).anyTimes(); - Address obj = new Address(); - em.remove(obj);// testing void method - em.flush(); - em.close(); - EasyMock.expectLastCall().anyTimes(); - EasyMock.replay(em); - return em; - } - - private EntityTransaction getLocalTransaction() { - EntityTransaction entityTransaction = EasyMock.createMock(EntityTransaction.class); - entityTransaction.begin(); // testing void method - entityTransaction.commit();// testing void method - entityTransaction.rollback();// testing void method - EasyMock.expect(entityTransaction.isActive()).andReturn(false); - EasyMock.replay(entityTransaction); - return entityTransaction; - } - - private Query getQuery() { - Query query = EasyMock.createMock(Query.class); - EasyMock.expect(query.getResultList()).andStubReturn(getResultList()); - EasyMock.replay(query); - return query; - } - - private Query getQueryForSelectCount() { - Query query = EasyMock.createMock(Query.class); - EasyMock.expect(query.getResultList()).andStubReturn(getResultListForSelectCount()); - EasyMock.replay(query); - return query; - } - - private List<?> getResultList() { - List<Object> list = new ArrayList<Object>(); - list.add(new Address()); - return list; - } - - private List<?> getResultListForSelectCount() { - List<Object> list = new ArrayList<Object>(); - list.add(new Long(11)); - return list; - } - - class Address { - private String soId = "12"; - - public String getSoId() { - return soId; - } - - @Override - public boolean equals(final Object obj) { - boolean isEqual = false; - if (obj instanceof Address) { - isEqual = getSoId().equalsIgnoreCase(((Address) obj).getSoId());// - } - return isEqual; - } - } - - private Metamodel mockMetaModel() { - Metamodel metaModel = EasyMock.createMock(Metamodel.class); - EasyMock.expect(metaModel.getEntities()).andStubReturn(getLocalEntities()); - EasyMock.replay(metaModel); - return metaModel; - } - - private Set<EntityType<?>> getLocalEntities() { - Set<EntityType<?>> entityTypeSet = new HashSet<EntityType<?>>(); - entityTypeSet.add(getLocalJPAEntityType()); - return entityTypeSet; - } - - @SuppressWarnings("rawtypes") - private EntityType<EntityType> getLocalJPAEntityType() { - @SuppressWarnings("unchecked") - EntityType<EntityType> entityType = EasyMock.createMock(EntityType.class); - EasyMock.expect(entityType.getJavaType()).andStubReturn(EntityType.class); - EasyMock.replay(entityType); - return entityType; - } - - private GetEntityUriInfo getEntityUriInfo() { - GetEntityUriInfo getEntityView = EasyMock.createMock(GetEntityUriInfo.class); - EdmEntitySet edmEntitySet = EasyMock.createMock(EdmEntitySet.class); - EdmEntityType edmEntityType = EasyMock.createMock(EdmEntityType.class); - try { - EasyMock.expect(getEntityView.getExpand()).andStubReturn(null); - EasyMock.expect(edmEntityType.getKeyProperties()).andStubReturn(new ArrayList<EdmProperty>()); - EasyMock.expect(edmEntitySet.getEntityType()).andStubReturn(edmEntityType); - EasyMock.expect(edmEntitySet.getName()).andStubReturn(SALES_ORDER_HEADERS); - - EasyMock.expect(getEntityView.getSelect()).andStubReturn(null); - EasyMock.expect(getEntityView.getTargetEntitySet()).andStubReturn(edmEntitySet); - EasyMock.expect(edmEntityType.getPropertyNames()).andStubReturn(getLocalPropertyNames()); - EasyMock.expect(edmEntityType.getProperty(SO_ID)).andStubReturn(getEdmTypedMockedObj(SO_ID)); - - EasyMock.expect(edmEntityType.getMapping()).andStubReturn((EdmMapping) getEdmMappingMockedObj(SALES_ORDER)); - - EasyMock.expect(edmEntityType.getKind()).andStubReturn(EdmTypeKind.SIMPLE); - EasyMock.expect(edmEntityType.getNamespace()).andStubReturn(SALES_ORDER_HEADERS); - EasyMock.expect(edmEntityType.getName()).andStubReturn(SALES_ORDER_HEADERS); - EasyMock.expect(edmEntityType.hasStream()).andStubReturn(false); - EasyMock.expect(edmEntityType.getNavigationPropertyNames()).andStubReturn(new ArrayList<String>()); - EasyMock.expect(edmEntityType.getKeyPropertyNames()).andStubReturn(new ArrayList<String>()); - - EasyMock.expect(edmEntitySet.getEntityContainer()).andStubReturn(getLocalEdmEntityContainer()); - - EasyMock.replay(edmEntityType, edmEntitySet); - EasyMock.expect(getEntityView.getKeyPredicates()).andStubReturn(new ArrayList<KeyPredicate>()); - List<NavigationSegment> navigationSegments = new ArrayList<NavigationSegment>(); - EasyMock.expect(getEntityView.getNavigationSegments()).andReturn(navigationSegments); - EasyMock.expect(getEntityView.getStartEntitySet()).andReturn(edmEntitySet); - - EasyMock.replay(getEntityView); - } catch (EdmException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - return getEntityView; - } - - private EdmEntityContainer getLocalEdmEntityContainer() { - EdmEntityContainer edmEntityContainer = EasyMock.createMock(EdmEntityContainer.class); - EasyMock.expect(edmEntityContainer.isDefaultEntityContainer()).andStubReturn(true); - try { - EasyMock.expect(edmEntityContainer.getName()).andStubReturn(SALESORDERPROCESSING_CONTAINER); - } catch (EdmException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - - EasyMock.replay(edmEntityContainer); - return edmEntityContainer; - } - - private EdmTyped getEdmTypedMockedObj(final String propertyName) { - EdmProperty mockedEdmProperty = EasyMock.createMock(EdmProperty.class); - try { - EasyMock.expect(mockedEdmProperty.getMapping()).andStubReturn((EdmMapping) getEdmMappingMockedObj(propertyName)); - EdmType edmType = EasyMock.createMock(EdmType.class); - EasyMock.expect(edmType.getKind()).andStubReturn(EdmTypeKind.SIMPLE); - EasyMock.replay(edmType); - EasyMock.expect(mockedEdmProperty.getName()).andStubReturn("identifier"); - EasyMock.expect(mockedEdmProperty.getType()).andStubReturn(edmType); - EasyMock.expect(mockedEdmProperty.getFacets()).andStubReturn(getEdmFacetsMockedObj()); - - EasyMock.replay(mockedEdmProperty); - } catch (EdmException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - return mockedEdmProperty; - } - - private EdmFacets getEdmFacetsMockedObj() { - EdmFacets facets = EasyMock.createMock(EdmFacets.class); - EasyMock.expect(facets.getConcurrencyMode()).andStubReturn(EdmConcurrencyMode.Fixed); - - EasyMock.replay(facets); - return facets; - } - - private JPAEdmMapping getEdmMappingMockedObj(final String propertyName) { - JPAEdmMappingImpl mockedEdmMapping = EasyMock.createMock(JPAEdmMappingImpl.class); - if (propertyName.equalsIgnoreCase(SALES_ORDER)) { - EasyMock.expect(((EdmMapping) mockedEdmMapping).getInternalName()).andStubReturn(SALES_ORDER_HEADERS); - } else { - EasyMock.expect(((EdmMapping) mockedEdmMapping).getInternalName()).andStubReturn(propertyName); - } - EasyMock.expect(mockedEdmMapping.getODataJPATombstoneEntityListener()).andReturn(null); - EasyMock.<Class<?>> expect(mockedEdmMapping.getJPAType()).andReturn(SalesOrderHeader.class); - EasyMock.replay(mockedEdmMapping); - return mockedEdmMapping; - } - - private List<String> getLocalPropertyNames() { - List<String> list = new ArrayList<String>(); - list.add(SO_ID); - return list; - } - - private ODataContext getLocalODataContext() { - ODataContext objODataContext = null; - try { - ODataContextMock contextMock = new ODataContextMock(); - contextMock.setODataService(new ODataServiceMock().mock()); - contextMock.setPathInfo(getLocalPathInfo()); - objODataContext = contextMock.mock(); - - } catch (ODataException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - return objODataContext; - } - - private PathInfo getLocalPathInfo() { - PathInfo pathInfo = EasyMock.createMock(PathInfo.class); - EasyMock.expect(pathInfo.getServiceRoot()).andStubReturn(getLocalURI()); - EasyMock.replay(pathInfo); - return pathInfo; - } - - private URI getLocalURI() { - URI uri = null; - try { - uri = new URI(STR_LOCAL_URI); - } catch (URISyntaxException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - return uri; - } - -} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/03457349/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 4a00340..6422a97 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 @@ -80,7 +80,7 @@ import org.junit.Test; public class JPAProcessorImplTest { // -------------------------------- Common Start ------------------------------------common in - // ODataJPAProcessorDefaultTest as well + // ODataJPADefaultProcessorTest as well private static final String STR_LOCAL_URI = "http://localhost:8080/org.apache.olingo.odata2.processor.ref.web/"; private static final String SALESORDERPROCESSING_CONTAINER = "salesorderprocessingContainer"; private static final String SO_ID = "SoId"; @@ -152,7 +152,7 @@ public class JPAProcessorImplTest { } } - // ---------------------------- Common Code Start ---------------- TODO - common in ODataJPAProcessorDefaultTest as + // ---------------------------- Common Code Start ---------------- TODO - common in ODataJPADefaultProcessorTest as // well private DeleteUriInfo getDeletetUriInfo() {
