Repository: olingo-odata2 Updated Branches: refs/heads/master a95331e5a -> df063fd01
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/df063fd0/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserTestForStaticMethods.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserTestForStaticMethods.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserTestForStaticMethods.java deleted file mode 100644 index efb388d..0000000 --- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParserTestForStaticMethods.java +++ /dev/null @@ -1,330 +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.access.data; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.lang.reflect.Method; -import java.net.URL; -import java.sql.Blob; -import java.sql.Clob; -import java.sql.SQLException; - -import javax.sql.rowset.serial.SerialBlob; -import javax.sql.rowset.serial.SerialClob; -import javax.sql.rowset.serial.SerialException; - -import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException; -import org.apache.olingo.odata2.jpa.processor.core.common.ODataJPATestConstants; -import org.junit.Test; - -public class JPAEntityParserTestForStaticMethods { - - @Test - public void testToStringDefault() { - - Character[] input = new Character[] { 'A', 'B' }; - assertEquals("AB", JPAEntityParser.toString(input)); - - } - - @Test - public void testToStringNull() { - Character[] input = null; - assertNull(JPAEntityParser.toString(input)); - } - - @Test - public void testToStringPartialNull() { - Character[] input = new Character[] { 'A', null }; - assertEquals("A", JPAEntityParser.toString(input)); - } - - @Test - public void testToCharacterArrayDefault() { - String input = new String("AB"); - Character[] ch = JPAEntityParser.toCharacterArray(input); - - assertEquals(2, ch.length); - assertTrue(ch[0].equals('A')); - assertTrue(ch[1].equals('B')); - } - - @Test - public void testToCharacterArrayNull() { - String input = null; - Character[] ch = JPAEntityParser.toCharacterArray(input); - - assertNull(ch); - } - - @Test - public void testGetPropertyCharacter() { - try { - Method method = JPAEntityParserTestForStaticMethods.class.getMethod("getCharacter", (Class<?>[]) null); - String output = (String) JPAEntityParser.getPropertyValue(method, this); - assertEquals("A", output); - - } catch (NoSuchMethodException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SecurityException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testGetPropertyCharacterNull() { - try { - Method method = JPAEntityParserTestForStaticMethods.class.getMethod("getCharacterNull", (Class<?>[]) null); - String output = (String) JPAEntityParser.getPropertyValue(method, this); - assertNull(output); - - } catch (NoSuchMethodException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SecurityException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testGetPropertyCharacterArray() { - try { - Method method = JPAEntityParserTestForStaticMethods.class.getMethod("getCharacterArray", (Class<?>[]) null); - String output = (String) JPAEntityParser.getPropertyValue(method, this); - assertEquals("AB", output); - - } catch (NoSuchMethodException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SecurityException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testGetPropertyCharacterArrayNull() { - try { - Method method = JPAEntityParserTestForStaticMethods.class.getMethod("getCharacterArrayNull", (Class<?>[]) null); - String output = (String) JPAEntityParser.getPropertyValue(method, this); - assertNull(output); - - } catch (NoSuchMethodException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SecurityException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testGetPropertyChar() { - try { - Method method = JPAEntityParserTestForStaticMethods.class.getMethod("getChar", (Class<?>[]) null); - String output = (String) JPAEntityParser.getPropertyValue(method, this); - assertEquals("A", output); - - } catch (NoSuchMethodException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SecurityException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testGetPropertyCharNull() { - try { - Method method = JPAEntityParserTestForStaticMethods.class.getMethod("getCharNull", (Class<?>[]) null); - String output = (String) JPAEntityParser.getPropertyValue(method, this); - assertNull(output); - - } catch (NoSuchMethodException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SecurityException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testGetPropertyCharArray() { - try { - Method method = JPAEntityParserTestForStaticMethods.class.getMethod("getCharArray", (Class<?>[]) null); - String output = (String) JPAEntityParser.getPropertyValue(method, this); - assertEquals("AB", output); - - } catch (NoSuchMethodException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SecurityException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testGetPropertyCharArrayNull() { - try { - Method method = JPAEntityParserTestForStaticMethods.class.getMethod("getCharArrayNull", (Class<?>[]) null); - String output = (String) JPAEntityParser.getPropertyValue(method, this); - assertNull(output); - - } catch (NoSuchMethodException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SecurityException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testGetPropertyCharArrayValueNull() { - try { - Method method = JPAEntityParserTestForStaticMethods.class.getMethod("getCharArrayValueNull", (Class<?>[]) null); - String output = (String) JPAEntityParser.getPropertyValue(method, this); - assertEquals("A\u0000", output); - - } catch (NoSuchMethodException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SecurityException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testGetString() { - char[] expectedChar = new char[] { 'a', 'b', 'c' }; - try { - Clob clob = new SerialClob(expectedChar); - String actualString = JPAEntityParser.getString(clob); - - assertEquals(new String(expectedChar), actualString); - - } catch (SerialException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SQLException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - @Test - public void testGetBytes() { - final String fileName = "SalesOrderProcessingMappingModels.xml"; - - try { - FileInputStream fis = getFileStream(fileName); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - int content = fis.read(); - while (content != -1) { - baos.write(content); - content = fis.read(); - } - Blob blob = new SerialBlob(baos.toByteArray()); - byte[] actualBytes = (byte[]) JPAEntityParser.getBytes(blob); - byte[] expectedBytes = baos.toByteArray(); - - assertEquals(expectedBytes.length, actualBytes.length); - int size = actualBytes.length; - int index = 0; - while (index < size) { - assertEquals(expectedBytes[index], actualBytes[index]); - index++; - } - - } catch (FileNotFoundException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SerialException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (SQLException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (IOException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } catch (ODataJPARuntimeException e) { - fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + ODataJPATestConstants.EXCEPTION_MSG_PART_2); - } - } - - private FileInputStream getFileStream(final String name) throws SerialException, FileNotFoundException { - final String fileName = "SalesOrderProcessingMappingModels.xml"; - FileInputStream fis; - - URL fileURL = JPAEntityParserTestForStaticMethods.class.getClassLoader().getResource(fileName); - fis = new FileInputStream(fileURL.getPath()); - - return fis; - - } - - public Character getCharacter() { - return new Character('A'); - } - - public Character getCharacterNull() { - return null; - } - - public Character[] getCharacterArray() { - return new Character[] { 'A', 'B' }; - } - - public Character[] getCharacterArrayNull() { - return null; - } - - public char getChar() { - return 'A'; - } - - public char getCharNull() { - return '\u0000'; - } - - public char[] getCharArray() { - return new char[] { 'A', 'B' }; - } - - public char[] getCharArrayNull() { - return null; - } - - public char[] getCharArrayValueNull() { - return new char[] { 'A', '\u0000' }; - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/df063fd0/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAExpandCallBackTest.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAExpandCallBackTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAExpandCallBackTest.java index 634df6e..5b0147c 100644 --- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAExpandCallBackTest.java +++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAExpandCallBackTest.java @@ -41,6 +41,7 @@ import org.apache.olingo.odata2.api.ep.callback.WriteFeedCallbackResult; import org.apache.olingo.odata2.api.exception.ODataApplicationException; import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode; import org.apache.olingo.odata2.api.uri.NavigationPropertySegment; +import org.apache.olingo.odata2.jpa.processor.core.callback.JPAExpandCallBack; import org.apache.olingo.odata2.jpa.processor.core.common.ODataJPATestConstants; import org.apache.olingo.odata2.jpa.processor.core.mock.data.EdmMockUtil; import org.junit.Test; http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/df063fd0/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPageBuilderDeltaTest.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPageBuilderDeltaTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPageBuilderDeltaTest.java new file mode 100644 index 0000000..3408ae8 --- /dev/null +++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPageBuilderDeltaTest.java @@ -0,0 +1,339 @@ +package org.apache.olingo.odata2.jpa.processor.core.access.data; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.olingo.odata2.jpa.processor.core.access.data.JPAPage.JPAPageBuilder; +import org.junit.Test; + +public class JPAPageBuilderDeltaTest { + + private static final int PAGE_SIZE = 10; + + @Test + public void testBuildDefaultDelta() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("10") + .build(); + + assertEquals(20, page.getNextPage()); + assertEquals(10, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + assertNotNull(page.getPagedEntities()); + assertEquals(10, page.getPagedEntities().size()); + + List<Object> pagedEntities = page.getPagedEntities(); + + assertEquals("9", pagedEntities.get(0)); + assertEquals("18", pagedEntities.get(9)); + } + + @Test + public void testBuildWithNoSkipTokenDelta() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("0") + .build(); + + assertEquals(10, page.getNextPage()); + assertEquals(0, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + assertNotNull(page.getPagedEntities()); + + List<Object> pagedEntities = page.getPagedEntities(); + assertEquals(10, pagedEntities.size()); + assertEquals("0", pagedEntities.get(0)); + assertEquals("9", pagedEntities.get(9)); + } + + @Test + public void testBuildDefaultZeroPageDelta() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(0) + .skipToken("10") + .build(); + + assertEquals(0, page.getNextPage()); + assertEquals(0, page.getStartPage()); + assertEquals(0, page.getPageSize()); + assertNotNull(page.getPagedEntities()); + assertEquals(0, page.getPagedEntities().size()); + + } + + @Test + public void testBuildWithNullSkipToken() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken(null) + .build(); + + assertEquals(10, page.getNextPage()); + assertEquals(0, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + + List<Object> pagedEntities = page.getPagedEntities(); + assertNotNull(pagedEntities); + assertEquals("0", pagedEntities.get(0)); + assertEquals("9", pagedEntities.get(9)); + } + + @Test + public void testBuildWithInvalidSkipToken() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + try { + pageBuilder.entities(mockEntities()) + .skipToken("AB"); + } catch (NumberFormatException e) { + return; + } + fail("Exception Expected"); + } + + @Test + public void testBuildWithTop() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("20") + .top(5) + .build(); + + assertEquals(0, page.getNextPage()); + assertEquals(20, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + + List<Object> pagedEntities = page.getPagedEntities(); + assertNotNull(pagedEntities); + assertEquals(5, pagedEntities.size()); + assertEquals("19", pagedEntities.get(0)); + assertEquals("23", pagedEntities.get(4)); + } + + @Test + public void testBuildWithTopZeroPage() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(0) + .skipToken("10") + .top(5) + .build(); + + assertEquals(0, page.getNextPage()); + assertEquals(0, page.getStartPage()); + assertEquals(0, page.getPageSize()); + assertNotNull(page.getPagedEntities()); + assertEquals(5, page.getPagedEntities().size()); + } + + @Test + public void testBuildWithSkipZeroPage() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(0) + .skipToken("10") + .skip(5) + .build(); + + assertEquals(0, page.getNextPage()); + assertEquals(0, page.getStartPage()); + assertEquals(0, page.getPageSize()); + assertNotNull(page.getPagedEntities()); + + assertEquals(0, page.getPagedEntities().size()); + } + + @Test + public void testBuildWithTopSkipZeroPage() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(0) + .skipToken("10") + .skip(5) + .top(5) + .build(); + + assertEquals(0, page.getNextPage()); + assertEquals(0, page.getStartPage()); + assertEquals(0, page.getPageSize()); + assertNotNull(page.getPagedEntities()); + assertEquals(5, page.getPagedEntities().size()); + } + + @Test + public void testBuildWithTopExceeds() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("10") + .top(15) + .build(); + + assertEquals(20, page.getNextPage()); + assertEquals(10, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + List<Object> pagedEntities = page.getPagedEntities(); + assertNotNull(pagedEntities); + assertEquals(10, pagedEntities.size()); + assertEquals("9", pagedEntities.get(0)); + assertEquals("18", pagedEntities.get(9)); + } + + @Test + public void testBuildWithTopSkipExceeds() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("10") + .top(5) + .skip(10) + .build(); + + assertEquals(0, page.getNextPage()); + assertEquals(10, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + List<Object> pagedEntities = page.getPagedEntities(); + assertEquals(0, pagedEntities.size()); + + } + + @Test + public void testBuildWithTopSkipMore() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("10") + .top(5) + .skip(9) + .build(); + + assertEquals(0, page.getNextPage()); + assertEquals(10, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + List<Object> pagedEntities = page.getPagedEntities(); + assertNotNull(pagedEntities); + + assertEquals("18", pagedEntities.get(0)); + assertEquals(1, pagedEntities.size()); + } + + @Test + public void testBuildWithTopMoreSkip() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("10") + .top(15) + .skip(9) + .build(); + + assertEquals(0, page.getNextPage()); + assertEquals(10, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + List<Object> pagedEntities = page.getPagedEntities(); + assertNotNull(pagedEntities); + + assertEquals("18", pagedEntities.get(0)); + assertEquals(1, pagedEntities.size()); + } + + @Test + public void testBuildWithTopXSkipX() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("10") + .top(15) + .skip(15) + .build(); + + assertEquals(0, page.getNextPage()); + assertEquals(10, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + List<Object> pagedEntities = page.getPagedEntities(); + assertNotNull(pagedEntities); + + assertEquals(0, pagedEntities.size()); + } + + @Test + public void testBuildWithNegativeTop() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("10") + .top(-5) + .build(); + + assertEquals(20, page.getNextPage()); + assertEquals(10, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + List<Object> pagedEntities = page.getPagedEntities(); + assertNotNull(pagedEntities); + + assertEquals("9", pagedEntities.get(0)); + assertEquals(10, pagedEntities.size()); + } + + @Test + public void testBuildWithNegativeTopSkipToken() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("-10") + .top(-5) + .skip(-1) + .build(); + + assertEquals(10, page.getNextPage()); + assertEquals(0, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + List<Object> pagedEntities = page.getPagedEntities(); + assertNotNull(pagedEntities); + + assertEquals(10, pagedEntities.size()); + + } + + @Test + public void testBuildWithNoRecords() { + JPAPageBuilder pageBuilder = new JPAPageBuilder(); + JPAPage page = pageBuilder.entities(mockEntities()) + .pageSize(PAGE_SIZE) + .skipToken("10") + .top(1) + .skip(1) + .build(); + + assertEquals(0, page.getNextPage()); + assertEquals(10, page.getStartPage()); + assertEquals(PAGE_SIZE, page.getPageSize()); + List<Object> pagedEntities = page.getPagedEntities(); + assertNotNull(pagedEntities); + + assertEquals(1, pagedEntities.size()); + assertEquals("10", pagedEntities.get(0)); + } + + private List<Object> mockEntities() { + List<Object> entities = new ArrayList<Object>(); + for (int i = 0; i < 30; i++) { + entities.add(String.valueOf(i)); + } + return entities; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/df063fd0/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPageBuilderTest.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPageBuilderTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPageBuilderTest.java index d775be3..b9e6894 100644 --- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPageBuilderTest.java +++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPageBuilderTest.java @@ -52,7 +52,7 @@ public class JPAPageBuilderTest { .skipToken("10") .build(); - assertEquals(20, page.getNextPage()); + assertEquals(0, page.getNextPage()); assertEquals(10, page.getStartPage()); assertEquals(PAGE_SIZE, page.getPageSize()); assertNotNull(page.getPagedEntities()); @@ -62,6 +62,8 @@ public class JPAPageBuilderTest { assertEquals(10, query.getMaxResults()); } + + @Test public void testBuildDefaultZeroPage() { JPAPageBuilder pageBuilder = new JPAPageBuilder(); @@ -82,7 +84,7 @@ public class JPAPageBuilderTest { assertEquals(0, query.getMaxResults()); } - @Test + @Test public void testBuildWithNoSkipToken() { JPAPageBuilder pageBuilder = new JPAPageBuilder(); Query query = mockQuery(false); @@ -92,7 +94,7 @@ public class JPAPageBuilderTest { .skipToken("0") .build(); - assertEquals(10, page.getNextPage()); + assertEquals(0, page.getNextPage()); assertEquals(0, page.getStartPage()); assertEquals(PAGE_SIZE, page.getPageSize()); assertNotNull(page.getPagedEntities()); @@ -112,7 +114,7 @@ public class JPAPageBuilderTest { .skipToken(null) .build(); - assertEquals(10, page.getNextPage()); + assertEquals(0, page.getNextPage()); assertEquals(0, page.getStartPage()); assertEquals(PAGE_SIZE, page.getPageSize()); assertNotNull(page.getPagedEntities()); @@ -146,7 +148,7 @@ public class JPAPageBuilderTest { .top(5) .build(); - assertEquals(20, page.getNextPage()); + assertEquals(0, page.getNextPage()); assertEquals(10, page.getStartPage()); assertEquals(PAGE_SIZE, page.getPageSize()); assertNotNull(page.getPagedEntities()); @@ -227,7 +229,7 @@ public class JPAPageBuilderTest { .top(15) .build(); - assertEquals(20, page.getNextPage()); + assertEquals(0, page.getNextPage()); assertEquals(10, page.getStartPage()); assertEquals(PAGE_SIZE, page.getPageSize()); assertNotNull(page.getPagedEntities()); @@ -269,7 +271,7 @@ public class JPAPageBuilderTest { .skip(9) .build(); - assertEquals(20, page.getNextPage()); + assertEquals(0, page.getNextPage()); assertEquals(10, page.getStartPage()); assertEquals(PAGE_SIZE, page.getPageSize()); assertNotNull(page.getPagedEntities()); @@ -290,7 +292,7 @@ public class JPAPageBuilderTest { .skip(9) .build(); - assertEquals(20, page.getNextPage()); + assertEquals(0, page.getNextPage()); assertEquals(10, page.getStartPage()); assertEquals(PAGE_SIZE, page.getPageSize()); assertNotNull(page.getPagedEntities()); @@ -331,7 +333,7 @@ public class JPAPageBuilderTest { .top(-5) .build(); - assertEquals(20, page.getNextPage()); + assertEquals(0, page.getNextPage()); assertEquals(10, page.getStartPage()); assertEquals(PAGE_SIZE, page.getPageSize()); assertNotNull(page.getPagedEntities()); @@ -352,7 +354,7 @@ public class JPAPageBuilderTest { .skip(-1) .build(); - assertEquals(10, page.getNextPage()); + assertEquals(0, page.getNextPage()); assertEquals(0, page.getStartPage()); assertEquals(PAGE_SIZE, page.getPageSize()); assertNotNull(page.getPagedEntities()); @@ -556,4 +558,6 @@ public class JPAPageBuilderTest { } }; } + + } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/df063fd0/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 23fe91c..e74dc52 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 @@ -53,6 +53,7 @@ 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.edm.provider.Mapping; import org.apache.olingo.odata2.api.exception.ODataException; import org.apache.olingo.odata2.api.processor.ODataContext; import org.apache.olingo.odata2.api.uri.KeyPredicate; @@ -69,6 +70,7 @@ import org.apache.olingo.odata2.jpa.processor.api.access.JPAPaging; 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.core.common.ODataJPATestConstants; +import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmMappingImpl; import org.easymock.EasyMock; import org.junit.Before; import org.junit.Test; @@ -192,8 +194,8 @@ public class JPAProcessorImplTest { EasyMock.expect(objUriInfo.getSkipToken()).andReturn("5"); EasyMock.expect(objUriInfo.getInlineCount()).andStubReturn(getInlineCount()); EasyMock.expect(objUriInfo.getFilter()).andStubReturn(getFilter()); - // EasyMock.expect(objUriInfo.getFunctionImport()).andStubReturn(getFunctionImport()); EasyMock.expect(objUriInfo.getFunctionImport()).andStubReturn(null); + EasyMock.expect(objUriInfo.getCustomQueryOptions()).andStubReturn(null); EasyMock.replay(objUriInfo); return objUriInfo; } @@ -576,13 +578,13 @@ public class JPAProcessorImplTest { } private EdmMapping getEdmMappingMockedObj(final String propertyName) { - EdmMapping mockedEdmMapping = EasyMock.createMock(EdmMapping.class); + EdmMapping mockedEdmMapping = new JPAEdmMappingImpl(); if (propertyName.equalsIgnoreCase(SALES_ORDER)) { - EasyMock.expect(mockedEdmMapping.getInternalName()).andStubReturn(SALES_ORDER_HEADERS); + ((Mapping) mockedEdmMapping).setInternalName(SALES_ORDER_HEADERS); } else { - EasyMock.expect(mockedEdmMapping.getInternalName()).andStubReturn(propertyName); + ((Mapping) mockedEdmMapping).setInternalName(propertyName); } - EasyMock.replay(mockedEdmMapping); + return mockedEdmMapping; } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/df063fd0/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmNameBuilderTest.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmNameBuilderTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmNameBuilderTest.java index aebea64..2c3c194 100644 --- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmNameBuilderTest.java +++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmNameBuilderTest.java @@ -49,7 +49,7 @@ public class JPAEdmNameBuilderTest { EasyMock.expect(propertyView.getEdmSimpleProperty()).andStubReturn(simpleProperty); EasyMock.replay(propertyView); - JPAEdmNameBuilder.build(propertyView, false, false,false); + JPAEdmNameBuilder.build(propertyView, false, false, false); assertEquals("Id", simpleProperty.getName()); } @@ -69,7 +69,7 @@ public class JPAEdmNameBuilderTest { EasyMock.expect(propertyView.getEdmSimpleProperty()).andStubReturn(simpleProperty); EasyMock.replay(propertyView); - JPAEdmNameBuilder.build(propertyView, false, true,false); + JPAEdmNameBuilder.build(propertyView, false, true, false); assertEquals("id", simpleProperty.getName()); } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/df063fd0/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntityContainerTest.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntityContainerTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntityContainerTest.java index f94fa6f..340cdde 100644 --- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntityContainerTest.java +++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntityContainerTest.java @@ -179,6 +179,11 @@ public class JPAEdmEntityContainerTest extends JPAEdmTestModelView { public String getName() { return "SalesOrderHeader"; } + + @Override + public Class<String> getJavaType() { + return (Class<String>) java.lang.String.class; + } } } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/df063fd0/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntitySetTest.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntitySetTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntitySetTest.java index 6994dd9..6374206 100644 --- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntitySetTest.java +++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntitySetTest.java @@ -219,6 +219,11 @@ public class JPAEdmEntitySetTest extends JPAEdmTestModelView { public String getName() { return "SalesOrderHeader"; } + + @Override + public Class<String> getJavaType() { + return (Class<String>) java.lang.String.class; + } } } } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/df063fd0/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntityTypeTest.java ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntityTypeTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntityTypeTest.java index 8c79ece..15b8076 100644 --- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntityTypeTest.java +++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmEntityTypeTest.java @@ -144,6 +144,11 @@ public class JPAEdmEntityTypeTest extends JPAEdmTestModelView { public String getName() { return "SalesOrderHeader"; } + + @Override + public Class<String> getJavaType() { + return (Class<String>) java.lang.String.class; + } } } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/df063fd0/odata2-jpa-processor/jpa-ref/pom.xml ---------------------------------------------------------------------- diff --git a/odata2-jpa-processor/jpa-ref/pom.xml b/odata2-jpa-processor/jpa-ref/pom.xml index 26d3b41..1a8e8aa 100644 --- a/odata2-jpa-processor/jpa-ref/pom.xml +++ b/odata2-jpa-processor/jpa-ref/pom.xml @@ -90,6 +90,13 @@ <version>${project.version}</version> </dependency> + <!-- OData API Support --> + <dependency> + <groupId>org.apache.olingo</groupId> + <artifactId>olingo-odata2-jpa-processor-api</artifactId> + <version>${project.version}</version> + </dependency> + <!-- JUnits --> <dependency> <groupId>junit</groupId>
