Repository: olingo-odata2
Updated Branches:
  refs/heads/master 2e18476aa -> 53b631bff


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/53b631bf/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAQueryBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAQueryBuilderTest.java
 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAQueryBuilderTest.java
index 6d19148..d65f76e 100644
--- 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAQueryBuilderTest.java
+++ 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAQueryBuilderTest.java
@@ -23,12 +23,15 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
 
+import org.apache.olingo.odata2.api.edm.EdmAssociation;
+import org.apache.olingo.odata2.api.edm.EdmAssociationEnd;
 import org.apache.olingo.odata2.api.edm.EdmEntitySet;
 import org.apache.olingo.odata2.api.edm.EdmEntityType;
 import org.apache.olingo.odata2.api.edm.EdmException;
@@ -109,7 +112,6 @@ public class JPAQueryBuilderTest {
       fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + 
ODataJPATestConstants.EXCEPTION_MSG_PART_2);
     }
   }
-
   @Test
   public void buildDeleteEntityTest() {
     try {
@@ -118,6 +120,119 @@ public class JPAQueryBuilderTest {
       fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + 
ODataJPATestConstants.EXCEPTION_MSG_PART_2);
     }
   }
+  
+  @Test
+  public void buildDeleteEntityTestWithoutListener() {
+    try {
+      EdmMapping mapping = (EdmMapping) mockMapping();
+      assertNotNull(builder.build((DeleteUriInfo) 
mockURIInfoForDeleteAndPut(mapping)));
+    } catch (ODataException e) {
+      fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + 
ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+    }
+  }
+  
+  @Test
+  public void buildPutEntityTestWithoutListener() {
+    try {
+      EdmMapping mapping = (EdmMapping) mockMapping();
+      assertNotNull(builder.build((PutMergePatchUriInfo) 
mockURIInfoForDeleteAndPut(mapping)));
+    } catch (ODataException e) {
+      fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + 
ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+    }
+  }
+
+  private DeleteUriInfo mockURIInfoForDeleteAndPut(EdmMapping mapping) throws 
EdmException {
+    UriInfo uriInfo = EasyMock.createMock(UriInfo.class);
+    List<NavigationSegment> navSegments = new ArrayList<NavigationSegment>();
+    
EasyMock.expect(uriInfo.getNavigationSegments()).andStubReturn(navSegments);
+    EdmEntityType edmEntityType = EasyMock.createMock(EdmEntityType.class);
+    EasyMock.expect(edmEntityType.getMapping()).andStubReturn(mapping);
+    EdmEntitySet edmEntitySet = EasyMock.createMock(EdmEntitySet.class);
+    EasyMock.expect(edmEntitySet.getEntityType()).andStubReturn(edmEntityType);
+    EasyMock.expect(uriInfo.getTargetEntitySet()).andStubReturn(edmEntitySet);
+    List<KeyPredicate> keyPreds = new ArrayList<KeyPredicate>();
+    
+    EdmProperty edmProperty1 = mockEdmProperty(mapping, "Decimal");
+    keyPreds.add(mockKeyPredicate(edmProperty1, "1234.7"));
+    
+    
+    EdmProperty edmProperty2 = mockEdmProperty(mapping, "Int64");
+    keyPreds.add(mockKeyPredicate(edmProperty2, "1234567899"));
+    
+    EdmProperty edmProperty3 = mockEdmProperty(mapping, "Double");
+    keyPreds.add(mockKeyPredicate(edmProperty3, "12349"));
+    
+    EdmProperty edmProperty4 = mockEdmProperty(mapping, "Int32");
+    keyPreds.add(mockKeyPredicate(edmProperty4, "12349"));
+    
+    EdmProperty edmProperty5 = mockEdmProperty(mapping, "Single");
+    keyPreds.add(mockKeyPredicate(edmProperty5, "12349"));
+    
+    EdmProperty edmProperty6 = mockEdmProperty(mapping, "SByte");
+    keyPreds.add(mockKeyPredicate(edmProperty6, "-123"));
+    
+    EdmProperty edmProperty7 = mockEdmProperty(mapping, "Binary");
+    keyPreds.add(mockKeyPredicate(edmProperty7, getBinaryData()));
+    
+    EasyMock.expect(uriInfo.getKeyPredicates()).andStubReturn(keyPreds); 
+    EasyMock.replay(edmEntityType, edmEntitySet, uriInfo);
+    return uriInfo;
+  }
+
+  private String getBinaryData() {
+    byte[] content = new byte[Byte.MAX_VALUE - Byte.MIN_VALUE + 1];
+    // binary content, not a valid UTF-8 representation of a string
+    for (int i = Byte.MIN_VALUE; i <= Byte.MAX_VALUE; i++) {
+      content[i - Byte.MIN_VALUE] = (byte) i;
+    }
+    return content.toString();
+  }
+  /**
+   * @param edmProperty1
+   * @return
+   */
+  private KeyPredicate mockKeyPredicate(EdmProperty edmProperty, String value) 
{
+    KeyPredicate keyPredicate = EasyMock.createMock(KeyPredicate.class);
+    EasyMock.expect(keyPredicate.getLiteral()).andReturn(value).anyTimes();
+    
EasyMock.expect(keyPredicate.getProperty()).andReturn(edmProperty).anyTimes();
+    EasyMock.replay(keyPredicate);
+    return keyPredicate;
+  }
+
+  /**
+   * @param mapping
+   * @return
+   * @throws EdmException
+   */
+  private EdmProperty mockEdmProperty(EdmMapping mapping, String type) throws 
EdmException {
+    EdmProperty edmProperty = EasyMock.createMock(EdmProperty.class);
+    EasyMock.expect(edmProperty.getMapping()).andStubReturn(mapping);
+    if (type.equals("Decimal")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.Decimal.getEdmSimpleTypeInstance());
+    } else if (type.equals("Double")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.Double.getEdmSimpleTypeInstance());
+    } else if (type.equals("Int64")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.Int64.getEdmSimpleTypeInstance());
+    } else if (type.equals("Int32")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.Int32.getEdmSimpleTypeInstance());
+    } else if (type.equals("Single")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.Single.getEdmSimpleTypeInstance());
+    } else if (type.equals("Int16")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.Int16.getEdmSimpleTypeInstance());
+    } else if (type.equals("SByte")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.SByte.getEdmSimpleTypeInstance());
+    } else if (type.equals("String")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.String.getEdmSimpleTypeInstance());
+    } else if (type.equals("DateTime")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.DateTime.getEdmSimpleTypeInstance());
+    } else if (type.equals("Time")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.Time.getEdmSimpleTypeInstance());
+    } else if (type.equals("Binary")) {
+      
EasyMock.expect(edmProperty.getType()).andStubReturn(EdmSimpleTypeKind.Binary.getEdmSimpleTypeInstance());
+    }
+    EasyMock.replay(edmProperty);
+    return edmProperty;
+  }
 
   @Test
   public void buildGetEntitySetCountTest() {
@@ -351,20 +466,90 @@ public class JPAQueryBuilderTest {
     }
   }
   
+  @Test
+  public void buildQueryCountEntitySet() {
+    EdmMapping mapping = (EdmMapping) mockMapping();
+    try {
+      assertNotNull(builder.build((GetEntitySetCountUriInfo) 
mockURIInfoForEntitySetCount(mapping)));
+    } catch (ODataException e) {
+      fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + 
ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+    }
+  }
+  
+  @Test
+  public void buildQueryCountEntity() {
+    EdmMapping mapping = (EdmMapping) mockMapping();
+    try {
+      assertNotNull(builder.build((GetEntityCountUriInfo) 
mockURIInfoForEntityCount(mapping)));
+    } catch (ODataException e) {
+      fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + 
ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+    }
+  }
+  
+  @Test
+  public void buildQueryWithMultipleKeys() {
+    EdmMapping mapping = (EdmMapping) mockMapping();
+    try {
+      assertNotNull(builder.build((GetEntityUriInfo) 
mockURIInfoWithMultipleKeyPredicates(mapping)));
+    } catch (ODataException e) {
+      fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + 
ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+    }
+  }
+  
+  @Test
+  public void buildQueryWithTopSkip() {
+    EdmMapping mapping = (EdmMapping) mockMapping();
+    try {
+      assertNotNull(builder.build((GetEntitySetUriInfo) 
mockURIInfoWithTopSkip(mapping)));
+    } catch (ODataException e) {
+      fail(ODataJPATestConstants.EXCEPTION_MSG_PART_1 + e.getMessage() + 
ODataJPATestConstants.EXCEPTION_MSG_PART_2);
+    }
+  }
+  
+  @SuppressWarnings("unchecked")
+  private GetEntityUriInfo mockURIInfoWithTopSkip(EdmMapping mapping) throws 
EdmException {
+    UriInfo uriInfo = EasyMock.createMock(UriInfo.class);
+    List<NavigationSegment> navSegments = new ArrayList<NavigationSegment>();
+    
EasyMock.expect(uriInfo.getNavigationSegments()).andStubReturn(navSegments);
+    EdmEntityType edmEntityType = EasyMock.createMock(EdmEntityType.class);
+    EasyMock.expect(edmEntityType.getMapping()).andStubReturn(mapping);
+    EdmEntitySet edmEntitySet = EasyMock.createMock(EdmEntitySet.class);
+    EasyMock.expect(edmEntitySet.getEntityType()).andStubReturn(edmEntityType);
+    EasyMock.expect(uriInfo.getTargetEntitySet()).andStubReturn(edmEntitySet);
+    List<KeyPredicate> keyPreds = EasyMock.createMock(ArrayList.class);
+    EasyMock.expect(uriInfo.getKeyPredicates()).andStubReturn(keyPreds); 
+    EasyMock.expect(uriInfo.getOrderBy()).andStubReturn(null);
+    EasyMock.expect(uriInfo.getTop()).andStubReturn(1);
+    EasyMock.expect(uriInfo.getSkip()).andStubReturn(2);
+    EdmProperty edmProperty = EasyMock.createMock(EdmProperty.class);
+    EasyMock.expect(edmProperty.getMapping()).andStubReturn(mapping);
+    
EasyMock.expect(edmEntityType.getKeyProperties()).andStubReturn(Arrays.asList(edmProperty));
+    EasyMock.expect(uriInfo.getFilter()).andStubReturn(null);
+    EasyMock.replay(edmEntityType, edmEntitySet, uriInfo, keyPreds, 
edmProperty);
+    return uriInfo;
+  }
+
   private UriInfo mockURIInfoWithListener(boolean isNavigationEnabled) throws 
EdmException {
     UriInfo uriInfo = EasyMock.createMock(UriInfo.class);
     if (isNavigationEnabled) {
       List<NavigationSegment> navSegments = new ArrayList<NavigationSegment>();
       navSegments.add(null);
-      EasyMock.expect(uriInfo.getNavigationSegments()).andReturn(navSegments);
+      
EasyMock.expect(uriInfo.getNavigationSegments()).andStubReturn(navSegments);
       EasyMock.replay(uriInfo);
       return uriInfo;
     }
     EdmEntityType edmEntityType = EasyMock.createMock(EdmEntityType.class);
-    EasyMock.expect(edmEntityType.getMapping()).andReturn((EdmMapping) 
mockEdmMapping());
+    EasyMock.expect(edmEntityType.getMapping()).andStubReturn((EdmMapping) 
mockEdmMapping());
     EdmEntitySet edmEntitySet = EasyMock.createMock(EdmEntitySet.class);
-    EasyMock.expect(edmEntitySet.getEntityType()).andReturn(edmEntityType);
-    EasyMock.expect(uriInfo.getTargetEntitySet()).andReturn(edmEntitySet);
+    EasyMock.expect(edmEntitySet.getEntityType()).andStubReturn(edmEntityType);
+    EasyMock.expect(uriInfo.getTargetEntitySet()).andStubReturn(edmEntitySet);
+    EasyMock.expect(uriInfo.getNavigationSegments()).andReturn(null);
+    EasyMock.expect(uriInfo.getKeyPredicates()).andStubReturn(null);
+    EasyMock.expect(uriInfo.getStartEntitySet()).andStubReturn(edmEntitySet);
+    EasyMock.expect(uriInfo.getOrderBy()).andStubReturn(null);
+    EasyMock.expect(uriInfo.getFilter()).andStubReturn(null);
+    EasyMock.expect(uriInfo.getTop()).andStubReturn(null);
+    EasyMock.expect(uriInfo.getSkip()).andStubReturn(null);
     EasyMock.replay(edmEntityType, edmEntitySet, uriInfo);
     return uriInfo;
 
@@ -400,6 +585,127 @@ public class JPAQueryBuilderTest {
 
   }
   
+  private UriInfo mockURIInfoWithMultipleKeyPredicates(EdmMapping mapping) 
throws EdmException {
+    
+    UriInfo uriInfo = EasyMock.createMock(UriInfo.class);
+    List<NavigationSegment> navSegments = new ArrayList<NavigationSegment>();
+    
EasyMock.expect(uriInfo.getNavigationSegments()).andStubReturn(navSegments);
+    EdmEntityType edmEntityType = EasyMock.createMock(EdmEntityType.class);
+    EasyMock.expect(edmEntityType.getMapping()).andStubReturn(mapping);
+    EdmEntitySet edmEntitySet = EasyMock.createMock(EdmEntitySet.class);
+    EasyMock.expect(edmEntitySet.getEntityType()).andStubReturn(edmEntityType);
+    EasyMock.expect(uriInfo.getTargetEntitySet()).andStubReturn(edmEntitySet);
+    
+    List<KeyPredicate> keyPreds = new ArrayList<KeyPredicate>();
+    EdmProperty edmProperty1 = mockEdmProperty(mapping, "DateTime");
+    keyPreds.add(mockKeyPredicate(edmProperty1, "2012-10-31T18:31:00"));
+    
+    EdmProperty edmProperty2 = mockEdmProperty(mapping, "Time");
+    keyPreds.add(mockKeyPredicate(edmProperty2, "PT0H0M23S"));
+    
+    EdmProperty edmProperty3 = mockEdmProperty((EdmMapping) 
mockMappingWithType("Character"), "String");
+    keyPreds.add(mockKeyPredicate(edmProperty3, "A"));
+    
+    EdmProperty edmProperty4 = mockEdmProperty((EdmMapping) 
mockMappingWithType("char"), "String");
+    keyPreds.add(mockKeyPredicate(edmProperty4, "A"));
+    
+    EdmProperty edmProperty5 = mockEdmProperty((EdmMapping) 
mockMappingWithType("characterArray"), "String");
+    keyPreds.add(mockKeyPredicate(edmProperty5, "ABC"));
+    
+    EdmProperty edmProperty6 = mockEdmProperty((EdmMapping) 
mockMappingWithType("charArray"), "String");
+    keyPreds.add(mockKeyPredicate(edmProperty6, "ABC"));
+    
+    EdmProperty edmProperty7 = mockEdmProperty(mapping, "String");
+    keyPreds.add(mockKeyPredicate(edmProperty7, "ABC"));
+    
+    EasyMock.expect(uriInfo.getKeyPredicates()).andStubReturn(keyPreds); 
+    EasyMock.replay(edmEntityType, edmEntitySet, uriInfo);
+    return uriInfo;
+
+  }
+  
+  private List<NavigationSegment> mockNavigationSegments(EdmEntityType 
edmEntityType, 
+      UriInfo uriInfo, EdmEntitySet navEntitySet, EdmEntityType navEntityType) 
throws EdmException {
+    List<NavigationSegment> navSegments = new ArrayList<NavigationSegment>();
+    NavigationSegment navSegment = 
EasyMock.createMock(NavigationSegment.class);
+    EasyMock.expect(navSegment.getEntitySet()).andStubReturn(navEntitySet);
+    EasyMock.expect(navSegment.getKeyPredicates()).andStubReturn(new 
ArrayList<KeyPredicate>());
+    EdmNavigationProperty edmNavProperty = 
EasyMock.createMock(EdmNavigationProperty.class);
+    
EasyMock.expect(navSegment.getNavigationProperty()).andStubReturn(edmNavProperty);
+    EasyMock.expect(edmNavProperty.getFromRole()).andStubReturn("Customers");
+    
EasyMock.expect(edmNavProperty.getToRole()).andStubReturn("SalesOrderHeader");
+    EasyMock.expect(edmNavProperty.getMapping()).andStubReturn((EdmMapping) 
mockNavEdmMappingForProperty());
+    EdmAssociation association = EasyMock.createMock(EdmAssociation.class);
+    
EasyMock.expect(edmNavProperty.getRelationship()).andStubReturn(association);
+    EdmAssociationEnd associationEnd = 
EasyMock.createMock(EdmAssociationEnd.class);
+    
EasyMock.expect(associationEnd.getEntityType()).andStubReturn(edmEntityType);
+    
EasyMock.expect(association.getEnd("Customers")).andStubReturn(associationEnd);
+    navSegments.add(navSegment);
+    
EasyMock.expect(uriInfo.getNavigationSegments()).andStubReturn(navSegments);
+    EasyMock.replay(navSegment, edmNavProperty, association, associationEnd);
+    return navSegments;
+  }
+  
+  private UriInfo mockURIInfoForEntityCount(EdmMapping mapping) throws 
EdmException {
+    
+    EdmEntityType edmEntityType = EasyMock.createMock(EdmEntityType.class);
+    UriInfo uriInfo = EasyMock.createMock(UriInfo.class);
+    EdmEntitySet navEntitySet = EasyMock.createMock(EdmEntitySet.class);
+    EdmEntityType navEntityType = EasyMock.createMock(EdmEntityType.class);
+    List<NavigationSegment> navSegments = 
mockNavigationSegments(edmEntityType, 
+        uriInfo, navEntitySet, navEntityType);
+    
EasyMock.expect(uriInfo.getNavigationSegments()).andStubReturn(navSegments);
+    
+    EasyMock.expect(edmEntityType.getMapping()).andStubReturn(mapping);
+    EdmEntitySet edmEntitySet = EasyMock.createMock(EdmEntitySet.class);
+    EasyMock.expect(edmEntitySet.getEntityType()).andStubReturn(edmEntityType);
+    EasyMock.expect(uriInfo.getStartEntitySet()).andStubReturn(edmEntitySet);
+    EasyMock.expect(uriInfo.getTargetEntitySet()).andStubReturn(navEntitySet);
+    EasyMock.expect(navEntitySet.getEntityType()).andStubReturn(navEntityType);
+    EasyMock.expect(navEntityType.getMapping()).andStubReturn((EdmMapping) 
mockNavEdmMappingForProperty());
+    List<KeyPredicate> keyPreds = new ArrayList<KeyPredicate>();
+    EdmProperty edmProperty = mockEdmProperty(mapping, "String");
+    keyPreds.add(mockKeyPredicate(edmProperty, "Id"));
+    EasyMock.expect(uriInfo.getKeyPredicates()).andStubReturn(keyPreds); 
+    
+    OrderByExpression orderbyExpression = mockOrderByExpressions(uriInfo);
+    EasyMock.replay(edmEntityType, edmEntitySet, uriInfo,  
+        navEntitySet, orderbyExpression);
+    return uriInfo;
+
+  }
+
+  /**
+   * @param uriInfo
+   * @return
+   */
+  private OrderByExpression mockOrderByExpressions(UriInfo uriInfo) {
+    OrderByExpression orderbyExpression = 
EasyMock.createMock(OrderByExpression.class);
+    EasyMock.expect(orderbyExpression.getOrders()).andStubReturn(new 
ArrayList<OrderExpression>());
+    EasyMock.expect(uriInfo.getOrderBy()).andStubReturn(orderbyExpression);
+    EasyMock.expect(uriInfo.getFilter()).andStubReturn(null);
+    return orderbyExpression;
+  }
+  
+  @SuppressWarnings("unchecked")
+  private UriInfo mockURIInfoForEntitySetCount(EdmMapping mapping) throws 
EdmException {
+    
+    UriInfo uriInfo = EasyMock.createMock(UriInfo.class);
+    List<NavigationSegment> navSegments = new ArrayList<NavigationSegment>();
+    
EasyMock.expect(uriInfo.getNavigationSegments()).andStubReturn(navSegments);
+    EdmEntityType edmEntityType = EasyMock.createMock(EdmEntityType.class);
+    EasyMock.expect(edmEntityType.getMapping()).andStubReturn(mapping);
+    EdmEntitySet edmEntitySet = EasyMock.createMock(EdmEntitySet.class);
+    EasyMock.expect(edmEntitySet.getEntityType()).andStubReturn(edmEntityType);
+    EasyMock.expect(uriInfo.getTargetEntitySet()).andStubReturn(edmEntitySet);
+    List<KeyPredicate> keyPreds =EasyMock.createMock(ArrayList.class);
+    EasyMock.expect(uriInfo.getKeyPredicates()).andStubReturn(keyPreds); 
+    OrderByExpression orderbyExpression = mockOrderByExpressions(uriInfo);
+    EasyMock.replay(edmEntityType, edmEntitySet, uriInfo, 
keyPreds,orderbyExpression);
+    return uriInfo;
+
+  }
+  
   private UriInfo mockURIInfoForEntitySet(EdmMapping mapping, String 
methodName) throws EdmException {
     
     UriInfo uriInfo = EasyMock.createMock(UriInfo.class);
@@ -442,7 +748,7 @@ public class JPAQueryBuilderTest {
       EasyMock.expect(propExp.getEdmProperty()).andStubReturn(edmProperty);
       
EasyMock.expect(propExp.getKind()).andStubReturn(ExpressionKind.PROPERTY);
       parameterList.add(propExp);
-    } else if ("startsWith".equals(methodName) || 
"endsWith".equals(methodName)) {
+    } else if ("startsWith".equals(methodName)) {
       
EasyMock.expect(commonExpression.getMethod()).andStubReturn(MethodOperator.STARTSWITH);
       EasyMock.expect(commonExpression.getParameterCount()).andStubReturn(2);
       EasyMock.expect(propExp.getEdmProperty()).andStubReturn(edmProperty);
@@ -452,6 +758,16 @@ public class JPAQueryBuilderTest {
       
EasyMock.expect(literalExp.getKind()).andStubReturn(ExpressionKind.LITERAL);
       
EasyMock.expect(literalExp.getEdmType()).andStubReturn(EdmSimpleTypeKind.String.getEdmSimpleTypeInstance());
       parameterList.add(literalExp);
+    } else if ("endsWith".equals(methodName)) {
+      
EasyMock.expect(commonExpression.getMethod()).andStubReturn(MethodOperator.ENDSWITH);
+      EasyMock.expect(commonExpression.getParameterCount()).andStubReturn(2);
+      EasyMock.expect(propExp.getEdmProperty()).andStubReturn(edmProperty);
+      
EasyMock.expect(propExp.getKind()).andStubReturn(ExpressionKind.PROPERTY);
+      parameterList.add(propExp);
+      EasyMock.expect(literalExp.getUriLiteral()).andStubReturn("'a.b.c'");
+      
EasyMock.expect(literalExp.getKind()).andStubReturn(ExpressionKind.LITERAL);
+      
EasyMock.expect(literalExp.getEdmType()).andStubReturn(EdmSimpleTypeKind.String.getEdmSimpleTypeInstance());
+      parameterList.add(literalExp);
     } else if ("substringof_1".equals(methodName)) {
       
EasyMock.expect(commonExpression.getMethod()).andStubReturn(MethodOperator.SUBSTRINGOF);
       EasyMock.expect(commonExpression.getParameterCount()).andStubReturn(2);
@@ -586,6 +902,21 @@ public class JPAQueryBuilderTest {
     return mockedEdmMapping;
   }
   
+  private JPAEdmMapping mockMappingWithType(String type) {
+    JPAEdmMappingImpl mockedEdmMapping = new JPAEdmMappingImpl();
+    mockedEdmMapping.setInternalName("Customer");
+    if (type.equals("Character")) {
+      mockedEdmMapping.setJPAType(Character.class);
+    } else if (type.equals("char")) {
+      mockedEdmMapping.setJPAType(char.class);
+    } else if (type.equals("charArray")) {
+      mockedEdmMapping.setJPAType(char[].class);
+    } else if (type.equals("characterArray")) {
+      mockedEdmMapping.setJPAType(Character[].class);
+    }
+    return mockedEdmMapping;
+  }
+  
 
   private JPAEdmMapping mockNormalizedMapping() {
     JPAEdmMappingImpl mockedEdmMapping = new JPAEdmMappingImpl();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/53b631bf/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLJoinSelectSingleStatementBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLJoinSelectSingleStatementBuilderTest.java
 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLJoinSelectSingleStatementBuilderTest.java
index 7b6b8c4..55bcdb4 100644
--- 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLJoinSelectSingleStatementBuilderTest.java
+++ 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLJoinSelectSingleStatementBuilderTest.java
@@ -58,6 +58,9 @@ public class JPQLJoinSelectSingleStatementBuilderTest {
     
EasyMock.expect(context.getKeyPredicates()).andStubReturn(createKeyPredicates());
     EasyMock.expect(context.getSelectExpression()).andStubReturn("gt1");
     EasyMock.expect(context.getJPAJoinClauses()).andStubReturn(joinClauseList);
+    context.setJPQLStatement("SELECT gt1 FROM SOHeader soh JOIN "
+        + "soh.soItem soi JOIN soi.material mat WHERE soh.soId = 1 AND " +
+            "soi.shId = soh.soId AND mat.id = 'abc'");
     EasyMock.replay(context);
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/53b631bf/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLJoinStatementBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLJoinStatementBuilderTest.java
 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLJoinStatementBuilderTest.java
index 5701a4c..76e0cc9 100644
--- 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLJoinStatementBuilderTest.java
+++ 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLJoinStatementBuilderTest.java
@@ -55,6 +55,12 @@ public class JPQLJoinStatementBuilderTest {
     String orderByMap = new String("mat.buyerId asc , mat.city desc");
     EasyMock.expect(context.getOrderByCollection()).andStubReturn(orderByMap);
     EasyMock.expect(context.getJPAJoinClauses()).andStubReturn(joinClauseList);
+    context.setJPQLStatement("SELECT mat FROM SOHeader soh JOIN soh.soItem soi 
"
+        + "JOIN soi.material mat WHERE soh.buyerId = 2 AND "
+              +
+              "soh.createdBy = 'Peter' AND soi.shId = soh.soId AND mat.id = 
'abc' "
+              +
+              "ORDER BY mat.buyerId asc , mat.city desc");
     EasyMock.replay(context);
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/53b631bf/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLSelectSingleStatementBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLSelectSingleStatementBuilderTest.java
 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLSelectSingleStatementBuilderTest.java
index 1a7b13b..e6897ed 100644
--- 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLSelectSingleStatementBuilderTest.java
+++ 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/jpql/JPQLSelectSingleStatementBuilderTest.java
@@ -40,7 +40,6 @@ import 
org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeExcep
 import org.apache.olingo.odata2.jpa.processor.api.jpql.JPQLContext;
 import 
org.apache.olingo.odata2.jpa.processor.api.jpql.JPQLContext.JPQLContextBuilder;
 import org.apache.olingo.odata2.jpa.processor.api.jpql.JPQLContextType;
-import 
org.apache.olingo.odata2.jpa.processor.core.ODataParameterizedWhereExpressionUtil;
 import org.apache.olingo.odata2.jpa.processor.core.model.JPAEdmMappingImpl;
 import org.easymock.EasyMock;
 import org.junit.Before;
@@ -139,11 +138,11 @@ public class JPQLSelectSingleStatementBuilderTest {
 
     String query = JPQLSelectSingleStatementBuilder.build().toString();
     query = query.substring(0, query.indexOf("?"));
-    Map<String, Map<Integer, Object>> positionalParameters = 
-        ODataParameterizedWhereExpressionUtil.getParameterizedQueryMap();
-    for (Entry<String, Map<Integer, Object>> param : 
positionalParameters.entrySet()) {
-      for (Entry<Integer, Object> postionalParam : 
param.getValue().entrySet()) {
-        query += postionalParam.getValue();
+    Map<String, Map<Integer,Object>> parameterizedQuery = 
JPQLSelectSingleContextImpl.
+        getParameterizedQueryMap();
+    for (Entry<String, Map<Integer, Object>> parameter : 
parameterizedQuery.entrySet()) {
+      for (Entry<Integer, Object> param : parameter.getValue().entrySet()) {
+        query += param.getValue();
       }
     }
     
@@ -166,11 +165,11 @@ public class JPQLSelectSingleStatementBuilderTest {
 
     String query = JPQLSelectSingleStatementBuilder.build().toString();
     query = query.substring(0, query.indexOf("?"));
-    Map<String, Map<Integer, Object>> positionalParameters = 
-        ODataParameterizedWhereExpressionUtil.getParameterizedQueryMap();
-    for (Entry<String, Map<Integer, Object>> param : 
positionalParameters.entrySet()) {
-      for (Entry<Integer, Object> postionalParam : 
param.getValue().entrySet()) {
-        query += postionalParam.getValue();
+    Map<String, Map<Integer,Object>> parameterizedQuery = 
JPQLSelectSingleContextImpl.
+        getParameterizedQueryMap();
+    for (Entry<String, Map<Integer, Object>> parameter : 
parameterizedQuery.entrySet()) {
+      for (Entry<Integer, Object> param : parameter.getValue().entrySet()) {
+        query += param.getValue();
       }
     }
     

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/53b631bf/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
----------------------------------------------------------------------
diff --git 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
index c218bfb..69980e6 100644
--- 
a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
+++ 
b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/mock/ODataJPAContextMock.java
@@ -18,12 +18,15 @@
  
******************************************************************************/
 package org.apache.olingo.odata2.jpa.processor.core.mock;
 
+import java.sql.Time;
+import java.util.Calendar;
 import java.util.HashSet;
 import java.util.Set;
 
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Query;
+import javax.persistence.TemporalType;
 import javax.persistence.metamodel.EntityType;
 import javax.persistence.metamodel.Metamodel;
 
@@ -75,10 +78,14 @@ public abstract class ODataJPAContextMock {
     EasyMock.expect(em.isOpen()).andReturn(true).anyTimes();
     Query jpqlquery = EasyMock.createMock(Query.class);
     Capture<String> capturedArgument = new Capture<String>();
-    
EasyMock.expect(em.createQuery(EasyMock.capture(capturedArgument))).andReturn(jpqlquery);
+    
EasyMock.expect(em.createQuery(EasyMock.capture(capturedArgument))).andReturn(jpqlquery).anyTimes();
     EasyMock.expect(jpqlquery.setParameter(EasyMock.anyInt(), 
EasyMock.anyObject()))
-    .andReturn(jpqlquery).anyTimes();
-    EasyMock.replay(em,mm,jpqlquery);
+        .andReturn(jpqlquery).anyTimes();
+    EasyMock.expect(jpqlquery.setParameter(EasyMock.anyInt(), (Calendar) 
EasyMock.anyObject(), 
+        
EasyMock.anyObject(TemporalType.TIMESTAMP.getClass()))).andReturn(jpqlquery).anyTimes();
+    EasyMock.expect(jpqlquery.setParameter(EasyMock.anyInt(), (Time) 
EasyMock.anyObject(), 
+        
EasyMock.anyObject(TemporalType.TIME.getClass()))).andReturn(jpqlquery).anyTimes();
+    EasyMock.replay(em, mm, jpqlquery);
     return em;
 
   }

Reply via email to