You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2014/09/02 13:49:21 UTC

[01/50] [abbrv] git commit: [OLINGO-308] fix for json

Repository: olingo-odata2
Updated Branches:
  refs/heads/Olingo-129_PocJpaDataStore 4528e8d36 -> c23dbcb5e


[OLINGO-308] fix for json


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/d7c68240
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/d7c68240
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/d7c68240

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: d7c682400384c8388bcb0025a98376729164d3c4
Parents: d8afd01
Author: Stephan Klevenz <sk...@apache.org>
Authored: Wed May 28 16:45:16 2014 +0200
Committer: Stephan Klevenz <sk...@apache.org>
Committed: Wed May 28 16:45:16 2014 +0200

----------------------------------------------------------------------
 .../ep/producer/JsonEntryEntityProducer.java    | 35 +++++++++++++-------
 .../producer/JsonEntryEntityProducerTest.java   | 25 ++++++++++++++
 2 files changed, 48 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/d7c68240/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
index 8ad5d42..c1b52fa 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
@@ -45,6 +45,7 @@ import org.apache.olingo.odata2.api.exception.ODataApplicationException;
 import org.apache.olingo.odata2.core.commons.ContentType;
 import org.apache.olingo.odata2.core.commons.Encoder;
 import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
 import org.apache.olingo.odata2.core.ep.util.FormatJson;
 import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
 
@@ -80,8 +81,10 @@ public class JsonEntryEntityProducer {
 
       writeProperties(entityInfo, data, type);
 
-      writeNavigationProperties(writer, entityInfo, data, type);
-
+      if (!properties.isIgnoreKey()) {
+        writeNavigationProperties(writer, entityInfo, data, type);
+      }
+      
       jsonStreamWriter.endObject();
 
       if (isRootElement) {
@@ -175,10 +178,15 @@ public class JsonEntryEntityProducer {
       final EdmEntityType type) throws EdmException, EntityProviderException, IOException {
     for (final String propertyName : type.getPropertyNames()) {
       if (entityInfo.getSelectedPropertyNames().contains(propertyName)) {
-        jsonStreamWriter.separator();
-        jsonStreamWriter.name(propertyName);
-        JsonPropertyEntityProducer.appendPropertyValue(jsonStreamWriter, entityInfo.getPropertyInfo(propertyName),
-            data.get(propertyName));
+
+        EntityPropertyInfo propertyInfo = entityInfo.getPropertyInfo(propertyName);
+        if (!(entityInfo.getKeyPropertyInfos().contains(propertyInfo) && properties.isIgnoreKey())) {
+
+          jsonStreamWriter.separator();
+          jsonStreamWriter.name(propertyName);
+          JsonPropertyEntityProducer.appendPropertyValue(jsonStreamWriter, entityInfo.getPropertyInfo(propertyName),
+              data.get(propertyName));
+        }
       }
     }
   }
@@ -187,12 +195,15 @@ public class JsonEntryEntityProducer {
       final EdmEntityType type) throws IOException, EntityProviderException, EdmException {
     jsonStreamWriter.name(FormatJson.METADATA);
     jsonStreamWriter.beginObject();
-    final String self = AtomEntryEntityProducer.createSelfLink(entityInfo, data, null);
-    location = (properties.getServiceRoot() == null ? "" : properties.getServiceRoot().toASCIIString()) + self;
-    jsonStreamWriter.namedStringValue(FormatJson.ID, location);
-    jsonStreamWriter.separator();
-    jsonStreamWriter.namedStringValue(FormatJson.URI, location);
-    jsonStreamWriter.separator();
+    String self = null;
+    if (!properties.isIgnoreKey()) {
+      self = AtomEntryEntityProducer.createSelfLink(entityInfo, data, null);
+      location = (properties.getServiceRoot() == null ? "" : properties.getServiceRoot().toASCIIString()) + self;
+      jsonStreamWriter.namedStringValue(FormatJson.ID, location);
+      jsonStreamWriter.separator();
+      jsonStreamWriter.namedStringValue(FormatJson.URI, location);
+      jsonStreamWriter.separator();
+    }
     jsonStreamWriter.namedStringValueRaw(FormatJson.TYPE, type.getNamespace() + Edm.DELIMITER + type.getName());
     eTag = AtomEntryEntityProducer.createETag(entityInfo, data);
     if (eTag != null) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/d7c68240/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
index 8efd99a..7593349 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
@@ -18,6 +18,8 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.core.ep.producer;
 
+import static org.custommonkey.xmlunit.XMLAssert.assertXpathEvaluatesTo;
+import static org.custommonkey.xmlunit.XMLAssert.assertXpathExists;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
@@ -53,6 +55,8 @@ import org.apache.olingo.odata2.api.ep.callback.WriteFeedCallbackResult;
 import org.apache.olingo.odata2.api.exception.ODataApplicationException;
 import org.apache.olingo.odata2.api.processor.ODataResponse;
 import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
+import org.apache.olingo.odata2.core.commons.ContentType;
+import org.apache.olingo.odata2.core.ep.AtomEntityProvider;
 import org.apache.olingo.odata2.core.ep.JsonEntityProvider;
 import org.apache.olingo.odata2.testutil.fit.BaseTest;
 import org.apache.olingo.odata2.testutil.helper.StringHelper;
@@ -770,4 +774,25 @@ public class JsonEntryEntityProducerTest extends BaseTest {
     assertNotNull(json);
     return json;
   }
+
+  @Test
+  public void testPostEntryWithoutId() throws Exception {
+    HashMap<String, Object> roomData = new HashMap<String, Object>();
+
+    roomData.put("Name", "Neu Schwanstein");
+    roomData.put("Seats", new Integer(20));
+    roomData.put("Version", new Integer(3));
+
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(URI.create(BASE_URI)).ignoreKey(true).build();
+    ODataResponse response =
+        new JsonEntityProvider().writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms"),
+            roomData, properties);
+
+    String json = verifyResponse(response);
+
+    assertEquals("{\"d\":{\"__metadata\":{\"type\":\"RefScenario.Room\",\"etag\":\"W/\\\"3\\\"\"},"
+        + "\"Name\":\"Neu Schwanstein\",\"Seats\":20,\"Version\":3}}", json);
+  }
+
 }


[45/50] [abbrv] [OLINGO-379] Normalize file endings (for OSX)

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarEdmProvider.java
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarEdmProvider.java b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarEdmProvider.java
index d1ecdac..3d65f08 100644
--- a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarEdmProvider.java
+++ b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarEdmProvider.java
@@ -1,281 +1,281 @@
 #set( $symbol_pound = '#' )
 #set( $symbol_dollar = '$' )
 #set( $symbol_escape = '\' )
-/*******************************************************************************
- * 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 ${package};
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
-import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
-import org.apache.olingo.odata2.api.edm.EdmTargetPath;
-import org.apache.olingo.odata2.api.edm.FullQualifiedName;
-import org.apache.olingo.odata2.api.edm.provider.Association;
-import org.apache.olingo.odata2.api.edm.provider.AssociationEnd;
-import org.apache.olingo.odata2.api.edm.provider.AssociationSet;
-import org.apache.olingo.odata2.api.edm.provider.AssociationSetEnd;
-import org.apache.olingo.odata2.api.edm.provider.ComplexProperty;
-import org.apache.olingo.odata2.api.edm.provider.ComplexType;
-import org.apache.olingo.odata2.api.edm.provider.CustomizableFeedMappings;
-import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
-import org.apache.olingo.odata2.api.edm.provider.EntityContainer;
-import org.apache.olingo.odata2.api.edm.provider.EntityContainerInfo;
-import org.apache.olingo.odata2.api.edm.provider.EntitySet;
-import org.apache.olingo.odata2.api.edm.provider.EntityType;
-import org.apache.olingo.odata2.api.edm.provider.Facets;
-import org.apache.olingo.odata2.api.edm.provider.FunctionImport;
-import org.apache.olingo.odata2.api.edm.provider.Key;
-import org.apache.olingo.odata2.api.edm.provider.NavigationProperty;
-import org.apache.olingo.odata2.api.edm.provider.Property;
-import org.apache.olingo.odata2.api.edm.provider.PropertyRef;
-import org.apache.olingo.odata2.api.edm.provider.ReturnType;
-import org.apache.olingo.odata2.api.edm.provider.Schema;
-import org.apache.olingo.odata2.api.edm.provider.SimpleProperty;
-import org.apache.olingo.odata2.api.exception.ODataException;
-
-public class CarEdmProvider extends EdmProvider {
-
-  static final String ENTITY_SET_NAME_MANUFACTURERS = "Manufacturers";
-  static final String ENTITY_SET_NAME_CARS = "Cars";
-  static final String ENTITY_NAME_MANUFACTURER = "Manufacturer";
-  static final String ENTITY_NAME_CAR = "Car";
-
-  private static final String NAMESPACE = "org.apache.olingo.odata2.ODataCars";
-
-  private static final FullQualifiedName ENTITY_TYPE_1_1 = new FullQualifiedName(NAMESPACE, ENTITY_NAME_CAR);
-  private static final FullQualifiedName ENTITY_TYPE_1_2 = new FullQualifiedName(NAMESPACE, ENTITY_NAME_MANUFACTURER);
-
-  private static final FullQualifiedName COMPLEX_TYPE = new FullQualifiedName(NAMESPACE, "Address");
-
-  private static final FullQualifiedName ASSOCIATION_CAR_MANUFACTURER = new FullQualifiedName(NAMESPACE,
-      "Car_Manufacturer_Manufacturer_Cars");
-
-  private static final String ROLE_1_1 = "Car_Manufacturer";
-  private static final String ROLE_1_2 = "Manufacturer_Cars";
-
-  private static final String ENTITY_CONTAINER = "ODataCarsEntityContainer";
-
-  private static final String ASSOCIATION_SET = "Cars_Manufacturers";
-
-  private static final String FUNCTION_IMPORT = "NumberOfCars";
-
-  @Override
-  public List<Schema> getSchemas() throws ODataException {
-    List<Schema> schemas = new ArrayList<Schema>();
-
-    Schema schema = new Schema();
-    schema.setNamespace(NAMESPACE);
-
-    List<EntityType> entityTypes = new ArrayList<EntityType>();
-    entityTypes.add(getEntityType(ENTITY_TYPE_1_1));
-    entityTypes.add(getEntityType(ENTITY_TYPE_1_2));
-    schema.setEntityTypes(entityTypes);
-
-    List<ComplexType> complexTypes = new ArrayList<ComplexType>();
-    complexTypes.add(getComplexType(COMPLEX_TYPE));
-    schema.setComplexTypes(complexTypes);
-
-    List<Association> associations = new ArrayList<Association>();
-    associations.add(getAssociation(ASSOCIATION_CAR_MANUFACTURER));
-    schema.setAssociations(associations);
-
-    List<EntityContainer> entityContainers = new ArrayList<EntityContainer>();
-    EntityContainer entityContainer = new EntityContainer();
-    entityContainer.setName(ENTITY_CONTAINER).setDefaultEntityContainer(true);
-
-    List<EntitySet> entitySets = new ArrayList<EntitySet>();
-    entitySets.add(getEntitySet(ENTITY_CONTAINER, ENTITY_SET_NAME_CARS));
-    entitySets.add(getEntitySet(ENTITY_CONTAINER, ENTITY_SET_NAME_MANUFACTURERS));
-    entityContainer.setEntitySets(entitySets);
-
-    List<AssociationSet> associationSets = new ArrayList<AssociationSet>();
-    associationSets.add(getAssociationSet(ENTITY_CONTAINER, ASSOCIATION_CAR_MANUFACTURER,
-        ENTITY_SET_NAME_MANUFACTURERS, ROLE_1_2));
-    entityContainer.setAssociationSets(associationSets);
-
-    List<FunctionImport> functionImports = new ArrayList<FunctionImport>();
-    functionImports.add(getFunctionImport(ENTITY_CONTAINER, FUNCTION_IMPORT));
-    entityContainer.setFunctionImports(functionImports);
-
-    entityContainers.add(entityContainer);
-    schema.setEntityContainers(entityContainers);
-
-    schemas.add(schema);
-
-    return schemas;
-  }
-
-  @Override
-  public EntityType getEntityType(final FullQualifiedName edmFQName) throws ODataException {
-    if (NAMESPACE.equals(edmFQName.getNamespace())) {
-
-      if (ENTITY_TYPE_1_1.getName().equals(edmFQName.getName())) {
-
-        // Properties
-        List<Property> properties = new ArrayList<Property>();
-        properties.add(new SimpleProperty().setName("Id").setType(EdmSimpleTypeKind.Int32).setFacets(
-            new Facets().setNullable(false)));
-        properties.add(new SimpleProperty().setName("Model").setType(EdmSimpleTypeKind.String).setFacets(
-            new Facets().setNullable(false).setMaxLength(100).setDefaultValue("Hugo"))
-            .setCustomizableFeedMappings(
-                new CustomizableFeedMappings().setFcTargetPath(EdmTargetPath.SYNDICATION_TITLE)));
-        properties.add(new SimpleProperty().setName("ManufacturerId").setType(EdmSimpleTypeKind.Int32));
-        properties.add(new SimpleProperty().setName("Price").setType(EdmSimpleTypeKind.Decimal));
-        properties.add(new SimpleProperty().setName("Currency").setType(EdmSimpleTypeKind.String).setFacets(
-            new Facets().setMaxLength(3)));
-        properties.add(new SimpleProperty().setName("ModelYear").setType(EdmSimpleTypeKind.String).setFacets(
-            new Facets().setMaxLength(4)));
-        properties.add(new SimpleProperty().setName("Updated").setType(EdmSimpleTypeKind.DateTime)
-            .setFacets(new Facets().setNullable(false).setConcurrencyMode(EdmConcurrencyMode.Fixed))
-            .setCustomizableFeedMappings(
-                new CustomizableFeedMappings().setFcTargetPath(EdmTargetPath.SYNDICATION_UPDATED)));
-        properties.add(new SimpleProperty().setName("ImagePath").setType(EdmSimpleTypeKind.String));
-
-        // Navigation Properties
-        List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
-        navigationProperties.add(new NavigationProperty().setName("Manufacturer")
-            .setRelationship(ASSOCIATION_CAR_MANUFACTURER).setFromRole(ROLE_1_1).setToRole(ROLE_1_2));
-
-        // Key
-        List<PropertyRef> keyProperties = new ArrayList<PropertyRef>();
-        keyProperties.add(new PropertyRef().setName("Id"));
-        Key key = new Key().setKeys(keyProperties);
-
-        return new EntityType().setName(ENTITY_TYPE_1_1.getName())
-            .setProperties(properties)
-            .setKey(key)
-            .setNavigationProperties(navigationProperties);
-
-      } else if (ENTITY_TYPE_1_2.getName().equals(edmFQName.getName())) {
-
-        // Properties
-        List<Property> properties = new ArrayList<Property>();
-        properties.add(new SimpleProperty().setName("Id").setType(EdmSimpleTypeKind.Int32).setFacets(
-            new Facets().setNullable(false)));
-        properties.add(new SimpleProperty().setName("Name").setType(EdmSimpleTypeKind.String).setFacets(
-            new Facets().setNullable(false).setMaxLength(100))
-            .setCustomizableFeedMappings(
-                new CustomizableFeedMappings().setFcTargetPath(EdmTargetPath.SYNDICATION_TITLE)));
-        properties.add(new ComplexProperty().setName("Address").setType(new FullQualifiedName(NAMESPACE, "Address")));
-        properties.add(new SimpleProperty().setName("Updated").setType(EdmSimpleTypeKind.DateTime)
-            .setFacets(new Facets().setNullable(false).setConcurrencyMode(EdmConcurrencyMode.Fixed))
-            .setCustomizableFeedMappings(
-                new CustomizableFeedMappings().setFcTargetPath(EdmTargetPath.SYNDICATION_UPDATED)));
-
-        // Navigation Properties
-        List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
-        navigationProperties.add(new NavigationProperty().setName("Cars")
-            .setRelationship(ASSOCIATION_CAR_MANUFACTURER).setFromRole(ROLE_1_2).setToRole(ROLE_1_1));
-
-        // Key
-        List<PropertyRef> keyProperties = new ArrayList<PropertyRef>();
-        keyProperties.add(new PropertyRef().setName("Id"));
-        Key key = new Key().setKeys(keyProperties);
-
-        return new EntityType().setName(ENTITY_TYPE_1_2.getName())
-            .setProperties(properties)
-            .setKey(key)
-            .setNavigationProperties(navigationProperties);
-
-      }
-    }
-
-    return null;
-  }
-
-  @Override
-  public ComplexType getComplexType(final FullQualifiedName edmFQName) throws ODataException {
-    if (NAMESPACE.equals(edmFQName.getNamespace())) {
-      if (COMPLEX_TYPE.getName().equals(edmFQName.getName())) {
-        List<Property> properties = new ArrayList<Property>();
-        properties.add(new SimpleProperty().setName("Street").setType(EdmSimpleTypeKind.String));
-        properties.add(new SimpleProperty().setName("City").setType(EdmSimpleTypeKind.String));
-        properties.add(new SimpleProperty().setName("ZipCode").setType(EdmSimpleTypeKind.String));
-        properties.add(new SimpleProperty().setName("Country").setType(EdmSimpleTypeKind.String));
-        return new ComplexType().setName(COMPLEX_TYPE.getName()).setProperties(properties);
-      }
-    }
-
-    return null;
-  }
-
-  @Override
-  public Association getAssociation(final FullQualifiedName edmFQName) throws ODataException {
-    if (NAMESPACE.equals(edmFQName.getNamespace())) {
-      if (ASSOCIATION_CAR_MANUFACTURER.getName().equals(edmFQName.getName())) {
-        return new Association().setName(ASSOCIATION_CAR_MANUFACTURER.getName())
-            .setEnd1(
-                new AssociationEnd().setType(ENTITY_TYPE_1_1).setRole(ROLE_1_1).setMultiplicity(EdmMultiplicity.MANY))
-            .setEnd2(
-                new AssociationEnd().setType(ENTITY_TYPE_1_2).setRole(ROLE_1_2).setMultiplicity(EdmMultiplicity.ONE));
-      }
-    }
-    return null;
-  }
-
-  @Override
-  public EntitySet getEntitySet(final String entityContainer, final String name) throws ODataException {
-    if (ENTITY_CONTAINER.equals(entityContainer)) {
-      if (ENTITY_SET_NAME_CARS.equals(name)) {
-        return new EntitySet().setName(name).setEntityType(ENTITY_TYPE_1_1);
-      } else if (ENTITY_SET_NAME_MANUFACTURERS.equals(name)) {
-        return new EntitySet().setName(name).setEntityType(ENTITY_TYPE_1_2);
-      }
-    }
-    return null;
-  }
-
-  @Override
-  public AssociationSet getAssociationSet(final String entityContainer, final FullQualifiedName association,
-      final String sourceEntitySetName, final String sourceEntitySetRole) throws ODataException {
-    if (ENTITY_CONTAINER.equals(entityContainer)) {
-      if (ASSOCIATION_CAR_MANUFACTURER.equals(association)) {
-        return new AssociationSet().setName(ASSOCIATION_SET)
-            .setAssociation(ASSOCIATION_CAR_MANUFACTURER)
-            .setEnd1(new AssociationSetEnd().setRole(ROLE_1_2).setEntitySet(ENTITY_SET_NAME_MANUFACTURERS))
-            .setEnd2(new AssociationSetEnd().setRole(ROLE_1_1).setEntitySet(ENTITY_SET_NAME_CARS));
-      }
-    }
-    return null;
-  }
-
-  @Override
-  public FunctionImport getFunctionImport(final String entityContainer, final String name) throws ODataException {
-    if (ENTITY_CONTAINER.equals(entityContainer)) {
-      if (FUNCTION_IMPORT.equals(name)) {
-        return new FunctionImport().setName(name)
-            .setReturnType(new ReturnType().setTypeName(ENTITY_TYPE_1_1).setMultiplicity(EdmMultiplicity.MANY))
-            .setHttpMethod("GET");
-      }
-    }
-    return null;
-  }
-
-  @Override
-  public EntityContainerInfo getEntityContainerInfo(final String name) throws ODataException {
-    if (name == null || "ODataCarsEntityContainer".equals(name)) {
-      return new EntityContainerInfo().setName("ODataCarsEntityContainer").setDefaultEntityContainer(true);
-    }
-
-    return null;
-  }
-}
+/*******************************************************************************
+ * 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 ${package};
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
+import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
+import org.apache.olingo.odata2.api.edm.EdmTargetPath;
+import org.apache.olingo.odata2.api.edm.FullQualifiedName;
+import org.apache.olingo.odata2.api.edm.provider.Association;
+import org.apache.olingo.odata2.api.edm.provider.AssociationEnd;
+import org.apache.olingo.odata2.api.edm.provider.AssociationSet;
+import org.apache.olingo.odata2.api.edm.provider.AssociationSetEnd;
+import org.apache.olingo.odata2.api.edm.provider.ComplexProperty;
+import org.apache.olingo.odata2.api.edm.provider.ComplexType;
+import org.apache.olingo.odata2.api.edm.provider.CustomizableFeedMappings;
+import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata2.api.edm.provider.EntityContainer;
+import org.apache.olingo.odata2.api.edm.provider.EntityContainerInfo;
+import org.apache.olingo.odata2.api.edm.provider.EntitySet;
+import org.apache.olingo.odata2.api.edm.provider.EntityType;
+import org.apache.olingo.odata2.api.edm.provider.Facets;
+import org.apache.olingo.odata2.api.edm.provider.FunctionImport;
+import org.apache.olingo.odata2.api.edm.provider.Key;
+import org.apache.olingo.odata2.api.edm.provider.NavigationProperty;
+import org.apache.olingo.odata2.api.edm.provider.Property;
+import org.apache.olingo.odata2.api.edm.provider.PropertyRef;
+import org.apache.olingo.odata2.api.edm.provider.ReturnType;
+import org.apache.olingo.odata2.api.edm.provider.Schema;
+import org.apache.olingo.odata2.api.edm.provider.SimpleProperty;
+import org.apache.olingo.odata2.api.exception.ODataException;
+
+public class CarEdmProvider extends EdmProvider {
+
+  static final String ENTITY_SET_NAME_MANUFACTURERS = "Manufacturers";
+  static final String ENTITY_SET_NAME_CARS = "Cars";
+  static final String ENTITY_NAME_MANUFACTURER = "Manufacturer";
+  static final String ENTITY_NAME_CAR = "Car";
+
+  private static final String NAMESPACE = "org.apache.olingo.odata2.ODataCars";
+
+  private static final FullQualifiedName ENTITY_TYPE_1_1 = new FullQualifiedName(NAMESPACE, ENTITY_NAME_CAR);
+  private static final FullQualifiedName ENTITY_TYPE_1_2 = new FullQualifiedName(NAMESPACE, ENTITY_NAME_MANUFACTURER);
+
+  private static final FullQualifiedName COMPLEX_TYPE = new FullQualifiedName(NAMESPACE, "Address");
+
+  private static final FullQualifiedName ASSOCIATION_CAR_MANUFACTURER = new FullQualifiedName(NAMESPACE,
+      "Car_Manufacturer_Manufacturer_Cars");
+
+  private static final String ROLE_1_1 = "Car_Manufacturer";
+  private static final String ROLE_1_2 = "Manufacturer_Cars";
+
+  private static final String ENTITY_CONTAINER = "ODataCarsEntityContainer";
+
+  private static final String ASSOCIATION_SET = "Cars_Manufacturers";
+
+  private static final String FUNCTION_IMPORT = "NumberOfCars";
+
+  @Override
+  public List<Schema> getSchemas() throws ODataException {
+    List<Schema> schemas = new ArrayList<Schema>();
+
+    Schema schema = new Schema();
+    schema.setNamespace(NAMESPACE);
+
+    List<EntityType> entityTypes = new ArrayList<EntityType>();
+    entityTypes.add(getEntityType(ENTITY_TYPE_1_1));
+    entityTypes.add(getEntityType(ENTITY_TYPE_1_2));
+    schema.setEntityTypes(entityTypes);
+
+    List<ComplexType> complexTypes = new ArrayList<ComplexType>();
+    complexTypes.add(getComplexType(COMPLEX_TYPE));
+    schema.setComplexTypes(complexTypes);
+
+    List<Association> associations = new ArrayList<Association>();
+    associations.add(getAssociation(ASSOCIATION_CAR_MANUFACTURER));
+    schema.setAssociations(associations);
+
+    List<EntityContainer> entityContainers = new ArrayList<EntityContainer>();
+    EntityContainer entityContainer = new EntityContainer();
+    entityContainer.setName(ENTITY_CONTAINER).setDefaultEntityContainer(true);
+
+    List<EntitySet> entitySets = new ArrayList<EntitySet>();
+    entitySets.add(getEntitySet(ENTITY_CONTAINER, ENTITY_SET_NAME_CARS));
+    entitySets.add(getEntitySet(ENTITY_CONTAINER, ENTITY_SET_NAME_MANUFACTURERS));
+    entityContainer.setEntitySets(entitySets);
+
+    List<AssociationSet> associationSets = new ArrayList<AssociationSet>();
+    associationSets.add(getAssociationSet(ENTITY_CONTAINER, ASSOCIATION_CAR_MANUFACTURER,
+        ENTITY_SET_NAME_MANUFACTURERS, ROLE_1_2));
+    entityContainer.setAssociationSets(associationSets);
+
+    List<FunctionImport> functionImports = new ArrayList<FunctionImport>();
+    functionImports.add(getFunctionImport(ENTITY_CONTAINER, FUNCTION_IMPORT));
+    entityContainer.setFunctionImports(functionImports);
+
+    entityContainers.add(entityContainer);
+    schema.setEntityContainers(entityContainers);
+
+    schemas.add(schema);
+
+    return schemas;
+  }
+
+  @Override
+  public EntityType getEntityType(final FullQualifiedName edmFQName) throws ODataException {
+    if (NAMESPACE.equals(edmFQName.getNamespace())) {
+
+      if (ENTITY_TYPE_1_1.getName().equals(edmFQName.getName())) {
+
+        // Properties
+        List<Property> properties = new ArrayList<Property>();
+        properties.add(new SimpleProperty().setName("Id").setType(EdmSimpleTypeKind.Int32).setFacets(
+            new Facets().setNullable(false)));
+        properties.add(new SimpleProperty().setName("Model").setType(EdmSimpleTypeKind.String).setFacets(
+            new Facets().setNullable(false).setMaxLength(100).setDefaultValue("Hugo"))
+            .setCustomizableFeedMappings(
+                new CustomizableFeedMappings().setFcTargetPath(EdmTargetPath.SYNDICATION_TITLE)));
+        properties.add(new SimpleProperty().setName("ManufacturerId").setType(EdmSimpleTypeKind.Int32));
+        properties.add(new SimpleProperty().setName("Price").setType(EdmSimpleTypeKind.Decimal));
+        properties.add(new SimpleProperty().setName("Currency").setType(EdmSimpleTypeKind.String).setFacets(
+            new Facets().setMaxLength(3)));
+        properties.add(new SimpleProperty().setName("ModelYear").setType(EdmSimpleTypeKind.String).setFacets(
+            new Facets().setMaxLength(4)));
+        properties.add(new SimpleProperty().setName("Updated").setType(EdmSimpleTypeKind.DateTime)
+            .setFacets(new Facets().setNullable(false).setConcurrencyMode(EdmConcurrencyMode.Fixed))
+            .setCustomizableFeedMappings(
+                new CustomizableFeedMappings().setFcTargetPath(EdmTargetPath.SYNDICATION_UPDATED)));
+        properties.add(new SimpleProperty().setName("ImagePath").setType(EdmSimpleTypeKind.String));
+
+        // Navigation Properties
+        List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
+        navigationProperties.add(new NavigationProperty().setName("Manufacturer")
+            .setRelationship(ASSOCIATION_CAR_MANUFACTURER).setFromRole(ROLE_1_1).setToRole(ROLE_1_2));
+
+        // Key
+        List<PropertyRef> keyProperties = new ArrayList<PropertyRef>();
+        keyProperties.add(new PropertyRef().setName("Id"));
+        Key key = new Key().setKeys(keyProperties);
+
+        return new EntityType().setName(ENTITY_TYPE_1_1.getName())
+            .setProperties(properties)
+            .setKey(key)
+            .setNavigationProperties(navigationProperties);
+
+      } else if (ENTITY_TYPE_1_2.getName().equals(edmFQName.getName())) {
+
+        // Properties
+        List<Property> properties = new ArrayList<Property>();
+        properties.add(new SimpleProperty().setName("Id").setType(EdmSimpleTypeKind.Int32).setFacets(
+            new Facets().setNullable(false)));
+        properties.add(new SimpleProperty().setName("Name").setType(EdmSimpleTypeKind.String).setFacets(
+            new Facets().setNullable(false).setMaxLength(100))
+            .setCustomizableFeedMappings(
+                new CustomizableFeedMappings().setFcTargetPath(EdmTargetPath.SYNDICATION_TITLE)));
+        properties.add(new ComplexProperty().setName("Address").setType(new FullQualifiedName(NAMESPACE, "Address")));
+        properties.add(new SimpleProperty().setName("Updated").setType(EdmSimpleTypeKind.DateTime)
+            .setFacets(new Facets().setNullable(false).setConcurrencyMode(EdmConcurrencyMode.Fixed))
+            .setCustomizableFeedMappings(
+                new CustomizableFeedMappings().setFcTargetPath(EdmTargetPath.SYNDICATION_UPDATED)));
+
+        // Navigation Properties
+        List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
+        navigationProperties.add(new NavigationProperty().setName("Cars")
+            .setRelationship(ASSOCIATION_CAR_MANUFACTURER).setFromRole(ROLE_1_2).setToRole(ROLE_1_1));
+
+        // Key
+        List<PropertyRef> keyProperties = new ArrayList<PropertyRef>();
+        keyProperties.add(new PropertyRef().setName("Id"));
+        Key key = new Key().setKeys(keyProperties);
+
+        return new EntityType().setName(ENTITY_TYPE_1_2.getName())
+            .setProperties(properties)
+            .setKey(key)
+            .setNavigationProperties(navigationProperties);
+
+      }
+    }
+
+    return null;
+  }
+
+  @Override
+  public ComplexType getComplexType(final FullQualifiedName edmFQName) throws ODataException {
+    if (NAMESPACE.equals(edmFQName.getNamespace())) {
+      if (COMPLEX_TYPE.getName().equals(edmFQName.getName())) {
+        List<Property> properties = new ArrayList<Property>();
+        properties.add(new SimpleProperty().setName("Street").setType(EdmSimpleTypeKind.String));
+        properties.add(new SimpleProperty().setName("City").setType(EdmSimpleTypeKind.String));
+        properties.add(new SimpleProperty().setName("ZipCode").setType(EdmSimpleTypeKind.String));
+        properties.add(new SimpleProperty().setName("Country").setType(EdmSimpleTypeKind.String));
+        return new ComplexType().setName(COMPLEX_TYPE.getName()).setProperties(properties);
+      }
+    }
+
+    return null;
+  }
+
+  @Override
+  public Association getAssociation(final FullQualifiedName edmFQName) throws ODataException {
+    if (NAMESPACE.equals(edmFQName.getNamespace())) {
+      if (ASSOCIATION_CAR_MANUFACTURER.getName().equals(edmFQName.getName())) {
+        return new Association().setName(ASSOCIATION_CAR_MANUFACTURER.getName())
+            .setEnd1(
+                new AssociationEnd().setType(ENTITY_TYPE_1_1).setRole(ROLE_1_1).setMultiplicity(EdmMultiplicity.MANY))
+            .setEnd2(
+                new AssociationEnd().setType(ENTITY_TYPE_1_2).setRole(ROLE_1_2).setMultiplicity(EdmMultiplicity.ONE));
+      }
+    }
+    return null;
+  }
+
+  @Override
+  public EntitySet getEntitySet(final String entityContainer, final String name) throws ODataException {
+    if (ENTITY_CONTAINER.equals(entityContainer)) {
+      if (ENTITY_SET_NAME_CARS.equals(name)) {
+        return new EntitySet().setName(name).setEntityType(ENTITY_TYPE_1_1);
+      } else if (ENTITY_SET_NAME_MANUFACTURERS.equals(name)) {
+        return new EntitySet().setName(name).setEntityType(ENTITY_TYPE_1_2);
+      }
+    }
+    return null;
+  }
+
+  @Override
+  public AssociationSet getAssociationSet(final String entityContainer, final FullQualifiedName association,
+      final String sourceEntitySetName, final String sourceEntitySetRole) throws ODataException {
+    if (ENTITY_CONTAINER.equals(entityContainer)) {
+      if (ASSOCIATION_CAR_MANUFACTURER.equals(association)) {
+        return new AssociationSet().setName(ASSOCIATION_SET)
+            .setAssociation(ASSOCIATION_CAR_MANUFACTURER)
+            .setEnd1(new AssociationSetEnd().setRole(ROLE_1_2).setEntitySet(ENTITY_SET_NAME_MANUFACTURERS))
+            .setEnd2(new AssociationSetEnd().setRole(ROLE_1_1).setEntitySet(ENTITY_SET_NAME_CARS));
+      }
+    }
+    return null;
+  }
+
+  @Override
+  public FunctionImport getFunctionImport(final String entityContainer, final String name) throws ODataException {
+    if (ENTITY_CONTAINER.equals(entityContainer)) {
+      if (FUNCTION_IMPORT.equals(name)) {
+        return new FunctionImport().setName(name)
+            .setReturnType(new ReturnType().setTypeName(ENTITY_TYPE_1_1).setMultiplicity(EdmMultiplicity.MANY))
+            .setHttpMethod("GET");
+      }
+    }
+    return null;
+  }
+
+  @Override
+  public EntityContainerInfo getEntityContainerInfo(final String name) throws ODataException {
+    if (name == null || "ODataCarsEntityContainer".equals(name)) {
+      return new EntityContainerInfo().setName("ODataCarsEntityContainer").setDefaultEntityContainer(true);
+    }
+
+    return null;
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarODataSingleProcessor.java
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarODataSingleProcessor.java b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarODataSingleProcessor.java
index b18355d..e162d8a 100644
--- a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarODataSingleProcessor.java
+++ b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarODataSingleProcessor.java
@@ -1,154 +1,154 @@
 #set( $symbol_pound = '#' )
 #set( $symbol_dollar = '$' )
 #set( $symbol_escape = '\' )
-/*******************************************************************************
- * 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 ${package};
-
-import static ${package}.CarEdmProvider.ENTITY_SET_NAME_CARS;
-import static ${package}.CarEdmProvider.ENTITY_SET_NAME_MANUFACTURERS;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.olingo.odata2.api.edm.EdmEntitySet;
-import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
-import org.apache.olingo.odata2.api.edm.EdmProperty;
-import org.apache.olingo.odata2.api.edm.EdmSimpleType;
-import org.apache.olingo.odata2.api.ep.EntityProvider;
-import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
-import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties.ODataEntityProviderPropertiesBuilder;
-import org.apache.olingo.odata2.api.exception.ODataException;
-import org.apache.olingo.odata2.api.exception.ODataNotFoundException;
-import org.apache.olingo.odata2.api.exception.ODataNotImplementedException;
-import org.apache.olingo.odata2.api.processor.ODataResponse;
-import org.apache.olingo.odata2.api.processor.ODataSingleProcessor;
-import org.apache.olingo.odata2.api.uri.KeyPredicate;
-import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo;
-import org.apache.olingo.odata2.api.uri.info.GetEntityUriInfo;
-
-public class CarODataSingleProcessor extends ODataSingleProcessor {
-
-  private final CarDataStore dataStore;
-
-  public CarODataSingleProcessor() {
-    dataStore = new CarDataStore();
-  }
-
-  @Override
-  public ODataResponse readEntitySet(final GetEntitySetUriInfo uriInfo, final String contentType) 
-      throws ODataException {
-
-    EdmEntitySet entitySet;
-
-    if (uriInfo.getNavigationSegments().size() == 0) {
-      entitySet = uriInfo.getStartEntitySet();
-
-      if (ENTITY_SET_NAME_CARS.equals(entitySet.getName())) {
-        return EntityProvider.writeFeed(contentType, entitySet, dataStore.getCars(),
-            EntityProviderWriteProperties.serviceRoot(getContext().getPathInfo().getServiceRoot()).build());
-      } else if (ENTITY_SET_NAME_MANUFACTURERS.equals(entitySet.getName())) {
-        return EntityProvider.writeFeed(contentType, entitySet, dataStore.getManufacturers(),
-            EntityProviderWriteProperties.serviceRoot(getContext().getPathInfo().getServiceRoot()).build());
-      }
-
-      throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
-
-    } else if (uriInfo.getNavigationSegments().size() == 1) {
-      // navigation first level, simplified example for illustration purposes only
-      entitySet = uriInfo.getTargetEntitySet();
-
-      if (ENTITY_SET_NAME_CARS.equals(entitySet.getName())) {
-        int manufacturerKey = getKeyValue(uriInfo.getKeyPredicates().get(0));
-
-        List<Map<String, Object>> cars = new ArrayList<Map<String, Object>>();
-        cars.addAll(dataStore.getCarsFor(manufacturerKey));
-
-        return EntityProvider.writeFeed(contentType, entitySet, cars, EntityProviderWriteProperties.serviceRoot(
-            getContext().getPathInfo().getServiceRoot()).build());
-      }
-
-      throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
-    }
-
-    throw new ODataNotImplementedException();
-  }
-
-  @Override
-  public ODataResponse readEntity(final GetEntityUriInfo uriInfo, final String contentType) throws ODataException {
-
-    if (uriInfo.getNavigationSegments().size() == 0) {
-      EdmEntitySet entitySet = uriInfo.getStartEntitySet();
-
-      if (ENTITY_SET_NAME_CARS.equals(entitySet.getName())) {
-        int id = getKeyValue(uriInfo.getKeyPredicates().get(0));
-        Map<String, Object> data = dataStore.getCar(id);
-
-        if (data != null) {
-          URI serviceRoot = getContext().getPathInfo().getServiceRoot();
-          ODataEntityProviderPropertiesBuilder propertiesBuilder =
-              EntityProviderWriteProperties.serviceRoot(serviceRoot);
-
-          return EntityProvider.writeEntry(contentType, entitySet, data, propertiesBuilder.build());
-        }
-      } else if (ENTITY_SET_NAME_MANUFACTURERS.equals(entitySet.getName())) {
-        int id = getKeyValue(uriInfo.getKeyPredicates().get(0));
-        Map<String, Object> data = dataStore.getManufacturer(id);
-
-        if (data != null) {
-          URI serviceRoot = getContext().getPathInfo().getServiceRoot();
-          ODataEntityProviderPropertiesBuilder propertiesBuilder =
-              EntityProviderWriteProperties.serviceRoot(serviceRoot);
-
-          return EntityProvider.writeEntry(contentType, entitySet, data, propertiesBuilder.build());
-        }
-      }
-
-      throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
-
-    } else if (uriInfo.getNavigationSegments().size() == 1) {
-      // navigation first level, simplified example for illustration purposes only
-      EdmEntitySet entitySet = uriInfo.getTargetEntitySet();
-
-      Map<String, Object> data = null;
-
-      if (ENTITY_SET_NAME_MANUFACTURERS.equals(entitySet.getName())) {
-        int carKey = getKeyValue(uriInfo.getKeyPredicates().get(0));
-        data = dataStore.getManufacturerFor(carKey);
-      }
-
-      if (data != null) {
-        return EntityProvider.writeEntry(contentType, uriInfo.getTargetEntitySet(),
-            data, EntityProviderWriteProperties.serviceRoot(getContext().getPathInfo().getServiceRoot()).build());
-      }
-
-      throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
-    }
-
-    throw new ODataNotImplementedException();
-  }
-
-  private int getKeyValue(final KeyPredicate key) throws ODataException {
-    EdmProperty property = key.getProperty();
-    EdmSimpleType type = (EdmSimpleType) property.getType();
-    return type.valueOfString(key.getLiteral(), EdmLiteralKind.DEFAULT, property.getFacets(), Integer.class);
-  }
-}
+/*******************************************************************************
+ * 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 ${package};
+
+import static ${package}.CarEdmProvider.ENTITY_SET_NAME_CARS;
+import static ${package}.CarEdmProvider.ENTITY_SET_NAME_MANUFACTURERS;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.olingo.odata2.api.edm.EdmEntitySet;
+import org.apache.olingo.odata2.api.edm.EdmLiteralKind;
+import org.apache.olingo.odata2.api.edm.EdmProperty;
+import org.apache.olingo.odata2.api.edm.EdmSimpleType;
+import org.apache.olingo.odata2.api.ep.EntityProvider;
+import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
+import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties.ODataEntityProviderPropertiesBuilder;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.exception.ODataNotFoundException;
+import org.apache.olingo.odata2.api.exception.ODataNotImplementedException;
+import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.api.processor.ODataSingleProcessor;
+import org.apache.olingo.odata2.api.uri.KeyPredicate;
+import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo;
+import org.apache.olingo.odata2.api.uri.info.GetEntityUriInfo;
+
+public class CarODataSingleProcessor extends ODataSingleProcessor {
+
+  private final CarDataStore dataStore;
+
+  public CarODataSingleProcessor() {
+    dataStore = new CarDataStore();
+  }
+
+  @Override
+  public ODataResponse readEntitySet(final GetEntitySetUriInfo uriInfo, final String contentType) 
+      throws ODataException {
+
+    EdmEntitySet entitySet;
+
+    if (uriInfo.getNavigationSegments().size() == 0) {
+      entitySet = uriInfo.getStartEntitySet();
+
+      if (ENTITY_SET_NAME_CARS.equals(entitySet.getName())) {
+        return EntityProvider.writeFeed(contentType, entitySet, dataStore.getCars(),
+            EntityProviderWriteProperties.serviceRoot(getContext().getPathInfo().getServiceRoot()).build());
+      } else if (ENTITY_SET_NAME_MANUFACTURERS.equals(entitySet.getName())) {
+        return EntityProvider.writeFeed(contentType, entitySet, dataStore.getManufacturers(),
+            EntityProviderWriteProperties.serviceRoot(getContext().getPathInfo().getServiceRoot()).build());
+      }
+
+      throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
+
+    } else if (uriInfo.getNavigationSegments().size() == 1) {
+      // navigation first level, simplified example for illustration purposes only
+      entitySet = uriInfo.getTargetEntitySet();
+
+      if (ENTITY_SET_NAME_CARS.equals(entitySet.getName())) {
+        int manufacturerKey = getKeyValue(uriInfo.getKeyPredicates().get(0));
+
+        List<Map<String, Object>> cars = new ArrayList<Map<String, Object>>();
+        cars.addAll(dataStore.getCarsFor(manufacturerKey));
+
+        return EntityProvider.writeFeed(contentType, entitySet, cars, EntityProviderWriteProperties.serviceRoot(
+            getContext().getPathInfo().getServiceRoot()).build());
+      }
+
+      throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
+    }
+
+    throw new ODataNotImplementedException();
+  }
+
+  @Override
+  public ODataResponse readEntity(final GetEntityUriInfo uriInfo, final String contentType) throws ODataException {
+
+    if (uriInfo.getNavigationSegments().size() == 0) {
+      EdmEntitySet entitySet = uriInfo.getStartEntitySet();
+
+      if (ENTITY_SET_NAME_CARS.equals(entitySet.getName())) {
+        int id = getKeyValue(uriInfo.getKeyPredicates().get(0));
+        Map<String, Object> data = dataStore.getCar(id);
+
+        if (data != null) {
+          URI serviceRoot = getContext().getPathInfo().getServiceRoot();
+          ODataEntityProviderPropertiesBuilder propertiesBuilder =
+              EntityProviderWriteProperties.serviceRoot(serviceRoot);
+
+          return EntityProvider.writeEntry(contentType, entitySet, data, propertiesBuilder.build());
+        }
+      } else if (ENTITY_SET_NAME_MANUFACTURERS.equals(entitySet.getName())) {
+        int id = getKeyValue(uriInfo.getKeyPredicates().get(0));
+        Map<String, Object> data = dataStore.getManufacturer(id);
+
+        if (data != null) {
+          URI serviceRoot = getContext().getPathInfo().getServiceRoot();
+          ODataEntityProviderPropertiesBuilder propertiesBuilder =
+              EntityProviderWriteProperties.serviceRoot(serviceRoot);
+
+          return EntityProvider.writeEntry(contentType, entitySet, data, propertiesBuilder.build());
+        }
+      }
+
+      throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
+
+    } else if (uriInfo.getNavigationSegments().size() == 1) {
+      // navigation first level, simplified example for illustration purposes only
+      EdmEntitySet entitySet = uriInfo.getTargetEntitySet();
+
+      Map<String, Object> data = null;
+
+      if (ENTITY_SET_NAME_MANUFACTURERS.equals(entitySet.getName())) {
+        int carKey = getKeyValue(uriInfo.getKeyPredicates().get(0));
+        data = dataStore.getManufacturerFor(carKey);
+      }
+
+      if (data != null) {
+        return EntityProvider.writeEntry(contentType, uriInfo.getTargetEntitySet(),
+            data, EntityProviderWriteProperties.serviceRoot(getContext().getPathInfo().getServiceRoot()).build());
+      }
+
+      throw new ODataNotFoundException(ODataNotFoundException.ENTITY);
+    }
+
+    throw new ODataNotImplementedException();
+  }
+
+  private int getKeyValue(final KeyPredicate key) throws ODataException {
+    EdmProperty property = key.getProperty();
+    EdmSimpleType type = (EdmSimpleType) property.getType();
+    return type.valueOfString(key.getLiteral(), EdmLiteralKind.DEFAULT, property.getFacets(), Integer.class);
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarServiceFactory.java
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarServiceFactory.java b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarServiceFactory.java
index 6806631..ce8949d 100644
--- a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarServiceFactory.java
+++ b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/src/main/java/CarServiceFactory.java
@@ -1,42 +1,42 @@
 #set( $symbol_pound = '#' )
 #set( $symbol_dollar = '$' )
 #set( $symbol_escape = '\' )
-/*******************************************************************************
- * 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 ${package};
-
-import org.apache.olingo.odata2.api.ODataService;
-import org.apache.olingo.odata2.api.ODataServiceFactory;
-import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
-import org.apache.olingo.odata2.api.exception.ODataException;
-import org.apache.olingo.odata2.api.processor.ODataContext;
-import org.apache.olingo.odata2.api.processor.ODataSingleProcessor;
-
-public class CarServiceFactory extends ODataServiceFactory {
-
-  @Override
-  public ODataService createService(final ODataContext ctx) throws ODataException {
-
-    EdmProvider edmProvider = new CarEdmProvider();
-
-    ODataSingleProcessor singleProcessor = new CarODataSingleProcessor();
-
-    return createODataSingleProcessorService(edmProvider, singleProcessor);
-  }
-}
+/*******************************************************************************
+ * 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 ${package};
+
+import org.apache.olingo.odata2.api.ODataService;
+import org.apache.olingo.odata2.api.ODataServiceFactory;
+import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.processor.ODataContext;
+import org.apache.olingo.odata2.api.processor.ODataSingleProcessor;
+
+public class CarServiceFactory extends ODataServiceFactory {
+
+  @Override
+  public ODataService createService(final ODataContext ctx) throws ODataException {
+
+    EdmProvider edmProvider = new CarEdmProvider();
+
+    ODataSingleProcessor singleProcessor = new CarODataSingleProcessor();
+
+    return createODataSingleProcessorService(edmProvider, singleProcessor);
+  }
+}


[50/50] [abbrv] git commit: Merge branch 'master' into Olingo-129_PocJpaDataStore

Posted by mi...@apache.org.
Merge branch 'master' into Olingo-129_PocJpaDataStore


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/c23dbcb5
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/c23dbcb5
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/c23dbcb5

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: c23dbcb5ee79dd1a4ca46da0cf46d7aa401c9eeb
Parents: 4528e8d fe1b1c9
Author: Michael Bolz <mi...@sap.com>
Authored: Tue Sep 2 09:09:04 2014 +0200
Committer: Michael Bolz <mi...@sap.com>
Committed: Tue Sep 2 09:09:04 2014 +0200

----------------------------------------------------------------------
 .gitattributes                                  |   6 +
 .../annotation-processor-api/pom.xml            |   2 +-
 .../annotation-processor-core/pom.xml           |   2 +-
 .../processor/core/ListsProcessor.java          |  11 +-
 .../core/datasource/BeanPropertyAccess.java     |   8 +-
 .../core/datasource/BeanPropertyAccessTest.java |   2 +-
 .../annotation-processor-ref/pom.xml            |   2 +-
 .../annotation-processor-web/pom.xml            |   2 +-
 odata2-annotation-processor/pom.xml             |   2 +-
 odata2-dist/janos/pom.xml                       |   2 +-
 odata2-dist/javadoc/pom.xml                     |   2 +-
 odata2-dist/jpa/pom.xml                         |   2 +-
 odata2-dist/lib/pom.xml                         |   2 +-
 odata2-dist/pom.xml                             |   2 +-
 odata2-dist/ref/pom.xml                         |   2 +-
 odata2-jpa-processor/jpa-api/pom.xml            |   2 +-
 .../jpa/processor/api/ODataJPAProcessor.java    |   8 +
 .../processor/api/ODataJPATombstoneContext.java |  90 +++
 .../api/ODataJPATombstoneEntityListener.java    |  60 ++
 .../api/exception/ODataJPAErrorCallback.java    |   2 +-
 .../api/model/JPAEdmAssociationEndView.java     |   4 +-
 .../processor/api/model/JPAEdmExtension.java    |   9 +
 .../jpa/processor/api/model/JPAEdmMapping.java  |  16 +
 .../processor/api/model/JPAEdmPropertyView.java |   8 +
 odata2-jpa-processor/jpa-core/pom.xml           |   2 +-
 .../core/ODataJPAProcessorDefault.java          |  45 +-
 .../core/ODataJPAResponseBuilderDefault.java    |  27 +-
 .../processor/core/access/data/JPAEntity.java   |  13 +
 .../core/access/data/JPAEntityParser.java       |  13 +
 .../core/access/data/JPAExpandCallBack.java     | 221 --------
 .../jpa/processor/core/access/data/JPAPage.java |  81 ++-
 .../core/access/data/JPAProcessorImpl.java      | 103 +++-
 .../core/access/model/EdmTypeConvertor.java     |  69 ---
 .../access/model/JPAEdmMappingModelService.java |  14 +-
 .../core/access/model/JPAEdmNameBuilder.java    |  10 +-
 .../core/access/model/JPATypeConvertor.java     |   8 +-
 .../core/callback/JPAExpandCallBack.java        | 224 ++++++++
 .../core/callback/JPATombstoneCallBack.java     |  60 ++
 .../processor/core/model/JPAEdmAssociation.java |  13 +-
 .../core/model/JPAEdmAssociationEnd.java        |  33 +-
 .../processor/core/model/JPAEdmEntityType.java  |  18 +
 .../processor/core/model/JPAEdmMappingImpl.java |  13 +
 .../processor/core/model/JPAEdmProperty.java    |  62 ++-
 .../model/JPAEdmReferentialConstraintRole.java  |  80 +--
 .../core/ODataJPAResponseBuilderTest.java       |   2 +-
 .../JPAEntityParserForStaticMethodTest.java     | 330 +++++++++++
 .../JPAEntityParserTestForStaticMethods.java    | 330 -----------
 .../core/access/data/JPAExpandCallBackTest.java |   1 +
 .../access/data/JPAPageBuilderDeltaTest.java    | 357 ++++++++++++
 .../core/access/data/JPAPageBuilderTest.java    |  19 +-
 .../core/access/data/JPAProcessorImplTest.java  |  12 +-
 .../access/model/JPAEdmNameBuilderTest.java     |   4 +-
 .../core/model/JPAEdmAssociationTest.java       |  23 +-
 .../core/model/JPAEdmEntityContainerTest.java   |   5 +
 .../core/model/JPAEdmEntitySetTest.java         |   5 +
 .../core/model/JPAEdmEntityTypeTest.java        |   5 +
 .../JPAEdmReferentialConstraintRoleTest.java    |  13 +
 .../model/JPAEdmReferentialConstraintTest.java  |  14 +
 .../core/model/JPAEdmTestModelView.java         |  10 +-
 odata2-jpa-processor/jpa-ref/pom.xml            |   9 +-
 .../ref/converter/BlobToByteConverter.java      |   6 +
 .../SalesOrderItemTombstoneListener.java        |  93 ++++
 .../listeners/SalesOrderTombstoneListener.java  |  57 ++
 .../jpa/processor/ref/model/Category.java       |  12 +
 .../jpa/processor/ref/model/Customer.java       |  12 +
 .../jpa/processor/ref/model/Material.java       |   9 +-
 .../processor/ref/model/SalesOrderHeader.java   |  25 +-
 .../jpa/processor/ref/model/SalesOrderItem.java |   4 +-
 odata2-jpa-processor/jpa-web/pom.xml            |   2 +-
 .../SalesOrderProcessingExtension.java          |   6 +
 .../ref/web/JPAReferenceServiceFactory.java     |   1 +
 .../resources/SQL_Insert_Category.properties    |   8 +-
 .../resources/SQL_Insert_Customer.properties    |  10 +-
 .../resources/SQL_Insert_Material.properties    |  22 +-
 .../SQL_Insert_SalesOrderHeader.properties      |  22 +-
 odata2-jpa-processor/pom.xml                    |   2 +-
 odata2-lib/odata-annotation/pom.xml             |   2 +-
 odata2-lib/odata-api/pom.xml                    |   2 +-
 .../olingo/odata2/api/edm/EdmMapping.java       |   9 -
 .../olingo/odata2/api/edm/provider/Mapping.java |  18 -
 .../olingo/odata2/api/ep/EntityProvider.java    |  34 ++
 .../odata2/api/ep/EntityProviderException.java  |   4 +
 .../api/ep/EntityProviderWriteProperties.java   |  59 +-
 .../odata2/api/processor/ODataRequest.java      |  14 +-
 .../odata2/api/processor/ODataResponse.java     |  14 +
 .../apache/olingo/odata2/api/uri/UriParser.java |  16 +
 .../odata2/api/uri/UriSyntaxException.java      |   2 +
 odata2-lib/odata-core/pom.xml                   |   2 +-
 .../olingo/odata2/core/ODataRequestHandler.java |   2 +-
 .../olingo/odata2/core/ODataRequestImpl.java    |  86 ++-
 .../olingo/odata2/core/batch/AcceptParser.java  |   7 +-
 .../odata2/core/batch/BatchRequestParser.java   |  34 +-
 .../odata2/core/batch/BatchRequestWriter.java   |   2 +-
 .../odata2/core/batch/BatchResponseParser.java  |  63 +--
 .../olingo/odata2/core/edm/EdmBinary.java       |  17 +-
 .../edm/provider/EdmAssociationImplProv.java    |  11 +-
 .../edm/provider/EdmFunctionImportImplProv.java |  11 +-
 .../odata2/core/ep/AtomEntityProvider.java      |  18 +
 .../odata2/core/ep/BasicEntityProvider.java     |   6 +-
 .../core/ep/ContentTypeBasedEntityProvider.java |   3 +
 .../odata2/core/ep/JsonEntityProvider.java      |  18 +
 .../odata2/core/ep/ProviderFacadeImpl.java      |   6 +
 .../core/ep/consumer/JsonEntityConsumer.java    |  39 +-
 .../core/ep/consumer/JsonEntryConsumer.java     |   1 -
 .../core/ep/consumer/JsonPropertyConsumer.java  | 138 ++++-
 .../core/ep/consumer/XmlEntityConsumer.java     |  39 +-
 .../core/ep/consumer/XmlEntryConsumer.java      |   2 +-
 .../core/ep/consumer/XmlMetadataConsumer.java   |  15 +-
 .../core/ep/consumer/XmlPropertyConsumer.java   |  63 ++-
 .../ep/producer/AtomEntryEntityProducer.java    | 125 +++--
 .../ep/producer/JsonEntryEntityProducer.java    |  89 ++-
 .../ep/producer/JsonLinkEntityProducer.java     |  10 +-
 .../ep/producer/JsonLinksEntityProducer.java    |  11 +-
 .../ep/producer/XmlPropertyEntityProducer.java  |   4 +-
 .../core/ep/util/XmlMetadataConstants.java      |   4 +-
 .../core/rest/ODataExceptionMapperImpl.java     |  13 +-
 .../odata2/core/rest/ODataSubLocator.java       |   2 +-
 .../odata2/core/servlet/ODataServlet.java       |  25 +-
 .../olingo/odata2/core/servlet/RestUtil.java    |  31 ++
 .../olingo/odata2/core/uri/UriParserImpl.java   |  62 ++-
 .../core/uri/expression/FilterParserImpl.java   |  88 ++-
 .../uri/expression/ParameterSetCombination.java |   2 +-
 .../src/main/resources/i18n.properties          |   2 +
 .../src/main/resources/i18n_en.properties       |   2 +-
 .../core/ODataRequestHandlerValidationTest.java |  16 +
 .../olingo/odata2/core/ODataRequestTest.java    |  77 +++
 .../olingo/odata2/core/ODataResponseTest.java   |  17 +
 .../core/batch/BatchRequestParserTest.java      | 352 ++++++------
 .../odata2/core/batch/BatchRequestTest.java     |  26 +-
 .../core/batch/BatchRequestWriterTest.java      |  20 +-
 .../core/batch/BatchResponseParserTest.java     | 361 +++++++-----
 .../odata2/core/batch/BatchResponseTest.java    |  17 +-
 .../odata2/core/edm/EdmSimpleTypeTest.java      |  12 +-
 .../provider/EdmAssociationImplProvTest.java    |  12 +-
 .../provider/EdmFunctionImportImplProvTest.java |   6 +-
 .../core/edm/provider/EdmMappingTest.java       |   5 +-
 .../edm/provider/EdmPropertyImplProvTest.java   |   3 +-
 .../odata2/core/ep/AbstractProviderTest.java    |   1 +
 .../ep/ODataEntityProviderPropertiesTest.java   |  26 +-
 .../odata2/core/ep/ProviderFacadeImplTest.java  |  10 +
 .../core/ep/consumer/JsonEntryConsumerTest.java |  74 ++-
 .../consumer/JsonEntryDeepInsertEntryTest.java  |   2 +-
 .../ep/consumer/JsonPropertyConsumerTest.java   | 132 ++++-
 .../core/ep/consumer/XmlEntityConsumerTest.java |  75 ++-
 .../core/ep/consumer/XmlFeedConsumerTest.java   |   6 +-
 .../ep/consumer/XmlMetadataConsumerTest.java    |  98 +++-
 .../ep/consumer/XmlPropertyConsumerTest.java    | 153 +++--
 .../core/ep/producer/AtomEntryProducerTest.java | 424 ++++++++++++--
 .../core/ep/producer/AtomFeedProducerTest.java  |  16 +-
 .../producer/JsonEntryEntityProducerTest.java   | 323 +++++++++--
 .../ep/producer/JsonFeedEntityProducerTest.java |  33 ++
 .../ep/producer/JsonLinkEntityProducerTest.java |  17 +
 .../producer/JsonLinksEntityProducerTest.java   |  76 +++
 .../core/rest/ODataExceptionMapperImplTest.java |   4 +-
 .../odata2/core/servlet/ODataServletTest.java   | 114 ++++
 .../olingo/odata2/core/uri/UriParserTest.java   |  42 +-
 .../uri/expression/TestAbapCompatibility.java   | 187 +++++++
 .../odata2/core/uri/expression/TestParser.java  |   4 +-
 .../BatchResponseWithAdditionalLineEnding.batch |  12 +
 .../BatchResponseWithLinesInBodyWin.batch       |  16 +
 .../src/test/resources/EmployeeContentOnly.xml  |  37 ++
 .../EmployeeContentOnlyWithAdditionalLink.xml   |  38 ++
 .../test/resources/JsonEmployeeContentOnly.json |  25 +
 ...onEmployeeContentOnlyWithAdditionalLink.json |  30 +
 .../src/test/resources/JsonRoomContentOnly.json |   8 +
 .../JsonRoomContentOnlyWithAdditionalLink.json  |  13 +
 .../src/test/resources/RoomContentOnly.xml      |  28 +
 .../RoomContentOnlyWithAdditionalLink.xml       |  29 +
 odata2-lib/odata-fit/pom.xml                    |   2 +-
 .../olingo/odata2/fit/basic/BasicHttpTest.java  |   4 +-
 .../fit/basic/HttpExceptionResponseTest.java    |  13 +-
 .../fit/basic/LanguageNegotiationTest.java      |   6 +-
 .../olingo/odata2/fit/basic/UrlRewriteTest.java |   2 +-
 .../odata2/fit/ref/FunctionImportJsonTest.java  | 106 +++-
 .../odata2/fit/ref/FunctionImportXmlTest.java   |  34 +-
 .../src/test/resources/i18n.properties          |  22 -
 .../src/test/resources/i18n_it.properties       |   1 +
 odata2-lib/odata-ref/pom.xml                    |   2 +-
 .../odata2/ref/edm/ScenarioEdmProvider.java     |  15 +-
 .../ref/processor/BeanPropertyAccess.java       |   8 +-
 .../odata2/ref/processor/ListsProcessor.java    |  11 +-
 odata2-lib/odata-testutil/pom.xml               |   2 +-
 .../odata2/testutil/helper/StringHelper.java    |  49 +-
 .../olingo/odata2/testutil/mock/EdmMock.java    |   6 +-
 .../odata2/testutil/mock/EdmTestProvider.java   |   8 +-
 odata2-lib/odata-web/pom.xml                    |   2 +-
 odata2-lib/pom.xml                              |   2 +-
 odata2-sample/cars-annotation-archetype/pom.xml | 140 ++---
 .../main/resources/archetype-resources/pom.xml  | 296 +++++-----
 odata2-sample/cars-jpa-archetype/pom.xml        |   2 +-
 .../META-INF/maven/archetype-metadata.xml       |  80 +--
 .../main/resources/archetype-resources/pom.xml  |   2 +-
 .../src/main/java/model/Key.java                | 190 +++----
 .../java/service/ODataJPACarServiceFactory.java | 182 +++---
 .../src/main/resources/META-INF/persistence.xml |  78 +--
 .../src/main/webapp/index.html                  | 178 +++---
 odata2-sample/cars-service-archetype/pom.xml    | 158 +++---
 .../main/resources/archetype-resources/pom.xml  | 190 +++----
 .../src/main/java/CarEdmProvider.java           | 556 +++++++++----------
 .../src/main/java/CarODataSingleProcessor.java  | 302 +++++-----
 .../src/main/java/CarServiceFactory.java        |  78 +--
 odata2-sample/pom.xml                           |   4 +-
 pom.xml                                         |   2 +-
 203 files changed, 6669 insertions(+), 3055 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/c23dbcb5/odata2-annotation-processor/annotation-processor-core/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/c23dbcb5/odata2-annotation-processor/annotation-processor-ref/pom.xml
----------------------------------------------------------------------


[44/50] [abbrv] git commit: [OLINGO-402] Implement omitETag flag

Posted by mi...@apache.org.
[OLINGO-402] Implement omitETag flag


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/868e7e86
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/868e7e86
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/868e7e86

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 868e7e86ff8ecfc2f4d40b48486a9bd773786591
Parents: 575c59f
Author: Christian Amend <ch...@apache.org>
Authored: Tue Aug 12 17:08:38 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Tue Aug 12 17:08:38 2014 +0200

----------------------------------------------------------------------
 .../api/ep/EntityProviderWriteProperties.java   | 11 +++
 .../ep/producer/AtomEntryEntityProducer.java    | 10 ++-
 .../ep/producer/JsonEntryEntityProducer.java    | 10 ++-
 .../ep/ODataEntityProviderPropertiesTest.java   |  4 +
 .../core/ep/producer/AtomEntryProducerTest.java | 82 +++++++++++++++++---
 .../producer/JsonEntryEntityProducerTest.java   | 71 +++++++++++++++++
 6 files changed, 171 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/868e7e86/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
index cd6aad6..838c431 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
@@ -44,9 +44,14 @@ public class EntityProviderWriteProperties {
   private Map<String, Map<String, Object>> additionalLinks;
   private boolean omitJsonWrapper;
   private boolean contentOnly;
+  private boolean omitETag;
 
   private EntityProviderWriteProperties() {}
 
+  public final boolean isOmitETag() {
+    return omitETag;
+  }
+
   public final boolean isContentOnly() {
     return contentOnly;
   }
@@ -224,6 +229,11 @@ public class EntityProviderWriteProperties {
       properties.contentOnly = contentOnly;
       return this;
     }
+    
+    public ODataEntityProviderPropertiesBuilder omitETag(final boolean omitETag) {
+      properties.omitETag = omitETag;
+      return this;
+    }
 
     public ODataEntityProviderPropertiesBuilder fromProperties(final EntityProviderWriteProperties properties) {
       this.properties.inlineCountType = properties.getInlineCountType();
@@ -236,6 +246,7 @@ public class EntityProviderWriteProperties {
       this.properties.additionalLinks = properties.additionalLinks;
       this.properties.omitJsonWrapper = properties.omitJsonWrapper;
       this.properties.contentOnly = properties.contentOnly;
+      this.properties.omitETag = properties.omitETag;
       return this;
     }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/868e7e86/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
index 97c606f..9715f3d 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
@@ -90,11 +90,13 @@ public class AtomEntryEntityProducer {
             .toASCIIString());
       }
 
-      etag = createETag(eia, data);
-      if (etag != null) {
-        writer.writeAttribute(Edm.NAMESPACE_M_2007_08, FormatXml.M_ETAG, etag);
+      if (!properties.isContentOnly() && !properties.isOmitETag()) {
+        etag = createETag(eia, data);
+        if (etag != null) {
+          writer.writeAttribute(Edm.NAMESPACE_M_2007_08, FormatXml.M_ETAG, etag);
+        }
       }
-
+      
       String selfLink = null;
       if (!properties.isContentOnly()) {
         // write all atom infos (mandatory and optional)

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/868e7e86/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
index ab2daf8..fea6a49 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
@@ -209,10 +209,12 @@ public class JsonEntryEntityProducer {
     jsonStreamWriter.namedStringValue(FormatJson.URI, location);
     jsonStreamWriter.separator();
     jsonStreamWriter.namedStringValueRaw(FormatJson.TYPE, type.getNamespace() + Edm.DELIMITER + type.getName());
-    eTag = AtomEntryEntityProducer.createETag(entityInfo, data);
-    if (eTag != null) {
-      jsonStreamWriter.separator();
-      jsonStreamWriter.namedStringValue(FormatJson.ETAG, eTag);
+    if (!properties.isOmitETag()) {
+      eTag = AtomEntryEntityProducer.createETag(entityInfo, data);
+      if (eTag != null) {
+        jsonStreamWriter.separator();
+        jsonStreamWriter.namedStringValue(FormatJson.ETAG, eTag);
+      }
     }
     if (type.hasStream()) {
       jsonStreamWriter.separator();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/868e7e86/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
index 94f6650..a484eef 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
@@ -75,6 +75,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
         .additionalLinks(links)
         .omitJsonWrapper(true)
         .contentOnly(true)
+        .omitETag(true)
         .build();
 
     assertEquals("Wrong amount of callbacks.", 1, properties.getCallbacks().size());
@@ -89,6 +90,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
     assertEquals(Collections.emptyMap(), properties.getAdditionalLinks().get("aNavigationProperty"));
     assertTrue("Json Wrapper should be omitted", properties.isOmitJsonWrapper());
     assertTrue("ContentOnlyFlag should be set", properties.isContentOnly());
+    assertTrue("OmitETag should be set", properties.isOmitETag());
   }
 
   @Test
@@ -111,6 +113,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
         .additionalLinks(links)
         .omitJsonWrapper(true)
         .contentOnly(true)
+        .omitETag(true)
         .build();
 
     //
@@ -130,5 +133,6 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
     assertEquals(Collections.emptyMap(), fromProperties.getAdditionalLinks().get("aNavigationProperty"));
     assertTrue("Json Wrapper should be omitted", properties.isOmitJsonWrapper());
     assertTrue("ContentOnlyFlag should be set", properties.isContentOnly());
+    assertTrue("OmitETag should be set", properties.isOmitETag());
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/868e7e86/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
index 7c26984..f3e4545 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
@@ -68,9 +68,6 @@ import org.custommonkey.xmlunit.exceptions.XpathException;
 import org.junit.Test;
 import org.xml.sax.SAXException;
 
-/**
- *  
- */
 public class AtomEntryProducerTest extends AbstractProviderTest {
 
   public AtomEntryProducerTest(final StreamWriterImplType type) {
@@ -78,6 +75,66 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
   }
 
   @Test
+  public void omitETagTestPropertyPresent() throws Exception {
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).omitETag(true).build();
+    AtomEntityProvider ser = createAtomEntityProvider();
+
+    Map<String, Object> localRoomData = new HashMap<String, Object>();
+    localRoomData.put("Id", "1");
+    localRoomData.put("Name", "Neu Schwanstein");
+    localRoomData.put("Seats", new Integer(20));
+    localRoomData.put("Version", new Integer(3));
+    ODataResponse response =
+        ser.writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms"), localRoomData,
+            properties);
+    String xmlString = verifyResponse(response);
+    assertXpathNotExists("/a:entry[@m:etag]", xmlString);
+  }
+
+  @Test
+  public void omitETagTestPropertyNOTPresentMustNotResultInException() throws Exception {
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).omitETag(true).build();
+    AtomEntityProvider ser = createAtomEntityProvider();
+
+    Map<String, Object> localRoomData = new HashMap<String, Object>();
+    localRoomData.put("Id", "1");
+    localRoomData.put("Name", "Neu Schwanstein");
+    localRoomData.put("Seats", new Integer(20));
+    ODataResponse response =
+        ser.writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms"), localRoomData,
+            properties);
+    String xmlString = verifyResponse(response);
+    assertXpathNotExists("/a:entry[@m:etag]", xmlString);
+  }
+
+  @Test
+  public void omitETagTestNonNullablePropertyNOTPresentMustNotResultInException() throws Exception {
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+    EdmProperty versionProperty = (EdmProperty) entitySet.getEntityType().getProperty("Version");
+    EdmFacets facets = versionProperty.getFacets();
+    when(facets.isNullable()).thenReturn(new Boolean(false));
+    List<String> selectedPropertyNames = new ArrayList<String>();
+    selectedPropertyNames.add("Id");
+    selectedPropertyNames.add("Name");
+    selectedPropertyNames.add("Seats");
+    ExpandSelectTreeNode selectNode =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedPropertyNames).build();
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).omitETag(true).expandSelectTree(selectNode).build();
+    AtomEntityProvider ser = createAtomEntityProvider();
+
+    Map<String, Object> localRoomData = new HashMap<String, Object>();
+    localRoomData.put("Id", "1");
+    localRoomData.put("Name", "Neu Schwanstein");
+    localRoomData.put("Seats", new Integer(20));
+    ODataResponse response = ser.writeEntry(entitySet, localRoomData, properties);
+    String xmlString = verifyResponse(response);
+    assertXpathNotExists("/a:entry[@m:etag]", xmlString);
+  }
+
+  @Test
   public void contentOnly() throws Exception {
     final EntityProviderWriteProperties properties =
         EntityProviderWriteProperties.serviceRoot(BASE_URI).contentOnly(true).build();
@@ -90,6 +147,7 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     assertXpathExists("/a:entry", xmlString);
     assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
 
+    assertXpathNotExists("/a:entry[@m:etag]", xmlString);
     assertXpathNotExists("/a:entry/a:id", xmlString);
     assertXpathNotExists("/a:entry/a:title", xmlString);
     assertXpathNotExists("/a:entry/a:updated", xmlString);
@@ -121,7 +179,8 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     String xmlString = verifyResponse(response);
     assertXpathExists("/a:entry", xmlString);
     assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
-
+    assertXpathNotExists("/a:entry[@m:etag]", xmlString);
+    
     assertXpathNotExists("/a:entry/a:id", xmlString);
     assertXpathNotExists("/a:entry/a:title", xmlString);
     assertXpathNotExists("/a:entry/a:updated", xmlString);
@@ -155,7 +214,8 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     String xmlString = verifyResponse(response);
     assertXpathExists("/a:entry", xmlString);
     assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
-
+    assertXpathNotExists("/a:entry[@m:etag]", xmlString);
+    
     assertXpathNotExists("/a:entry/a:id", xmlString);
     assertXpathNotExists("/a:entry/a:title", xmlString);
     assertXpathNotExists("/a:entry/a:updated", xmlString);
@@ -189,7 +249,8 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     String xmlString = verifyResponse(response);
     assertXpathExists("/a:entry", xmlString);
     assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
-
+    assertXpathNotExists("/a:entry[@m:etag]", xmlString);
+    
     assertXpathNotExists("/a:entry/a:id", xmlString);
     assertXpathNotExists("/a:entry/a:title", xmlString);
     assertXpathNotExists("/a:entry/a:updated", xmlString);
@@ -221,7 +282,8 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     String xmlString = verifyResponse(response);
     assertXpathExists("/a:entry", xmlString);
     assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
-
+    assertXpathNotExists("/a:entry[@m:etag]", xmlString);
+    
     assertXpathNotExists("/a:entry/a:id", xmlString);
     assertXpathNotExists("/a:entry/a:title", xmlString);
     assertXpathNotExists("/a:entry/a:updated", xmlString);
@@ -264,7 +326,8 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     String xmlString = verifyResponse(response);
     assertXpathExists("/a:entry", xmlString);
     assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
-
+    assertXpathNotExists("/a:entry[@m:etag]", xmlString);
+    
     assertXpathNotExists("/a:entry/a:id", xmlString);
     assertXpathNotExists("/a:entry/a:title", xmlString);
     assertXpathNotExists("/a:entry/a:updated", xmlString);
@@ -305,7 +368,8 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     String xmlString = verifyResponse(response);
     assertXpathExists("/a:entry", xmlString);
     assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
-
+    assertXpathNotExists("/a:entry[@m:etag]", xmlString);
+    
     assertXpathNotExists("/a:entry/a:id", xmlString);
     assertXpathNotExists("/a:entry/a:title", xmlString);
     assertXpathNotExists("/a:entry/a:updated", xmlString);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/868e7e86/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
index 7052fb0..7845b6d 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata2.core.ep.producer;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -40,6 +41,7 @@ import java.util.TimeZone;
 import org.apache.olingo.odata2.api.ODataCallback;
 import org.apache.olingo.odata2.api.edm.EdmEntitySet;
 import org.apache.olingo.odata2.api.edm.EdmEntityType;
+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.ep.EntityProviderException;
@@ -89,6 +91,75 @@ public class JsonEntryEntityProducerTest extends BaseTest {
 
   @SuppressWarnings("unchecked")
   @Test
+  public void omitETagTestPropertyPresent() throws Exception {
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(URI.create(BASE_URI)).omitETag(true).omitJsonWrapper(true).build();
+
+    Map<String, Object> localRoomData = new HashMap<String, Object>();
+    localRoomData.put("Id", "1");
+    localRoomData.put("Name", "Neu Schwanstein");
+    localRoomData.put("Seats", new Integer(20));
+    localRoomData.put("Version", new Integer(3));
+    final ODataResponse response =
+        new JsonEntityProvider().writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms"),
+            localRoomData, properties);
+    Map<String, Object> room =
+        (Map<String, Object>) new Gson().fromJson(new InputStreamReader((InputStream) response.getEntity()), Map.class);
+
+    room = (Map<String, Object>) room.get("__metadata");
+    assertFalse(room.containsKey("etag"));
+  }
+
+  @SuppressWarnings("unchecked")
+  @Test
+  public void omitETagTestPropertyNOTPresentMustNotResultInException() throws Exception {
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(URI.create(BASE_URI)).omitETag(true).omitJsonWrapper(true).build();
+
+    Map<String, Object> localRoomData = new HashMap<String, Object>();
+    localRoomData.put("Id", "1");
+    localRoomData.put("Name", "Neu Schwanstein");
+    localRoomData.put("Seats", new Integer(20));
+    final ODataResponse response =
+        new JsonEntityProvider().writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms"),
+            localRoomData, properties);
+    Map<String, Object> room =
+        (Map<String, Object>) new Gson().fromJson(new InputStreamReader((InputStream) response.getEntity()), Map.class);
+
+    room = (Map<String, Object>) room.get("__metadata");
+    assertFalse(room.containsKey("etag"));
+  }
+
+  @SuppressWarnings("unchecked")
+  @Test
+  public void omitETagTestNonNullablePropertyNOTPresentMustNotResultInException() throws Exception {
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+    EdmProperty versionProperty = (EdmProperty) entitySet.getEntityType().getProperty("Version");
+    EdmFacets facets = versionProperty.getFacets();
+    when(facets.isNullable()).thenReturn(new Boolean(false));
+    List<String> selectedPropertyNames = new ArrayList<String>();
+    selectedPropertyNames.add("Id");
+    selectedPropertyNames.add("Name");
+    selectedPropertyNames.add("Seats");
+    ExpandSelectTreeNode selectNode =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedPropertyNames).build();
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(URI.create(BASE_URI)).omitETag(true).omitJsonWrapper(true)
+            .expandSelectTree(selectNode).build();
+    Map<String, Object> localRoomData = new HashMap<String, Object>();
+    localRoomData.put("Id", "1");
+    localRoomData.put("Name", "Neu Schwanstein");
+    localRoomData.put("Seats", new Integer(20));
+    final ODataResponse response = new JsonEntityProvider().writeEntry(entitySet, localRoomData, properties);
+    Map<String, Object> room =
+        (Map<String, Object>) new Gson().fromJson(new InputStreamReader((InputStream) response.getEntity()), Map.class);
+
+    room = (Map<String, Object>) room.get("__metadata");
+    assertFalse(room.containsKey("etag"));
+  }
+
+  @SuppressWarnings("unchecked")
+  @Test
   public void contentOnly() throws Exception {
     HashMap<String, Object> employeeData = new HashMap<String, Object>();
     Calendar date = Calendar.getInstance(TimeZone.getTimeZone("GMT"));


[25/50] [abbrv] git commit: [OLINGO-334] fix function import parameter bug

Posted by mi...@apache.org.
[OLINGO-334] fix function import parameter bug


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/0faf34bf
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/0faf34bf
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/0faf34bf

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 0faf34bf39a289af757f0c08ee75b11a3125395d
Parents: 84a47f9
Author: Stephan Klevenz <sk...@apache.org>
Authored: Tue Jul 1 14:33:30 2014 +0200
Committer: Stephan Klevenz <sk...@apache.org>
Committed: Tue Jul 1 14:34:21 2014 +0200

----------------------------------------------------------------------
 .../core/ep/consumer/XmlMetadataConsumer.java   |  2 +-
 .../ep/consumer/XmlMetadataConsumerTest.java    | 63 +++++++++++++++-----
 2 files changed, 48 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/0faf34bf/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
index e8677a1..4239c6d 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
@@ -306,7 +306,7 @@ public class XmlMetadataConsumer {
     functionParameter.setAnnotationAttributes(readAnnotationAttribute(reader));
     while (reader.hasNext()
         && !(reader.isEndElement() && edmNamespace.equals(reader.getNamespaceURI())
-        && XmlMetadataConstants.EDM_FUNCTION_IMPORT.equals(reader.getLocalName()))) {
+        && XmlMetadataConstants.EDM_FUNCTION_PARAMETER.equals(reader.getLocalName()))) {
       reader.next();
       if (reader.isStartElement()) {
         extractNamespaces(reader);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/0faf34bf/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
index c8ad5ff..e939f3a 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
@@ -560,8 +560,15 @@ public class XmlMetadataConsumerTest extends AbstractXmlConsumerTest {
             + "<EntitySet Name=\"Employees\" EntityType=\"RefScenario.Employee\"/>"
             + "<FunctionImport Name=\"EmployeeSearch\" ReturnType=\"Collection(RefScenario.Employee)\" " +
             "EntitySet=\"Employees\" m:HttpMethod=\"GET\">"
-            + "<Parameter Name=\"q\" Type=\"Edm.String\" Nullable=\"true\" />"
-            + "</FunctionImport>" + "</EntityContainer>" + "</Schema>" + "</edmx:DataServices>" + "</edmx:Edmx>";
+            + "<Parameter Name=\"q1\" Type=\"Edm.String\" Nullable=\"true\" />"
+            + "<Parameter Name=\"q2\" Type=\"Edm.Int32\" Nullable=\"false\" />"
+            + "</FunctionImport>"
+            + "<FunctionImport Name=\"RoomSearch\" ReturnType=\"Collection(RefScenario.Room)\" " +
+            "EntitySet=\"Rooms\" m:HttpMethod=\"GET\">"
+            + "<Parameter Name=\"q1\" Type=\"Edm.String\" Nullable=\"true\" />"
+            + "<Parameter Name=\"q2\" Type=\"Edm.Int32\" Nullable=\"false\" />"
+            + "</FunctionImport>"
+            + "</EntityContainer>" + "</Schema>" + "</edmx:DataServices>" + "</edmx:Edmx>";
     XmlMetadataConsumer parser = new XmlMetadataConsumer();
     XMLStreamReader reader = createStreamReader(xmWithEntityContainer);
     DataServices result = parser.readMetadata(reader, true);
@@ -569,22 +576,46 @@ public class XmlMetadataConsumerTest extends AbstractXmlConsumerTest {
       for (EntityContainer container : schema.getEntityContainers()) {
         assertEquals("Container1", container.getName());
         assertEquals(Boolean.TRUE, container.isDefaultEntityContainer());
-        for (FunctionImport functionImport : container.getFunctionImports()) {
-          assertEquals("EmployeeSearch", functionImport.getName());
-          assertEquals("Employees", functionImport.getEntitySet());
-          assertEquals(NAMESPACE, functionImport.getReturnType().getTypeName().getNamespace());
-          assertEquals("Employee", functionImport.getReturnType().getTypeName().getName());
-          assertEquals(EdmMultiplicity.MANY, functionImport.getReturnType().getMultiplicity());
-          assertEquals("GET", functionImport.getHttpMethod());
-          for (FunctionImportParameter parameter : functionImport.getParameters()) {
-            assertEquals("q", parameter.getName());
-            assertEquals(EdmSimpleTypeKind.String, parameter.getType());
-            assertEquals(Boolean.TRUE, parameter.getFacets().isNullable());
-          }
-        }
+
+        assertEquals(2, container.getFunctionImports().size());
+        FunctionImport functionImport1 = container.getFunctionImports().get(0);
+
+        assertEquals("EmployeeSearch", functionImport1.getName());
+        assertEquals("Employees", functionImport1.getEntitySet());
+        assertEquals(NAMESPACE, functionImport1.getReturnType().getTypeName().getNamespace());
+        assertEquals("Employee", functionImport1.getReturnType().getTypeName().getName());
+        assertEquals(EdmMultiplicity.MANY, functionImport1.getReturnType().getMultiplicity());
+        assertEquals("GET", functionImport1.getHttpMethod());
+        assertEquals(2, functionImport1.getParameters().size());
+
+        assertEquals("q1", functionImport1.getParameters().get(0).getName());
+        assertEquals(EdmSimpleTypeKind.String, functionImport1.getParameters().get(0).getType());
+        assertEquals(Boolean.TRUE, functionImport1.getParameters().get(0).getFacets().isNullable());
+
+        assertEquals("q2", functionImport1.getParameters().get(1).getName());
+        assertEquals(EdmSimpleTypeKind.Int32, functionImport1.getParameters().get(1).getType());
+        assertEquals(Boolean.FALSE, functionImport1.getParameters().get(1).getFacets().isNullable());
+
+        FunctionImport functionImport2 = container.getFunctionImports().get(1);
+
+        assertEquals("RoomSearch", functionImport2.getName());
+        assertEquals("Rooms", functionImport2.getEntitySet());
+        assertEquals(NAMESPACE, functionImport2.getReturnType().getTypeName().getNamespace());
+        assertEquals("Room", functionImport2.getReturnType().getTypeName().getName());
+        assertEquals(EdmMultiplicity.MANY, functionImport2.getReturnType().getMultiplicity());
+        assertEquals("GET", functionImport2.getHttpMethod());
+        assertEquals(2, functionImport2.getParameters().size());
+
+        assertEquals("q1", functionImport2.getParameters().get(0).getName());
+        assertEquals(EdmSimpleTypeKind.String, functionImport2.getParameters().get(0).getType());
+        assertEquals(Boolean.TRUE, functionImport2.getParameters().get(0).getFacets().isNullable());
+
+        assertEquals("q2", functionImport2.getParameters().get(1).getName());
+        assertEquals(EdmSimpleTypeKind.Int32, functionImport2.getParameters().get(1).getType());
+        assertEquals(Boolean.FALSE, functionImport2.getParameters().get(1).getFacets().isNullable());
+
       }
     }
-
   }
 
   @Test()


[31/50] [abbrv] git commit: [OLINGO-331] Set version to 2.1.0-SNAPSHOT

Posted by mi...@apache.org.
[OLINGO-331] Set version to 2.1.0-SNAPSHOT


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/bebce0bc
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/bebce0bc
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/bebce0bc

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: bebce0bc551d557a2b35378a75387aa9e3094097
Parents: ae37027
Author: Michael Bolz <mi...@apache.org>
Authored: Sat Jul 12 18:40:59 2014 +0200
Committer: Michael Bolz <mi...@apache.org>
Committed: Sat Jul 12 18:40:59 2014 +0200

----------------------------------------------------------------------
 odata2-annotation-processor/annotation-processor-api/pom.xml     | 2 +-
 odata2-annotation-processor/annotation-processor-core/pom.xml    | 2 +-
 odata2-annotation-processor/annotation-processor-ref/pom.xml     | 2 +-
 odata2-annotation-processor/annotation-processor-web/pom.xml     | 2 +-
 odata2-annotation-processor/pom.xml                              | 2 +-
 odata2-dist/janos/pom.xml                                        | 2 +-
 odata2-dist/javadoc/pom.xml                                      | 2 +-
 odata2-dist/jpa/pom.xml                                          | 2 +-
 odata2-dist/lib/pom.xml                                          | 2 +-
 odata2-dist/pom.xml                                              | 2 +-
 odata2-dist/ref/pom.xml                                          | 2 +-
 odata2-jpa-processor/jpa-api/pom.xml                             | 2 +-
 odata2-jpa-processor/jpa-core/pom.xml                            | 2 +-
 odata2-jpa-processor/jpa-ref/pom.xml                             | 2 +-
 odata2-jpa-processor/jpa-web/pom.xml                             | 2 +-
 odata2-jpa-processor/pom.xml                                     | 2 +-
 odata2-lib/odata-annotation/pom.xml                              | 2 +-
 odata2-lib/odata-api/pom.xml                                     | 2 +-
 odata2-lib/odata-core/pom.xml                                    | 2 +-
 odata2-lib/odata-fit/pom.xml                                     | 2 +-
 odata2-lib/odata-ref/pom.xml                                     | 2 +-
 odata2-lib/odata-testutil/pom.xml                                | 2 +-
 odata2-lib/odata-web/pom.xml                                     | 2 +-
 odata2-lib/pom.xml                                               | 2 +-
 odata2-sample/cars-annotation-archetype/pom.xml                  | 4 ++--
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/cars-jpa-archetype/pom.xml                         | 2 +-
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/cars-service-archetype/pom.xml                     | 4 ++--
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/pom.xml                                            | 2 +-
 pom.xml                                                          | 2 +-
 32 files changed, 34 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-annotation-processor/annotation-processor-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-api/pom.xml b/odata2-annotation-processor/annotation-processor-api/pom.xml
index 1b39e30..51cc9d0 100644
--- a/odata2-annotation-processor/annotation-processor-api/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-api/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0</version>
+    <version>2.1.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-annotation-processor/annotation-processor-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/pom.xml b/odata2-annotation-processor/annotation-processor-core/pom.xml
index d367282..53b72c8 100644
--- a/odata2-annotation-processor/annotation-processor-core/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0</version>
+    <version>2.1.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-annotation-processor/annotation-processor-ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-ref/pom.xml b/odata2-annotation-processor/annotation-processor-ref/pom.xml
index 8e05f59..d245263 100644
--- a/odata2-annotation-processor/annotation-processor-ref/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-ref/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0</version>
+    <version>2.1.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-annotation-processor/annotation-processor-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-web/pom.xml b/odata2-annotation-processor/annotation-processor-web/pom.xml
index 17d85bc..ad87c4d 100644
--- a/odata2-annotation-processor/annotation-processor-web/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-web/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0</version>
+    <version>2.1.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-annotation-processor/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/pom.xml b/odata2-annotation-processor/pom.xml
index a3f3bfd..ef10375 100644
--- a/odata2-annotation-processor/pom.xml
+++ b/odata2-annotation-processor/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-dist/janos/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/janos/pom.xml b/odata2-dist/janos/pom.xml
index 220ac80..8b1e2ba 100644
--- a/odata2-dist/janos/pom.xml
+++ b/odata2-dist/janos/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-dist/javadoc/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/javadoc/pom.xml b/odata2-dist/javadoc/pom.xml
index eb9487d..223b2c7 100644
--- a/odata2-dist/javadoc/pom.xml
+++ b/odata2-dist/javadoc/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-dist/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/jpa/pom.xml b/odata2-dist/jpa/pom.xml
index 7a40638..cbaa08c 100644
--- a/odata2-dist/jpa/pom.xml
+++ b/odata2-dist/jpa/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-dist/lib/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/lib/pom.xml b/odata2-dist/lib/pom.xml
index 60b3bea..2877a67 100644
--- a/odata2-dist/lib/pom.xml
+++ b/odata2-dist/lib/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-dist/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/pom.xml b/odata2-dist/pom.xml
index dcf28d1..e452a66 100644
--- a/odata2-dist/pom.xml
+++ b/odata2-dist/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-dist/ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/ref/pom.xml b/odata2-dist/ref/pom.xml
index 2c3de83..3c554a7 100644
--- a/odata2-dist/ref/pom.xml
+++ b/odata2-dist/ref/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-jpa-processor/jpa-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/pom.xml b/odata2-jpa-processor/jpa-api/pom.xml
index 7903559..ead670a 100644
--- a/odata2-jpa-processor/jpa-api/pom.xml
+++ b/odata2-jpa-processor/jpa-api/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-jpa-processor/jpa-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/pom.xml b/odata2-jpa-processor/jpa-core/pom.xml
index fc7cff1..c03bb67 100644
--- a/odata2-jpa-processor/jpa-core/pom.xml
+++ b/odata2-jpa-processor/jpa-core/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/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 f67db2a..9e77869 100644
--- a/odata2-jpa-processor/jpa-ref/pom.xml
+++ b/odata2-jpa-processor/jpa-ref/pom.xml
@@ -17,7 +17,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-jpa-processor/jpa-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/pom.xml b/odata2-jpa-processor/jpa-web/pom.xml
index 5c326e7..2037516 100644
--- a/odata2-jpa-processor/jpa-web/pom.xml
+++ b/odata2-jpa-processor/jpa-web/pom.xml
@@ -21,7 +21,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-jpa-processor/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/pom.xml b/odata2-jpa-processor/pom.xml
index 962b752..960755a 100644
--- a/odata2-jpa-processor/pom.xml
+++ b/odata2-jpa-processor/pom.xml
@@ -18,7 +18,7 @@
     <parent>
       <groupId>org.apache.olingo</groupId>
       <artifactId>olingo-odata2-parent</artifactId>
-      <version>2.0.0</version>
+      <version>2.1.0-SNAPSHOT</version>
       <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-lib/odata-annotation/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-annotation/pom.xml b/odata2-lib/odata-annotation/pom.xml
index ec7edd5..088809c 100644
--- a/odata2-lib/odata-annotation/pom.xml
+++ b/odata2-lib/odata-annotation/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-lib</artifactId>
-    <version>2.0.0</version>
+    <version>2.1.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-lib/odata-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/pom.xml b/odata2-lib/odata-api/pom.xml
index d315de5..dd571ce 100644
--- a/odata2-lib/odata-api/pom.xml
+++ b/odata2-lib/odata-api/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-    <version>2.0.0</version>
+    <version>2.1.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-lib/odata-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/pom.xml b/odata2-lib/odata-core/pom.xml
index 0bf859b..421cdf1 100644
--- a/odata2-lib/odata-core/pom.xml
+++ b/odata2-lib/odata-core/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.0.0</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-lib/odata-fit/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/pom.xml b/odata2-lib/odata-fit/pom.xml
index f4b9086..7486948 100644
--- a/odata2-lib/odata-fit/pom.xml
+++ b/odata2-lib/odata-fit/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.0.0</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-lib/odata-ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-ref/pom.xml b/odata2-lib/odata-ref/pom.xml
index 1280ef4..9901a3a 100644
--- a/odata2-lib/odata-ref/pom.xml
+++ b/odata2-lib/odata-ref/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.0.0</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-lib/odata-testutil/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-testutil/pom.xml b/odata2-lib/odata-testutil/pom.xml
index 292bfbb..5dff9de 100644
--- a/odata2-lib/odata-testutil/pom.xml
+++ b/odata2-lib/odata-testutil/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-lib</artifactId>
-    <version>2.0.0</version>
+    <version>2.1.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-lib/odata-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-web/pom.xml b/odata2-lib/odata-web/pom.xml
index dc3f69d..110d6f8 100644
--- a/odata2-lib/odata-web/pom.xml
+++ b/odata2-lib/odata-web/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-lib</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-lib/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/pom.xml b/odata2-lib/pom.xml
index 88c2fb8..1fc4e81 100644
--- a/odata2-lib/pom.xml
+++ b/odata2-lib/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-sample/cars-annotation-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/pom.xml b/odata2-sample/cars-annotation-archetype/pom.xml
index aed56e4..d368a85 100644
--- a/odata2-sample/cars-annotation-archetype/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/pom.xml
@@ -16,13 +16,13 @@
   <groupId>org.apache.olingo</groupId>
   <artifactId>olingo-odata2-sample-cars-annotation-archetype</artifactId>
   <name>${project.artifactId}</name>
-  <version>2.0.0</version>
+  <version>2.1.0-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-sample</artifactId>
-    <version>2.0.0</version>
+    <version>2.1.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
index 6ae10dd..42e361d 100644
--- a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
@@ -32,7 +32,7 @@
     <version.servlet-api>2.5</version.servlet-api>
     <version.jaxrs-api>2.0-m10</version.jaxrs-api>
     <version.slf4j>1.7.1</version.slf4j>
-    <version.olingo>2.0.0</version.olingo>
+    <version.olingo>2.1.0-SNAPSHOT</version.olingo>
   </properties>
 
   <build>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-sample/cars-jpa-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/pom.xml b/odata2-sample/cars-jpa-archetype/pom.xml
index ed63eb3..03c96e6 100644
--- a/odata2-sample/cars-jpa-archetype/pom.xml
+++ b/odata2-sample/cars-jpa-archetype/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-sample</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 	

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
index fc307b7..237973a 100644
--- a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
@@ -20,7 +20,7 @@
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<version.cxf>2.7.6</version.cxf>
-		<version.olingo>2.0.0</version.olingo>
+		<version.olingo>2.1.0-SNAPSHOT</version.olingo>
 		<version.eclipselink>2.5.1</version.eclipselink>
 		<version.javax.persistence>2.0.5</version.javax.persistence>
 	</properties>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-sample/cars-service-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/pom.xml b/odata2-sample/cars-service-archetype/pom.xml
index 31fcce5..67df1fe 100644
--- a/odata2-sample/cars-service-archetype/pom.xml
+++ b/odata2-sample/cars-service-archetype/pom.xml
@@ -24,14 +24,14 @@
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-sample-cars-service-archetype</artifactId>
     <name>${project.artifactId}</name>
-    <version>2.0.0</version>
+    <version>2.1.0-SNAPSHOT</version>
 
     <packaging>maven-archetype</packaging>
 
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-sample</artifactId>
-        <version>2.0.0</version>
+        <version>2.1.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
index bff8d75..e1f88af 100644
--- a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
@@ -20,7 +20,7 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<version.cxf>2.7.6</version.cxf>
 		<version.slf4j>1.7.1</version.slf4j>
-		<version.olingo>2.0.0</version.olingo>
+		<version.olingo>2.1.0-SNAPSHOT</version.olingo>
 	</properties>
 
 	<build>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/odata2-sample/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/pom.xml b/odata2-sample/pom.xml
index afa0d71..b16d48b 100644
--- a/odata2-sample/pom.xml
+++ b/odata2-sample/pom.xml
@@ -15,7 +15,7 @@
     <parent>
       <groupId>org.apache.olingo</groupId>
       <artifactId>olingo-odata2-parent</artifactId>
-      <version>2.0.0</version>
+      <version>2.1.0-SNAPSHOT</version>
       <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/bebce0bc/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 16723ad..bf21b7c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
 
 	<groupId>org.apache.olingo</groupId>
 	<artifactId>olingo-odata2-parent</artifactId>
-	<version>2.0.0</version>
+	<version>2.1.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 
 	<name>${project.artifactId}</name>


[14/50] [abbrv] git commit: [OLINGO-241] convenience method added

Posted by mi...@apache.org.
[OLINGO-241] convenience method added


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/242d9616
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/242d9616
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/242d9616

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 242d9616e686e19313d72ef66376642e061100d1
Parents: a30379e
Author: Stephan Klevenz <sk...@apache.org>
Authored: Mon Jun 23 15:53:47 2014 +0200
Committer: Stephan Klevenz <sk...@apache.org>
Committed: Mon Jun 23 15:53:47 2014 +0200

----------------------------------------------------------------------
 .../olingo/odata2/api/processor/ODataResponse.java | 14 ++++++++++++++
 .../olingo/odata2/core/ODataResponseTest.java      | 17 +++++++++++++++++
 2 files changed, 31 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/242d9616/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataResponse.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataResponse.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataResponse.java
index 345368e..57e41c6 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataResponse.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataResponse.java
@@ -19,9 +19,11 @@
 package org.apache.olingo.odata2.api.processor;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.Set;
 
 import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
+import org.apache.olingo.odata2.api.exception.ODataException;
 import org.apache.olingo.odata2.api.rt.RuntimeDelegate;
 
 /**
@@ -52,6 +54,18 @@ public abstract class ODataResponse {
   public abstract Object getEntity();
 
   /**
+   * @return a response entity as inputStream which becomes the body part of a response message
+   * @throws ODataException throws ODataException in case of entity is not a stream (internal ClassCastException) 
+   */
+  public InputStream getEntityAsStream() throws ODataException {
+    try {
+    return (InputStream) getEntity();
+    } catch (ClassCastException e) {
+      throw new ODataException(e);
+    }
+  }
+  
+  /**
    * Close the underlying entity input stream (if such a stream is available) and release all with this repsonse
    * associated resources.
    * 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/242d9616/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataResponseTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataResponseTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataResponseTest.java
index fb20afc..19cd6ed 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataResponseTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataResponseTest.java
@@ -20,15 +20,18 @@ package org.apache.olingo.odata2.core;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+import java.io.ByteArrayInputStream;
 import java.util.Arrays;
 import java.util.HashSet;
 
 import org.apache.olingo.odata2.api.commons.HttpContentType;
 import org.apache.olingo.odata2.api.commons.HttpHeaders;
 import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
+import org.apache.olingo.odata2.api.exception.ODataException;
 import org.apache.olingo.odata2.api.processor.ODataResponse;
 import org.apache.olingo.odata2.testutil.fit.BaseTest;
 import org.junit.Test;
@@ -52,6 +55,20 @@ public class ODataResponseTest extends BaseTest {
   }
 
   @Test
+  public void buildEntityAsStreamResponseTest() throws ODataException {
+    ODataResponse response = ODataResponse.entity(new ByteArrayInputStream("abc".getBytes())).build();
+    assertNull(response.getStatus());
+    assertNotNull(response.getEntityAsStream());
+  }
+
+  @Test(expected = ODataException.class)
+  public void buildEntityAsStreamResponseFailTest() throws ODataException {
+    ODataResponse response = ODataResponse.entity("abc").build();
+    assertNull(response.getStatus());
+    assertNotNull(response.getEntityAsStream());
+  }
+
+  @Test
   public void buildHeaderResponseTest() {
     ODataResponse response = ODataResponse
         .header("abc", "123")


[38/50] [abbrv] git commit: [OLINGO-380] - Fix for java.sql.Date, java.sql.Time in create and update scenario.

Posted by mi...@apache.org.
[OLINGO-380] - Fix for java.sql.Date, java.sql.Time in create and update
scenario.

Support for java.util.Date in Read, Query, Create and Update scenario.


Signed-off-by: Chandan V A <ch...@sap.com>

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/44604c78
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/44604c78
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/44604c78

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 44604c78f5fcca8e4960527ac54cb4f5ffa96f63
Parents: 2d5a019
Author: Chandan V A <ch...@sap.com>
Authored: Tue Jul 29 13:32:03 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Tue Jul 29 13:32:03 2014 +0530

----------------------------------------------------------------------
 .../odata2/jpa/processor/core/access/data/JPAEntity.java     | 8 ++++++++
 .../jpa/processor/core/access/model/JPATypeConvertor.java    | 6 ++++--
 2 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/44604c78/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
index 3c42288..19ca88b 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
@@ -354,6 +354,14 @@ public class JPAEntity {
       } else if (parameterType.equals(Timestamp.class)) {
         Timestamp ts = new Timestamp(((Calendar) entityPropertyValue).getTimeInMillis());
         method.invoke(entity, ts);
+      } else if (parameterType.equals(java.util.Date.class)) {
+        method.invoke(entity, ((Calendar) entityPropertyValue).getTime());
+      } else if (parameterType.equals(java.sql.Date.class)) {
+        long timeInMs = ((Calendar) entityPropertyValue).getTimeInMillis();
+        method.invoke(entity, new java.sql.Date(timeInMs));
+      } else if (parameterType.equals(java.sql.Time.class)) {
+        long timeInMs = ((Calendar) entityPropertyValue).getTimeInMillis();
+        method.invoke(entity, new java.sql.Time(timeInMs));
       } else {
         method.invoke(entity, entityPropertyValue);
       }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/44604c78/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
index 8ea1ce3..10a6d73 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
@@ -82,8 +82,10 @@ public class JPATypeConvertor {
       return EdmSimpleTypeKind.Byte;
     } else if (jpaType.equals(Boolean.class) || jpaType.equals(boolean.class)) {
       return EdmSimpleTypeKind.Boolean;
-    } else if ((jpaType.equals(Date.class)) || (jpaType.equals(Calendar.class)) ||
-        jpaType.equals(Timestamp.class)) {
+    } else if (jpaType.equals(java.sql.Time.class)) {
+      return EdmSimpleTypeKind.Time;
+    } else if (jpaType.equals(Date.class) || jpaType.equals(Calendar.class) ||
+        jpaType.equals(Timestamp.class) || jpaType.equals(java.util.Date.class)) {
       try {
         if ((currentAttribute != null)
             && (determineTemporalType(currentAttribute)


[34/50] [abbrv] git commit: [OLINGO-375] Add type attribute for additional links

Posted by mi...@apache.org.
[OLINGO-375] Add type attribute for additional links


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/6b73a91d
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/6b73a91d
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/6b73a91d

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 6b73a91d367e85f2235cf4fc667834e5259f33d7
Parents: 3a1ffb4
Author: Christian Amend <ch...@apache.org>
Authored: Mon Jul 21 13:15:22 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Mon Jul 21 13:15:22 2014 +0200

----------------------------------------------------------------------
 .../ep/producer/AtomEntryEntityProducer.java    | 22 ++++++++++----------
 .../core/ep/producer/AtomEntryProducerTest.java |  4 ++--
 2 files changed, 13 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6b73a91d/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
index f2e19ea..97c606f 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
@@ -152,12 +152,14 @@ public class AtomEntryEntityProducer {
     if (links != null && !links.isEmpty()) {
       for (Entry<String, Map<String, Object>> entry : links.entrySet()) {
         Map<String, Object> navigationKeyMap = entry.getValue();
+        final boolean isFeed =
+            (eia.getNavigationPropertyInfo(entry.getKey()).getMultiplicity() == EdmMultiplicity.MANY);
         if (navigationKeyMap != null && !navigationKeyMap.isEmpty()) {
           final EntityInfoAggregator targetEntityInfo = EntityInfoAggregator.create(
               eia.getEntitySet().getRelatedEntitySet(
                   (EdmNavigationProperty) eia.getEntityType().getProperty(entry.getKey())));
           appendAtomNavigationLink(writer, createSelfLink(targetEntityInfo, navigationKeyMap, null), entry.getKey(),
-              null, eia, data);
+              isFeed, eia, data);
         }
       }
     }
@@ -219,27 +221,25 @@ public class AtomEntryEntityProducer {
       } else {
         final EntityInfoAggregator targetEntityInfo = EntityInfoAggregator.create(
             eia.getEntitySet().getRelatedEntitySet((EdmNavigationProperty) eia.getEntityType().getProperty(name)));
-        appendAtomNavigationLink(writer, createSelfLink(targetEntityInfo, key, null), name, null, eia, data);
+        appendAtomNavigationLink(writer, createSelfLink(targetEntityInfo, key, null), name, isFeed, eia, data);
       }
     }
   }
 
   private void appendAtomNavigationLink(final XMLStreamWriter writer, final String target,
-      final String navigationPropertyName, final Boolean isFeed, final EntityInfoAggregator eia,
+      final String navigationPropertyName, final boolean isFeed, final EntityInfoAggregator eia,
       final Map<String, Object> data) throws EntityProviderException, EdmException, URISyntaxException {
     try {
       writer.writeStartElement(FormatXml.ATOM_LINK);
       writer.writeAttribute(FormatXml.ATOM_HREF, target);
       writer.writeAttribute(FormatXml.ATOM_REL, Edm.NAMESPACE_REL_2007_08 + navigationPropertyName);
       writer.writeAttribute(FormatXml.ATOM_TITLE, navigationPropertyName);
-      if (isFeed != null) {
-        if (isFeed) {
-          writer.writeAttribute(FormatXml.ATOM_TYPE, ContentType.APPLICATION_ATOM_XML_FEED.toString());
-          appendInlineFeed(writer, navigationPropertyName, eia, data, target);
-        } else {
-          writer.writeAttribute(FormatXml.ATOM_TYPE, ContentType.APPLICATION_ATOM_XML_ENTRY.toString());
-          appendInlineEntry(writer, navigationPropertyName, eia, data);
-        }
+      if (isFeed) {
+        writer.writeAttribute(FormatXml.ATOM_TYPE, ContentType.APPLICATION_ATOM_XML_FEED.toString());
+        appendInlineFeed(writer, navigationPropertyName, eia, data, target);
+      } else {
+        writer.writeAttribute(FormatXml.ATOM_TYPE, ContentType.APPLICATION_ATOM_XML_ENTRY.toString());
+        appendInlineEntry(writer, navigationPropertyName, eia, data);
       }
       writer.writeEndElement();
     } catch (XMLStreamException e) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6b73a91d/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
index b7a350a..7c26984 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
@@ -1026,7 +1026,7 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     assertXpathExists("/a:entry/a:link[@title='nr_Building']", xmlString);
     assertXpathNotExists("/a:entry/a:link[@href=\"Rooms('1')/nr_Building\"]", xmlString);
     assertXpathExists("/a:entry/a:link[@href=\"Buildings('1')\"]", xmlString);
-    assertXpathNotExists("/a:entry/a:link[@type='application/atom+xml;type=entry']", xmlString);
+    assertXpathExists("/a:entry/a:link[@type='application/atom+xml;type=entry']", xmlString);
   }
 
   @Test
@@ -1041,7 +1041,7 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     assertXpathExists("/a:entry/a:link[@title='nr_Employees']", xmlString);
     assertXpathNotExists("/a:entry/a:link[@href=\"Rooms('1')/nr_Employees\"]", xmlString);
     assertXpathExists("/a:entry/a:link[@href=\"Employees('1')\"]", xmlString);
-    assertXpathNotExists("/a:entry/a:link[@type='application/atom+xml;type=feed']", xmlString);
+    assertXpathExists("/a:entry/a:link[@type='application/atom+xml;type=feed']", xmlString);
   }
 
   @Test


[16/50] [abbrv] git commit: [OLINGO-310] ContentOnly flag

Posted by mi...@apache.org.
[OLINGO-310] ContentOnly flag


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/f14dfd46
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/f14dfd46
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/f14dfd46

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: f14dfd46b2a80954fba2feac49405fea5c2cfaf1
Parents: ebc5c79
Author: Christian Amend <ch...@apache.org>
Authored: Wed Jun 25 14:36:38 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Wed Jun 25 14:37:32 2014 +0200

----------------------------------------------------------------------
 .../api/ep/EntityProviderWriteProperties.java   |  22 +-
 .../ep/producer/AtomEntryEntityProducer.java    |  54 +++-
 .../ep/producer/JsonEntryEntityProducer.java    |  58 ++++-
 .../ep/ODataEntityProviderPropertiesTest.java   |   4 +
 .../core/ep/producer/AtomEntryProducerTest.java | 245 +++++++++++++++++++
 .../producer/JsonEntryEntityProducerTest.java   | 139 +++++++++++
 6 files changed, 497 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f14dfd46/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
index df99f21..b4422ee 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
@@ -24,7 +24,6 @@ import java.util.Map;
 
 import org.apache.olingo.odata2.api.ODataCallback;
 import org.apache.olingo.odata2.api.commons.InlineCount;
-import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties.ODataEntityProviderPropertiesBuilder;
 import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
 
 /**
@@ -46,9 +45,14 @@ public class EntityProviderWriteProperties {
   private boolean includeSimplePropertyType;
   private Map<String, Map<String, Object>> additionalLinks;
   private boolean omitJsonWrapper;
+  private boolean contentOnly;
 
   private EntityProviderWriteProperties() {}
 
+  public final boolean isContentOnly() {
+    return contentOnly;
+  }
+
   public final boolean isOmitJsonWrapper() {
     return omitJsonWrapper;
   }
@@ -235,6 +239,17 @@ public class EntityProviderWriteProperties {
       return this;
     }
 
+    public ODataEntityProviderPropertiesBuilder omitJsonWrapper(boolean omitJsonWrapper) {
+      properties.omitJsonWrapper = omitJsonWrapper;
+      return this;
+    }
+
+    public ODataEntityProviderPropertiesBuilder contentOnly(boolean contentOnly) {
+      properties.contentOnly = contentOnly;
+      return this;
+    }
+
+    
     public ODataEntityProviderPropertiesBuilder fromProperties(final EntityProviderWriteProperties properties) {
       this.properties.mediaResourceMimeType = properties.getMediaResourceMimeType();
       this.properties.inlineCountType = properties.getInlineCountType();
@@ -246,13 +261,10 @@ public class EntityProviderWriteProperties {
       this.properties.includeSimplePropertyType = properties.includeSimplePropertyType;
       this.properties.additionalLinks = properties.additionalLinks;
       this.properties.omitJsonWrapper = properties.omitJsonWrapper;
+      this.properties.contentOnly = properties.contentOnly;
       return this;
     }
 
-    public ODataEntityProviderPropertiesBuilder omitJsonWrapper(boolean omitJsonWrapper) {
-      properties.omitJsonWrapper = omitJsonWrapper;
-      return this;
-    }
   }
 
   public static ODataEntityProviderPropertiesBuilder fromProperties(final EntityProviderWriteProperties properties) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f14dfd46/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
index 95702dd..bd519e0 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
@@ -58,6 +59,7 @@ import org.apache.olingo.odata2.core.commons.Encoder;
 import org.apache.olingo.odata2.core.edm.EdmDateTimeOffset;
 import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
 import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
+import org.apache.olingo.odata2.core.ep.util.FormatJson;
 import org.apache.olingo.odata2.core.ep.util.FormatXml;
 
 /**
@@ -94,25 +96,36 @@ public class AtomEntryEntityProducer {
         writer.writeAttribute(Edm.NAMESPACE_M_2007_08, FormatXml.M_ETAG, etag);
       }
 
-      // write all atom infos (mandatory and optional)
-      String selfLink = createSelfLink(eia, data, null);
-      appendAtomMandatoryParts(writer, eia, data, selfLink);
-      appendAtomOptionalParts(writer, eia, data);
-
+      String selfLink = null;
+      if (!properties.isContentOnly()) {
+        // write all atom infos (mandatory and optional)
+        selfLink = createSelfLink(eia, data, null);
+        appendAtomMandatoryParts(writer, eia, data, selfLink);
+        appendAtomOptionalParts(writer, eia, data);
+      }
       if (eia.getEntityType().hasStream()) {
         // write all links
-        appendAtomEditLink(writer, eia, data, selfLink);
-        // TODO: fix
-        appendAtomContentLink(writer, eia, data, selfLink);
-        appendAtomNavigationLinks(writer, eia, data);
+        if (!properties.isContentOnly()) {
+          appendAtomEditLink(writer, eia, data, selfLink);
+          appendAtomContentLink(writer, eia, data, selfLink);
+          appendAtomNavigationLinks(writer, eia, data);
+        } else {
+          appendAdditinalLinks(writer, eia, data);
+        }
         // write properties/content
         appendCustomProperties(writer, eia, data);
-        appendAtomContentPart(writer, eia, data, selfLink);
+        if (!properties.isContentOnly()) {
+          appendAtomContentPart(writer, eia, data, selfLink);
+        }
         appendProperties(writer, eia, data);
       } else {
         // write all links
-        appendAtomEditLink(writer, eia, data, selfLink);
-        appendAtomNavigationLinks(writer, eia, data);
+        if (!properties.isContentOnly()) {
+          appendAtomEditLink(writer, eia, data, selfLink);
+          appendAtomNavigationLinks(writer, eia, data);
+        } else {
+          appendAdditinalLinks(writer, eia, data);
+        }
         // write properties/content
         appendCustomProperties(writer, eia, data);
         writer.writeStartElement(FormatXml.ATOM_CONTENT);
@@ -133,6 +146,23 @@ public class AtomEntryEntityProducer {
     }
   }
 
+  private void appendAdditinalLinks(XMLStreamWriter writer, EntityInfoAggregator eia, Map<String, Object> data)
+      throws EntityProviderException, EdmException, URISyntaxException {
+    final Map<String, Map<String, Object>> links = properties.getAdditionalLinks();
+    if (links != null && !links.isEmpty()) {
+      for (Entry<String, Map<String, Object>> entry : links.entrySet()) {
+        Map<String, Object> navigationKeyMap = entry.getValue();
+        if (navigationKeyMap != null && !navigationKeyMap.isEmpty()) {
+          final EntityInfoAggregator targetEntityInfo = EntityInfoAggregator.create(
+              eia.getEntitySet().getRelatedEntitySet(
+                  (EdmNavigationProperty) eia.getEntityType().getProperty(entry.getKey())));
+          appendAtomNavigationLink(writer, createSelfLink(targetEntityInfo, navigationKeyMap, null), entry.getKey(),
+              null, eia, data);
+        }
+      }
+    }
+  }
+
   private void appendCustomProperties(final XMLStreamWriter writer, final EntityInfoAggregator eia,
       final Map<String, Object> data) throws EntityProviderException {
     List<String> noneSyndicationTargetPaths = eia.getNoneSyndicationTargetPathNames();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f14dfd46/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
index 1f3693b..5369f95 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
@@ -23,6 +23,8 @@ import java.io.Writer;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
 
 import org.apache.olingo.odata2.api.ODataCallback;
 import org.apache.olingo.odata2.api.edm.Edm;
@@ -76,11 +78,17 @@ public class JsonEntryEntityProducer {
 
       jsonStreamWriter.beginObject();
 
-      writeMetadata(entityInfo, data, type);
+      if (!properties.isContentOnly()) {
+        writeMetadata(entityInfo, data, type);
+      }
 
       writeProperties(entityInfo, data, type);
 
-      writeNavigationProperties(writer, entityInfo, data, type);
+      if (!properties.isContentOnly()) {
+        writeNavigationProperties(writer, entityInfo, data, type);
+      } else {
+        writeAdditonalLinksInContentOnlyCase(entityInfo);
+      }
 
       jsonStreamWriter.endObject();
 
@@ -173,9 +181,17 @@ public class JsonEntryEntityProducer {
 
   private void writeProperties(final EntityInfoAggregator entityInfo, final Map<String, Object> data,
       final EdmEntityType type) throws EdmException, EntityProviderException, IOException {
+    boolean omitComma = false;
+    if (properties.isContentOnly()) {
+      omitComma = true;
+    }
     for (final String propertyName : type.getPropertyNames()) {
       if (entityInfo.getSelectedPropertyNames().contains(propertyName)) {
-        jsonStreamWriter.separator();
+        if (omitComma == true) {
+          omitComma = false;
+        } else {
+          jsonStreamWriter.separator();
+        }
         jsonStreamWriter.name(propertyName);
         JsonPropertyEntityProducer.appendPropertyValue(jsonStreamWriter, entityInfo.getPropertyInfo(propertyName),
             data.get(propertyName));
@@ -250,16 +266,42 @@ public class JsonEntryEntityProducer {
     if (key == null || key.isEmpty()) {
       target = location + "/" + Encoder.encode(navigationPropertyName);
     } else {
-      final EntityInfoAggregator targetEntityInfo = EntityInfoAggregator.create(
-          entityInfo.getEntitySet().getRelatedEntitySet(
-              (EdmNavigationProperty) entityInfo.getEntityType().getProperty(navigationPropertyName)));
-      target = (properties.getServiceRoot() == null ? "" : properties.getServiceRoot().toASCIIString())
-          + AtomEntryEntityProducer.createSelfLink(targetEntityInfo, key, null);
+      target = createCustomTargetLink(entityInfo, navigationPropertyName, key);
     }
     JsonLinkEntityProducer.appendUri(jsonStreamWriter, target);
     jsonStreamWriter.endObject();
   }
 
+  private String createCustomTargetLink(final EntityInfoAggregator entityInfo, final String navigationPropertyName,
+      final Map<String, Object> key) throws EntityProviderException, EdmException {
+    String target;
+    final EntityInfoAggregator targetEntityInfo = EntityInfoAggregator.create(
+        entityInfo.getEntitySet().getRelatedEntitySet(
+            (EdmNavigationProperty) entityInfo.getEntityType().getProperty(navigationPropertyName)));
+    target = (properties.getServiceRoot() == null ? "" : properties.getServiceRoot().toASCIIString())
+        + AtomEntryEntityProducer.createSelfLink(targetEntityInfo, key, null);
+    return target;
+  }
+
+  private void writeAdditonalLinksInContentOnlyCase(final EntityInfoAggregator entityInfo)
+      throws IOException, EntityProviderException, EdmException {
+    final Map<String, Map<String, Object>> links = properties.getAdditionalLinks();
+    if (links != null && !links.isEmpty()) {
+      for (Entry<String, Map<String, Object>> entry : links.entrySet()) {
+        Map<String, Object> navigationKeyMap = entry.getValue();
+        if (navigationKeyMap != null && !navigationKeyMap.isEmpty()) {
+          String target = createCustomTargetLink(entityInfo, entry.getKey(), navigationKeyMap);
+          jsonStreamWriter.separator();
+          jsonStreamWriter.name(entry.getKey());
+          jsonStreamWriter.beginObject()
+              .name(FormatJson.DEFERRED);
+          JsonLinkEntityProducer.appendUri(jsonStreamWriter, target);
+          jsonStreamWriter.endObject();
+        }
+      }
+    }
+  }
+
   public String getETag() {
     return eTag;
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f14dfd46/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
index 51f39a8..73c957a 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
@@ -75,6 +75,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
         .includeSimplePropertyType(true)
         .additionalLinks(links)
         .omitJsonWrapper(true)
+        .contentOnly(true)
         .build();
 
     assertEquals("Wrong amount of callbacks.", 1, properties.getCallbacks().size());
@@ -89,6 +90,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
     assertTrue("Simple property types should be true", properties.isIncludeSimplePropertyType());
     assertEquals(Collections.emptyMap(), properties.getAdditionalLinks().get("aNavigationProperty"));
     assertTrue("Json Wrapper should be omitted", properties.isOmitJsonWrapper());
+    assertTrue("ContentOnlyFlag should be set", properties.isContentOnly());
   }
 
   @Test
@@ -121,6 +123,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
         .includeSimplePropertyType(true)
         .additionalLinks(links)
         .omitJsonWrapper(true)
+        .contentOnly(true)
         .build();
 
     //
@@ -140,5 +143,6 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
     assertTrue("Simple property types should be true", fromProperties.isIncludeSimplePropertyType());
     assertEquals(Collections.emptyMap(), fromProperties.getAdditionalLinks().get("aNavigationProperty"));
     assertTrue("Json Wrapper should be omitted", properties.isOmitJsonWrapper());
+    assertTrue("ContentOnlyFlag should be set", properties.isContentOnly());
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f14dfd46/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
index a87698d..db59c1e 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
@@ -53,6 +53,7 @@ import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
 import org.apache.olingo.odata2.api.exception.ODataException;
 import org.apache.olingo.odata2.api.exception.ODataMessageException;
 import org.apache.olingo.odata2.api.processor.ODataResponse;
+import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
 import org.apache.olingo.odata2.core.commons.ContentType;
 import org.apache.olingo.odata2.core.ep.AbstractProviderTest;
 import org.apache.olingo.odata2.core.ep.AtomEntityProvider;
@@ -75,6 +76,250 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
   }
 
   @Test
+  public void contentOnly() throws Exception {
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).contentOnly(true).build();
+
+    AtomEntityProvider ser = createAtomEntityProvider();
+    ODataResponse response =
+        ser.writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees"), employeeData,
+            properties);
+    String xmlString = verifyResponse(response);
+    assertXpathExists("/a:entry", xmlString);
+    assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
+
+    assertXpathNotExists("/a:entry/a:id", xmlString);
+    assertXpathNotExists("/a:entry/a:title", xmlString);
+    assertXpathNotExists("/a:entry/a:updated", xmlString);
+    assertXpathNotExists("/a:entry/a:category", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Team\"and @href=\"Employees('1')/ne_Team\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Room\"and @href=\"Employees('1')/ne_Room\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Manager\" and @href=\"Employees('1')/ne_Manager\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:content", xmlString);
+
+    assertXpathExists("/a:entry/m:properties", xmlString);
+  }
+
+  @Test
+  public void contentOnlyRoom() throws Exception {
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+    List<String> selectedPropertyNames = new ArrayList<String>();
+    selectedPropertyNames.add("Name");
+    ExpandSelectTreeNode expandSelectTree =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedPropertyNames).build();
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).contentOnly(true).expandSelectTree(expandSelectTree)
+            .build();
+
+    Map<String, Object> localRoomData = new HashMap<String, Object>();
+    localRoomData.put("Name", "Neu Schwanstein");
+
+    AtomEntityProvider ser = createAtomEntityProvider();
+    ODataResponse response = ser.writeEntry(entitySet, localRoomData, properties);
+    String xmlString = verifyResponse(response);
+    assertXpathExists("/a:entry", xmlString);
+    assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
+
+    assertXpathNotExists("/a:entry/a:id", xmlString);
+    assertXpathNotExists("/a:entry/a:title", xmlString);
+    assertXpathNotExists("/a:entry/a:updated", xmlString);
+    assertXpathNotExists("/a:entry/a:category", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"nr_Employees\"and @href=\"Rooms('1')/nr_Employees\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"nr_Building\"and @href=\"Rooms('1')/nr_Building\"]", xmlString);
+
+    assertXpathExists("/a:entry/a:content/m:properties/d:Name", xmlString);
+  }
+
+  @Test
+  public void contentOnlyRoomSelectedOrExpandedLinksMustBeIgnored() throws Exception {
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+    List<String> selectedPropertyNames = new ArrayList<String>();
+    selectedPropertyNames.add("Name");
+    List<String> navigationPropertyNames = new ArrayList<String>();
+    navigationPropertyNames.add("nr_Employees");
+    navigationPropertyNames.add("nr_Building");
+    ExpandSelectTreeNode expandSelectTree =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedPropertyNames).expandedLinks(
+            navigationPropertyNames).build();
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).contentOnly(true).expandSelectTree(expandSelectTree)
+            .build();
+
+    Map<String, Object> localRoomData = new HashMap<String, Object>();
+    localRoomData.put("Name", "Neu Schwanstein");
+
+    AtomEntityProvider ser = createAtomEntityProvider();
+    ODataResponse response = ser.writeEntry(entitySet, localRoomData, properties);
+    String xmlString = verifyResponse(response);
+    assertXpathExists("/a:entry", xmlString);
+    assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
+
+    assertXpathNotExists("/a:entry/a:id", xmlString);
+    assertXpathNotExists("/a:entry/a:title", xmlString);
+    assertXpathNotExists("/a:entry/a:updated", xmlString);
+    assertXpathNotExists("/a:entry/a:category", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"nr_Employees\"and @href=\"Rooms('1')/nr_Employees\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"nr_Building\"and @href=\"Rooms('1')/nr_Building\"]", xmlString);
+
+    assertXpathExists("/a:entry/a:content/m:properties/d:Name", xmlString);
+  }
+
+  @Test
+  public void contentOnlyRoomWithAdditionalLink() throws Exception {
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+    List<String> selectedPropertyNames = new ArrayList<String>();
+    selectedPropertyNames.add("Name");
+    ExpandSelectTreeNode expandSelectTree =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedPropertyNames).build();
+    Map<String, Map<String, Object>> additinalLinks = new HashMap<String, Map<String, Object>>();
+    Map<String, Object> buildingLink = new HashMap<String, Object>();
+    buildingLink.put("Id", "1");
+    additinalLinks.put("nr_Building", buildingLink);
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).contentOnly(true).expandSelectTree(expandSelectTree)
+            .additionalLinks(additinalLinks).build();
+
+    Map<String, Object> localRoomData = new HashMap<String, Object>();
+    localRoomData.put("Name", "Neu Schwanstein");
+
+    AtomEntityProvider ser = createAtomEntityProvider();
+    ODataResponse response = ser.writeEntry(entitySet, localRoomData, properties);
+    String xmlString = verifyResponse(response);
+    assertXpathExists("/a:entry", xmlString);
+    assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
+
+    assertXpathNotExists("/a:entry/a:id", xmlString);
+    assertXpathNotExists("/a:entry/a:title", xmlString);
+    assertXpathNotExists("/a:entry/a:updated", xmlString);
+    assertXpathNotExists("/a:entry/a:category", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"nr_Employees\"and @href=\"Rooms('1')/nr_Employees\"]", xmlString);
+
+    assertXpathExists("/a:entry/a:content/m:properties/d:Name", xmlString);
+    assertXpathExists("/a:entry/a:link[@title=\"nr_Building\"and @href=\"Buildings('1')\"]", xmlString);
+  }
+
+  @Test
+  public void contentOnlyWithoutKey() throws Exception {
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    List<String> selectedPropertyNames = new ArrayList<String>();
+    selectedPropertyNames.add("ManagerId");
+    ExpandSelectTreeNode select =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedPropertyNames).build();
+
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).contentOnly(true).expandSelectTree(select).build();
+
+    Map<String, Object> localEmployeeData = new HashMap<String, Object>();
+    localEmployeeData.put("ManagerId", "1");
+
+    AtomEntityProvider ser = createAtomEntityProvider();
+    ODataResponse response =
+        ser.writeEntry(entitySet, localEmployeeData,
+            properties);
+    String xmlString = verifyResponse(response);
+    assertXpathExists("/a:entry", xmlString);
+    assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
+
+    assertXpathNotExists("/a:entry/a:id", xmlString);
+    assertXpathNotExists("/a:entry/a:title", xmlString);
+    assertXpathNotExists("/a:entry/a:updated", xmlString);
+    assertXpathNotExists("/a:entry/a:category", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Manager\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Team\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Room\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:content", xmlString);
+
+    assertXpathExists("/a:entry/m:properties", xmlString);
+    assertXpathNotExists("/a:entry/m:properties/d:EmployeeId", xmlString);
+    assertXpathExists("/a:entry/m:properties/d:ManagerId", xmlString);
+  }
+
+  @Test
+  public void contentOnlySelectedOrExpandedLinksMustBeIgnored() throws Exception {
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    List<String> selectedPropertyNames = new ArrayList<String>();
+    selectedPropertyNames.add("ManagerId");
+
+    List<String> expandedNavigationNames = new ArrayList<String>();
+    expandedNavigationNames.add("ne_Manager");
+    expandedNavigationNames.add("ne_Team");
+    expandedNavigationNames.add("ne_Room");
+
+    ExpandSelectTreeNode select =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedPropertyNames).expandedLinks(
+            expandedNavigationNames).build();
+
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).contentOnly(true).expandSelectTree(select).build();
+
+    Map<String, Object> localEmployeeData = new HashMap<String, Object>();
+    localEmployeeData.put("ManagerId", "1");
+
+    AtomEntityProvider ser = createAtomEntityProvider();
+    ODataResponse response =
+        ser.writeEntry(entitySet, localEmployeeData,
+            properties);
+    String xmlString = verifyResponse(response);
+    assertXpathExists("/a:entry", xmlString);
+    assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
+
+    assertXpathNotExists("/a:entry/a:id", xmlString);
+    assertXpathNotExists("/a:entry/a:title", xmlString);
+    assertXpathNotExists("/a:entry/a:updated", xmlString);
+    assertXpathNotExists("/a:entry/a:category", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Manager\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Team\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Room\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:content", xmlString);
+
+    assertXpathExists("/a:entry/m:properties", xmlString);
+    assertXpathNotExists("/a:entry/m:properties/d:EmployeeId", xmlString);
+    assertXpathExists("/a:entry/m:properties/d:ManagerId", xmlString);
+  }
+
+  @Test
+  public void contentOnlyWithAdditinalLink() throws Exception {
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    List<String> selectedPropertyNames = new ArrayList<String>();
+    selectedPropertyNames.add("ManagerId");
+    ExpandSelectTreeNode select =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedPropertyNames).build();
+
+    Map<String, Map<String, Object>> additinalLinks = new HashMap<String, Map<String, Object>>();
+    Map<String, Object> managerLink = new HashMap<String, Object>();
+    managerLink.put("EmployeeId", "1");
+    additinalLinks.put("ne_Manager", managerLink);
+    final EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).contentOnly(true).expandSelectTree(select).additionalLinks(
+            additinalLinks).build();
+
+    Map<String, Object> localEmployeeData = new HashMap<String, Object>();
+    localEmployeeData.put("ManagerId", "1");
+
+    AtomEntityProvider ser = createAtomEntityProvider();
+    ODataResponse response =
+        ser.writeEntry(entitySet, localEmployeeData,
+            properties);
+    String xmlString = verifyResponse(response);
+    assertXpathExists("/a:entry", xmlString);
+    assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
+
+    assertXpathNotExists("/a:entry/a:id", xmlString);
+    assertXpathNotExists("/a:entry/a:title", xmlString);
+    assertXpathNotExists("/a:entry/a:updated", xmlString);
+    assertXpathNotExists("/a:entry/a:category", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Team\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:link[@title=\"ne_Room\"]", xmlString);
+    assertXpathNotExists("/a:entry/a:content", xmlString);
+
+    assertXpathExists("/a:entry/m:properties", xmlString);
+    assertXpathNotExists("/a:entry/m:properties/d:EmployeeId", xmlString);
+    assertXpathExists("/a:entry/m:properties/d:ManagerId", xmlString);
+
+    assertXpathExists("/a:entry/a:link[@href=\"Managers('1')\" and @title=\"ne_Manager\"]", xmlString);
+  }
+
+  @Test
   public void noneSyndicationKeepInContentFalseMustNotShowInProperties() throws Exception {
     // prepare Mock
     EdmEntitySet employeesSet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f14dfd46/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
index 942edf5..7040e2a 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
@@ -87,6 +87,145 @@ public class JsonEntryEntityProducerTest extends BaseTest {
         json);
   }
 
+  @SuppressWarnings("unchecked")
+  @Test
+  public void contentOnly() throws Exception {
+    HashMap<String, Object> employeeData = new HashMap<String, Object>();
+    Calendar date = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
+    date.clear();
+    date.set(1999, 0, 1);
+    employeeData.put("EmployeeId", "1");
+    employeeData.put("ImmageUrl", null);
+    employeeData.put("ManagerId", "1");
+    employeeData.put("Age", new Integer(52));
+    employeeData.put("RoomId", "1");
+    employeeData.put("EntryDate", date);
+    employeeData.put("TeamId", "42");
+    employeeData.put("EmployeeName", "Walter Winter");
+    Map<String, Object> locationData = new HashMap<String, Object>();
+    Map<String, Object> cityData = new HashMap<String, Object>();
+    cityData.put("PostalCode", "33470");
+    cityData.put("CityName", "Duckburg");
+    locationData.put("City", cityData);
+    locationData.put("Country", "Calisota");
+    employeeData.put("Location", locationData);
+
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).contentOnly(true)
+            .build();
+    final ODataResponse response = new JsonEntityProvider().writeEntry(entitySet, employeeData, properties);
+    Map<String, Object> employee =
+        (Map<String, Object>) new Gson().fromJson(new InputStreamReader((InputStream) response.getEntity()), Map.class);
+    assertNull(employee.get("__metadata"));
+    assertNull(employee.get("ne_Manager"));
+    assertNull(employee.get("ne_Team"));
+    assertNull(employee.get("ne_Room"));
+  }
+
+  @SuppressWarnings("unchecked")
+  @Test
+  public void contentOnlyWithoutKey() throws Exception {
+    HashMap<String, Object> employeeData = new HashMap<String, Object>();
+    employeeData.put("ManagerId", "1");
+    employeeData.put("Age", new Integer(52));
+    employeeData.put("RoomId", "1");
+    employeeData.put("TeamId", "42");
+
+    List<String> selectedProperties = new ArrayList<String>();
+    selectedProperties.add("ManagerId");
+    selectedProperties.add("Age");
+    selectedProperties.add("RoomId");
+    selectedProperties.add("TeamId");
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+
+    ExpandSelectTreeNode expandSelectTreeNode =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedProperties).build();
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).contentOnly(true)
+            .expandSelectTree(expandSelectTreeNode).build();
+    final ODataResponse response = new JsonEntityProvider().writeEntry(entitySet, employeeData, properties);
+    Map<String, Object> employee =
+        (Map<String, Object>) new Gson().fromJson(new InputStreamReader((InputStream) response.getEntity()), Map.class);
+    assertNull(employee.get("__metadata"));
+    assertNull(employee.get("ne_Manager"));
+    assertNull(employee.get("ne_Team"));
+    assertNull(employee.get("ne_Room"));
+
+    assertEquals("1", employee.get("ManagerId"));
+    assertEquals("1", employee.get("RoomId"));
+    assertEquals("42", employee.get("TeamId"));
+    assertEquals(new Double(52), employee.get("Age"));
+  }
+
+  @SuppressWarnings("unchecked")
+  @Test
+  public void contentOnlySelectedOrExpandedLinksMustBeIgnored() throws Exception {
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+
+    HashMap<String, Object> employeeData = new HashMap<String, Object>();
+    employeeData.put("ManagerId", "1");
+
+    List<String> selectedProperties = new ArrayList<String>();
+    selectedProperties.add("ManagerId");
+
+    List<String> expandedLinks = new ArrayList<String>();
+    expandedLinks.add("ne_Manager");
+    expandedLinks.add("ne_Team");
+    expandedLinks.add("ne_Room");
+
+    ExpandSelectTreeNode expandSelectTreeNode =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedProperties).expandedLinks(expandedLinks)
+            .build();
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).contentOnly(true)
+            .expandSelectTree(expandSelectTreeNode).build();
+    final ODataResponse response = new JsonEntityProvider().writeEntry(entitySet, employeeData, properties);
+    Map<String, Object> employee =
+        (Map<String, Object>) new Gson().fromJson(new InputStreamReader((InputStream) response.getEntity()), Map.class);
+    assertNull(employee.get("__metadata"));
+    assertNull(employee.get("ne_Manager"));
+    assertNull(employee.get("ne_Team"));
+    assertNull(employee.get("ne_Room"));
+
+    assertEquals("1", employee.get("ManagerId"));
+  }
+
+  @SuppressWarnings("unchecked")
+  @Test
+  public void contentOnlyWithAdditinalLink() throws Exception {
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    HashMap<String, Object> employeeData = new HashMap<String, Object>();
+    employeeData.put("ManagerId", "1");
+
+    List<String> selectedProperties = new ArrayList<String>();
+    selectedProperties.add("ManagerId");
+
+    ExpandSelectTreeNode expandSelectTreeNode =
+        ExpandSelectTreeNode.entitySet(entitySet).selectedProperties(selectedProperties).build();
+
+    Map<String, Map<String, Object>> additinalLinks = new HashMap<String, Map<String, Object>>();
+    Map<String, Object> managerLink = new HashMap<String, Object>();
+    managerLink.put("EmployeeId", "1");
+    additinalLinks.put("ne_Manager", managerLink);
+
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).contentOnly(true)
+            .expandSelectTree(expandSelectTreeNode).additionalLinks(additinalLinks).build();
+    final ODataResponse response = new JsonEntityProvider().writeEntry(entitySet, employeeData, properties);
+   //System.out.println(StringHelper.inputStreamToString((InputStream) response.getEntity()));
+    Map<String, Object> employee =
+        (Map<String, Object>) new Gson().fromJson(new InputStreamReader((InputStream) response.getEntity()), Map.class);
+    assertNull(employee.get("__metadata"));
+    assertNull(employee.get("ne_Team"));
+    assertNull(employee.get("ne_Room"));
+
+    assertEquals("1", employee.get("ManagerId"));
+    Map<String, Object> map = (Map<String, Object>) employee.get("ne_Manager");
+    map = (Map<String, Object>) map.get("__deferred");
+    assertEquals("http://host:80/service/Managers('1')", map.get("uri"));
+  }
+
   @Test
   public void omitJsonWrapper() throws Exception {
     final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Teams");


[42/50] [abbrv] git commit: [OLINGO-394] Made test stable for different environments

Posted by mi...@apache.org.
[OLINGO-394] Made test stable for different environments


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/d9e90388
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/d9e90388
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/d9e90388

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: d9e90388f27c3b673bbc511aa4315f154ba18f11
Parents: 6fd6f06
Author: Michael Bolz <mi...@apache.org>
Authored: Wed Aug 6 09:05:56 2014 +0200
Committer: Michael Bolz <mi...@apache.org>
Committed: Wed Aug 6 09:05:56 2014 +0200

----------------------------------------------------------------------
 .../odata2/core/batch/BatchResponseParserTest.java |  3 ++-
 .../odata2/testutil/helper/StringHelper.java       | 17 +++++++++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/d9e90388/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
index 23e4cf3..f7e4602 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
@@ -31,6 +31,7 @@ import org.apache.olingo.odata2.api.client.batch.BatchSingleResponse;
 import org.apache.olingo.odata2.api.commons.HttpContentType;
 import org.apache.olingo.odata2.api.commons.HttpHeaders;
 import org.apache.olingo.odata2.api.ep.EntityProvider;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
 import org.junit.Test;
 
 public class BatchResponseParserTest {
@@ -74,7 +75,7 @@ public class BatchResponseParserTest {
       throw new IOException("Requested file '" + fileName + "' was not found.");
     }
     BatchResponseParser parser = new BatchResponseParser("multipart/mixed;boundary=batch_123");
-    List<BatchSingleResponse> responses = parser.parse(in);
+    List<BatchSingleResponse> responses = parser.parse(StringHelper.toStream(in).asStreamWithLineSeparation("\r\n"));
     for (BatchSingleResponse response : responses) {
       if ("1".equals(response.getContentId())) {
         assertEquals("204", response.getStatusCode());

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/d9e90388/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/helper/StringHelper.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/helper/StringHelper.java b/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/helper/StringHelper.java
index 2ef1c6c..f47bde6 100644
--- a/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/helper/StringHelper.java
+++ b/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/helper/StringHelper.java
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
+import java.io.StringReader;
 import java.io.UnsupportedEncodingException;
 import java.nio.charset.Charset;
 import java.util.Random;
@@ -72,6 +73,22 @@ public class StringHelper {
       return print(System.out);
     }
 
+    public String asStringWithLineSeparation(String separator) throws IOException {
+      BufferedReader br = new BufferedReader(new StringReader(asString()));
+      StringBuilder sb = new StringBuilder(br.readLine());
+      String line = br.readLine();
+      while(line != null) {
+        sb.append(separator).append(line);
+        line = br.readLine();
+      }
+      return sb.toString();
+    }
+
+    public InputStream asStreamWithLineSeparation(String separator) throws IOException {
+      String asString = asStringWithLineSeparation(separator);
+      return new ByteArrayInputStream(asString.getBytes("UTF-8"));
+    }
+
     /**
      * Number of lines separated by line breaks (<code>CRLF</code>).
      * A content string like <code>text\r\nmoreText</code> will result in


[24/50] [abbrv] git commit: [OLINGO-333] Fix FunctionImport ReturnType bug

Posted by mi...@apache.org.
[OLINGO-333] Fix FunctionImport ReturnType bug


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/84a47f92
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/84a47f92
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/84a47f92

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 84a47f92b77f7693295df4a0eeb9778bd10c438a
Parents: 418c631
Author: Christian Amend <ch...@apache.org>
Authored: Tue Jul 1 10:37:47 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Tue Jul 1 10:38:26 2014 +0200

----------------------------------------------------------------------
 .../core/edm/provider/EdmFunctionImportImplProv.java     | 11 +++++++++--
 .../core/edm/provider/EdmFunctionImportImplProvTest.java |  6 +++++-
 2 files changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/84a47f92/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmFunctionImportImplProv.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmFunctionImportImplProv.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmFunctionImportImplProv.java
index 43997aa..76346dc 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmFunctionImportImplProv.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmFunctionImportImplProv.java
@@ -49,6 +49,7 @@ public class EdmFunctionImportImplProv extends EdmNamedImplProv implements EdmFu
   private Map<String, FunctionImportParameter> parameters;
   private List<String> parametersList;
   private EdmAnnotations annotations;
+  private EdmTyped edmReturnType;
 
   public EdmFunctionImportImplProv(final EdmImplProv edm, final FunctionImport functionImport,
       final EdmEntityContainer edmEntityContainer) throws EdmException {
@@ -123,8 +124,14 @@ public class EdmFunctionImportImplProv extends EdmNamedImplProv implements EdmFu
 
   @Override
   public EdmTyped getReturnType() throws EdmException {
-    final ReturnType returnType = functionImport.getReturnType();
-    return new EdmTypedImplProv(edm, functionImport.getName(), returnType.getTypeName(), returnType.getMultiplicity());
+    if (edmReturnType == null) {
+      final ReturnType returnType = functionImport.getReturnType();
+      if (returnType != null) {
+        edmReturnType =
+            new EdmTypedImplProv(edm, functionImport.getName(), returnType.getTypeName(), returnType.getMultiplicity());
+      }
+    }
+    return edmReturnType;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/84a47f92/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmFunctionImportImplProvTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmFunctionImportImplProvTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmFunctionImportImplProvTest.java
index 69e1b11..84cab5e 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmFunctionImportImplProvTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmFunctionImportImplProvTest.java
@@ -91,7 +91,6 @@ public class EdmFunctionImportImplProvTest extends BaseTest {
     when(edmProvider.getFunctionImport("Container", "bar")).thenReturn(functionImportBar);
     edmFunctionImportWithoutParameters =
         new EdmFunctionImportImplProv(edmImplProv, functionImportBar, edmEntityContainer);
-
   }
 
   @Test
@@ -160,6 +159,11 @@ public class EdmFunctionImportImplProvTest extends BaseTest {
   }
 
   @Test
+  public void nulllReturnType() throws Exception {
+    assertNull(edmFunctionImportWithoutParameters.getReturnType());
+  }
+
+  @Test
   public void parameterAnnotations() throws Exception {
     EdmParameter parameter = edmFunctionImport.getParameter("fooParameter1");
     assertNotNull(parameter);


[39/50] [abbrv] git commit: [OLINGO-376] Fetch 0 records when $top is 0.

Posted by mi...@apache.org.
[OLINGO-376] Fetch 0 records when $top is 0.


Signed-off-by: Chandan V A <ch...@sap.com>

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/3b3987bc
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/3b3987bc
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/3b3987bc

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 3b3987bc216d14c78055baa6a460948eb198b041
Parents: 44604c7
Author: Chandan V A <ch...@sap.com>
Authored: Mon Aug 4 19:08:08 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Mon Aug 4 19:08:08 2014 +0530

----------------------------------------------------------------------
 .../jpa/processor/core/access/data/JPAProcessorImpl.java       | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3b3987bc/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
index fdef108..e7f041b 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
@@ -28,6 +28,7 @@ import java.util.Map;
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
 
+import org.apache.olingo.odata2.api.commons.InlineCount;
 import org.apache.olingo.odata2.api.edm.EdmEntitySet;
 import org.apache.olingo.odata2.api.edm.EdmEntityType;
 import org.apache.olingo.odata2.api.edm.EdmException;
@@ -129,6 +130,11 @@ public class JPAProcessorImpl implements JPAProcessor {
     if (uriParserResultView.getFunctionImport() != null) {
       return (List<Object>) process((GetFunctionImportUriInfo) uriParserResultView);
     }
+    InlineCount inlineCount = uriParserResultView.getInlineCount();
+    Integer top = uriParserResultView.getTop();
+    if (top != null && top.intValue() == 0 && inlineCount != null && inlineCount.equals(InlineCount.ALLPAGES)) {
+      return new ArrayList<Object>();
+    }
     JPQLContextType contextType = null;
     try {
       if (!uriParserResultView.getStartEntitySet().getName()


[28/50] [abbrv] git commit: [OLINGO-336] Set 2.0.0-SNAPSHOT version

Posted by mi...@apache.org.
[OLINGO-336] Set 2.0.0-SNAPSHOT version


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/cff5ed84
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/cff5ed84
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/cff5ed84

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: cff5ed842425a63d9eff207efe154d31287f58a8
Parents: 6a86662
Author: Christian Amend <ch...@apache.org>
Authored: Wed Jul 2 10:08:09 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Wed Jul 2 10:08:09 2014 +0200

----------------------------------------------------------------------
 odata2-annotation-processor/annotation-processor-api/pom.xml     | 2 +-
 odata2-annotation-processor/annotation-processor-core/pom.xml    | 2 +-
 odata2-annotation-processor/annotation-processor-ref/pom.xml     | 2 +-
 odata2-annotation-processor/annotation-processor-web/pom.xml     | 2 +-
 odata2-annotation-processor/pom.xml                              | 2 +-
 odata2-dist/janos/pom.xml                                        | 2 +-
 odata2-dist/javadoc/pom.xml                                      | 2 +-
 odata2-dist/jpa/pom.xml                                          | 2 +-
 odata2-dist/lib/pom.xml                                          | 2 +-
 odata2-dist/pom.xml                                              | 2 +-
 odata2-dist/ref/pom.xml                                          | 2 +-
 odata2-jpa-processor/jpa-api/pom.xml                             | 2 +-
 odata2-jpa-processor/jpa-core/pom.xml                            | 2 +-
 odata2-jpa-processor/jpa-ref/pom.xml                             | 2 +-
 odata2-jpa-processor/jpa-web/pom.xml                             | 2 +-
 odata2-jpa-processor/pom.xml                                     | 2 +-
 odata2-lib/odata-annotation/pom.xml                              | 2 +-
 odata2-lib/odata-api/pom.xml                                     | 2 +-
 odata2-lib/odata-core/pom.xml                                    | 2 +-
 odata2-lib/odata-fit/pom.xml                                     | 2 +-
 odata2-lib/odata-ref/pom.xml                                     | 2 +-
 odata2-lib/odata-testutil/pom.xml                                | 2 +-
 odata2-lib/odata-web/pom.xml                                     | 2 +-
 odata2-lib/pom.xml                                               | 2 +-
 odata2-sample/cars-annotation-archetype/pom.xml                  | 4 ++--
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/cars-jpa-archetype/pom.xml                         | 2 +-
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/cars-service-archetype/pom.xml                     | 4 ++--
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/pom.xml                                            | 2 +-
 pom.xml                                                          | 2 +-
 32 files changed, 34 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-annotation-processor/annotation-processor-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-api/pom.xml b/odata2-annotation-processor/annotation-processor-api/pom.xml
index b0c3bdb..dd8834f 100644
--- a/odata2-annotation-processor/annotation-processor-api/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-api/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-annotation-processor/annotation-processor-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/pom.xml b/odata2-annotation-processor/annotation-processor-core/pom.xml
index c91fba4..701eb29 100644
--- a/odata2-annotation-processor/annotation-processor-core/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-annotation-processor/annotation-processor-ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-ref/pom.xml b/odata2-annotation-processor/annotation-processor-ref/pom.xml
index c014d2e..fff81a0 100644
--- a/odata2-annotation-processor/annotation-processor-ref/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-ref/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-annotation-processor/annotation-processor-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-web/pom.xml b/odata2-annotation-processor/annotation-processor-web/pom.xml
index 64e5742..5551fce 100644
--- a/odata2-annotation-processor/annotation-processor-web/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-web/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-annotation-processor/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/pom.xml b/odata2-annotation-processor/pom.xml
index 4df2244..2933c2f 100644
--- a/odata2-annotation-processor/pom.xml
+++ b/odata2-annotation-processor/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-dist/janos/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/janos/pom.xml b/odata2-dist/janos/pom.xml
index 441358a..9e4983b 100644
--- a/odata2-dist/janos/pom.xml
+++ b/odata2-dist/janos/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-dist/javadoc/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/javadoc/pom.xml b/odata2-dist/javadoc/pom.xml
index 081d3f2..c7d5900 100644
--- a/odata2-dist/javadoc/pom.xml
+++ b/odata2-dist/javadoc/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-dist/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/jpa/pom.xml b/odata2-dist/jpa/pom.xml
index ea4b142..089b4dd 100644
--- a/odata2-dist/jpa/pom.xml
+++ b/odata2-dist/jpa/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-dist/lib/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/lib/pom.xml b/odata2-dist/lib/pom.xml
index 937f1ed..4614208 100644
--- a/odata2-dist/lib/pom.xml
+++ b/odata2-dist/lib/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-dist/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/pom.xml b/odata2-dist/pom.xml
index 4c69edf..e550aa2 100644
--- a/odata2-dist/pom.xml
+++ b/odata2-dist/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-dist/ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/ref/pom.xml b/odata2-dist/ref/pom.xml
index 674c4b1..81a25d1 100644
--- a/odata2-dist/ref/pom.xml
+++ b/odata2-dist/ref/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-jpa-processor/jpa-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/pom.xml b/odata2-jpa-processor/jpa-api/pom.xml
index 69b80d6..e47e8fa 100644
--- a/odata2-jpa-processor/jpa-api/pom.xml
+++ b/odata2-jpa-processor/jpa-api/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>2.0.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-jpa-processor/jpa-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/pom.xml b/odata2-jpa-processor/jpa-core/pom.xml
index 08f3be0..fe763df 100644
--- a/odata2-jpa-processor/jpa-core/pom.xml
+++ b/odata2-jpa-processor/jpa-core/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>2.0.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/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 1a8e8aa..c79c3ba 100644
--- a/odata2-jpa-processor/jpa-ref/pom.xml
+++ b/odata2-jpa-processor/jpa-ref/pom.xml
@@ -17,7 +17,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>2.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-jpa-processor/jpa-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/pom.xml b/odata2-jpa-processor/jpa-web/pom.xml
index b84f06f..a812857 100644
--- a/odata2-jpa-processor/jpa-web/pom.xml
+++ b/odata2-jpa-processor/jpa-web/pom.xml
@@ -21,7 +21,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>2.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-jpa-processor/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/pom.xml b/odata2-jpa-processor/pom.xml
index e422512..2e1a83a 100644
--- a/odata2-jpa-processor/pom.xml
+++ b/odata2-jpa-processor/pom.xml
@@ -18,7 +18,7 @@
     <parent>
       <groupId>org.apache.olingo</groupId>
       <artifactId>olingo-odata2-parent</artifactId>
-      <version>1.3.0-SNAPSHOT</version>
+      <version>2.0.0-SNAPSHOT</version>
       <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-lib/odata-annotation/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-annotation/pom.xml b/odata2-lib/odata-annotation/pom.xml
index 53795bd..26ba8fc 100644
--- a/odata2-lib/odata-annotation/pom.xml
+++ b/odata2-lib/odata-annotation/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-lib</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-lib/odata-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/pom.xml b/odata2-lib/odata-api/pom.xml
index 53e2d58..390180b 100644
--- a/odata2-lib/odata-api/pom.xml
+++ b/odata2-lib/odata-api/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-lib/odata-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/pom.xml b/odata2-lib/odata-core/pom.xml
index 44c9232..defa7e9 100644
--- a/odata2-lib/odata-core/pom.xml
+++ b/odata2-lib/odata-core/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>2.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-lib/odata-fit/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/pom.xml b/odata2-lib/odata-fit/pom.xml
index 301d180..b202c50 100644
--- a/odata2-lib/odata-fit/pom.xml
+++ b/odata2-lib/odata-fit/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>2.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-lib/odata-ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-ref/pom.xml b/odata2-lib/odata-ref/pom.xml
index 84a49d5..8d7b3aa 100644
--- a/odata2-lib/odata-ref/pom.xml
+++ b/odata2-lib/odata-ref/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>1.3.0-SNAPSHOT</version>
+		<version>2.0.0-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-lib/odata-testutil/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-testutil/pom.xml b/odata2-lib/odata-testutil/pom.xml
index 49738a1..9365d2c 100644
--- a/odata2-lib/odata-testutil/pom.xml
+++ b/odata2-lib/odata-testutil/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-lib</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-lib/odata-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-web/pom.xml b/odata2-lib/odata-web/pom.xml
index 0f6e5e7..5127c79 100644
--- a/odata2-lib/odata-web/pom.xml
+++ b/odata2-lib/odata-web/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-lib</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-lib/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/pom.xml b/odata2-lib/pom.xml
index 933db60..4d6aff5 100644
--- a/odata2-lib/pom.xml
+++ b/odata2-lib/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-sample/cars-annotation-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/pom.xml b/odata2-sample/cars-annotation-archetype/pom.xml
index d565f61..7c429b2 100644
--- a/odata2-sample/cars-annotation-archetype/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/pom.xml
@@ -16,13 +16,13 @@
   <groupId>org.apache.olingo</groupId>
   <artifactId>olingo-odata2-sample-cars-annotation-archetype</artifactId>
   <name>${project.artifactId}</name>
-  <version>1.3.0-SNAPSHOT</version>
+  <version>2.0.0-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-sample</artifactId>
-    <version>1.3.0-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
index 73e58d6..c5e3588 100644
--- a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
@@ -32,7 +32,7 @@
     <version.servlet-api>2.5</version.servlet-api>
     <version.jaxrs-api>2.0-m10</version.jaxrs-api>
     <version.slf4j>1.7.1</version.slf4j>
-    <version.olingo>1.3.0-SNAPSHOT</version.olingo>
+    <version.olingo>2.0.0-SNAPSHOT</version.olingo>
   </properties>
 
   <build>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-sample/cars-jpa-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/pom.xml b/odata2-sample/cars-jpa-archetype/pom.xml
index 6089703..dd67068 100644
--- a/odata2-sample/cars-jpa-archetype/pom.xml
+++ b/odata2-sample/cars-jpa-archetype/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-sample</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 	

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
index 39628c0..2ae2859 100644
--- a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
@@ -20,7 +20,7 @@
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<version.cxf>2.7.6</version.cxf>
-		<version.olingo>1.3.0-SNAPSHOT</version.olingo>
+		<version.olingo>2.0.0-SNAPSHOT</version.olingo>
 		<version.eclipselink>2.5.1</version.eclipselink>
 		<version.javax.persistence>2.0.5</version.javax.persistence>
 	</properties>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-sample/cars-service-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/pom.xml b/odata2-sample/cars-service-archetype/pom.xml
index e6f434e..1ec115e 100644
--- a/odata2-sample/cars-service-archetype/pom.xml
+++ b/odata2-sample/cars-service-archetype/pom.xml
@@ -24,14 +24,14 @@
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-sample-cars-service-archetype</artifactId>
     <name>${project.artifactId}</name>
-    <version>1.3.0-SNAPSHOT</version>
+    <version>2.0.0-SNAPSHOT</version>
 
     <packaging>maven-archetype</packaging>
 
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-sample</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
+        <version>2.0.0-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
index 83e7237..cac867c 100644
--- a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
@@ -20,7 +20,7 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<version.cxf>2.7.6</version.cxf>
 		<version.slf4j>1.7.1</version.slf4j>
-		<version.olingo>1.3.0-SNAPSHOT</version.olingo>
+		<version.olingo>2.0.0-SNAPSHOT</version.olingo>
 	</properties>
 
 	<build>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/odata2-sample/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/pom.xml b/odata2-sample/pom.xml
index ce867ab..427a6ec 100644
--- a/odata2-sample/pom.xml
+++ b/odata2-sample/pom.xml
@@ -15,7 +15,7 @@
     <parent>
       <groupId>org.apache.olingo</groupId>
       <artifactId>olingo-odata2-parent</artifactId>
-      <version>1.3.0-SNAPSHOT</version>
+      <version>2.0.0-SNAPSHOT</version>
       <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/cff5ed84/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2548a84..d657773 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
 
 	<groupId>org.apache.olingo</groupId>
 	<artifactId>olingo-odata2-parent</artifactId>
-	<version>1.3.0-SNAPSHOT</version>
+	<version>2.0.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 
 	<name>${project.artifactId}</name>


[02/50] [abbrv] git commit: [OLINGO-298] Fixed response status and removed NotAllowedException

Posted by mi...@apache.org.
[OLINGO-298] Fixed response status and removed NotAllowedException


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/7d71cee8
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/7d71cee8
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/7d71cee8

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 7d71cee8f7f8509e624db8aaa7788d3078f12a1c
Parents: d7c6824
Author: Michael Bolz <mi...@apache.org>
Authored: Mon Jun 2 11:10:34 2014 +0200
Committer: Michael Bolz <mi...@apache.org>
Committed: Mon Jun 2 11:18:51 2014 +0200

----------------------------------------------------------------------
 .../odata2/core/rest/ODataExceptionMapperImpl.java     | 13 +++++--------
 .../olingo/odata2/core/servlet/ODataServlet.java       |  7 ++++---
 .../odata2/core/rest/ODataExceptionMapperImplTest.java |  4 ++--
 .../apache/olingo/odata2/fit/basic/BasicHttpTest.java  |  4 ++--
 .../apache/olingo/odata2/fit/basic/UrlRewriteTest.java |  2 +-
 5 files changed, 14 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7d71cee8/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataExceptionMapperImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataExceptionMapperImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataExceptionMapperImpl.java
index 5f7d059..b5dd749 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataExceptionMapperImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataExceptionMapperImpl.java
@@ -25,7 +25,6 @@ import java.util.Set;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.NotAllowedException;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Context;
@@ -93,8 +92,7 @@ public class ODataExceptionMapperImpl implements ExceptionMapper<Exception> {
 
     ODataExceptionWrapper exceptionWrapper =
         new ODataExceptionWrapper(uriInfo, httpHeaders, getErrorHandlerCallback());
-    ODataResponse oDataResponse = exceptionWrapper.wrapInExceptionResponse(exception);
-    return oDataResponse;
+    return exceptionWrapper.wrapInExceptionResponse(exception);
   }
 
   private ODataResponse handleWebApplicationException(final Exception exception) throws ClassNotFoundException,
@@ -132,8 +130,9 @@ public class ODataExceptionMapperImpl implements ExceptionMapper<Exception> {
     context.setErrorCode(null);
     context.setMessage(exception.getMessage());
     context.setLocale(DEFAULT_RESPONSE_LOCALE);
-    context.setHttpStatus(HttpStatusCodes.fromStatusCode(exception.getResponse().getStatus()));
-    if (exception instanceof NotAllowedException) {
+    HttpStatusCodes statusCode = HttpStatusCodes.fromStatusCode(exception.getResponse().getStatus());
+    context.setHttpStatus(statusCode);
+    if (statusCode == HttpStatusCodes.METHOD_NOT_ALLOWED) {
       // RFC 2616, 5.1.1: " An origin server SHOULD return the status code
       // 405 (Method Not Allowed) if the method is known by the origin server
       // but not allowed for the requested resource, and 501 (Not Implemented)
@@ -194,10 +193,8 @@ public class ODataExceptionMapperImpl implements ExceptionMapper<Exception> {
   }
 
   private ODataErrorCallback getErrorHandlerCallback() {
-    ODataErrorCallback callback = null;
     final ODataServiceFactory serviceFactory =
         ODataRootLocator.createServiceFactoryFromContext(app, servletRequest, servletConfig);
-    callback = serviceFactory.getCallback(ODataErrorCallback.class);
-    return callback;
+    return serviceFactory.getCallback(ODataErrorCallback.class);
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7d71cee8/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
index dbe2935..ef5be4f 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
@@ -128,7 +128,7 @@ public class ODataServlet extends HttpServlet {
     } else if (HTTP_METHOD_HEAD.equals(method) || HTTP_METHOD_OPTIONS.equals(method)) {
       createNotImplementedResponse(req, ODataNotImplementedException.COMMON, resp);
     } else {
-      createMethodNotAllowedResponse(req, ODataHttpException.COMMON, resp);
+      createNotImplementedResponse(req, ODataHttpException.COMMON, resp);
     }
   }
 
@@ -149,7 +149,7 @@ public class ODataServlet extends HttpServlet {
     } else if (HTTP_METHOD_HEAD.equals(xHttpMethod) || HTTP_METHOD_OPTIONS.equals(xHttpMethod)) {
       createNotImplementedResponse(req, ODataNotImplementedException.COMMON, resp);
     } else {
-      return false;
+      createNotImplementedResponse(req, ODataNotImplementedException.COMMON, resp);
     }
     return true;
   }
@@ -201,7 +201,7 @@ public class ODataServlet extends HttpServlet {
           .build();
       createResponse(resp, odataResponse);
     } else {
-      createMethodNotAllowedResponse(req, ODataHttpException.COMMON, resp);
+      createNotImplementedResponse(req, ODataHttpException.COMMON, resp);
     }
 
   }
@@ -239,6 +239,7 @@ public class ODataServlet extends HttpServlet {
     ODataExceptionWrapper exceptionWrapper = new ODataExceptionWrapper(req);
     ODataResponse response =
         exceptionWrapper.wrapInExceptionResponse(new ODataNotImplementedException(messageReference));
+//    resp.setStatus(HttpStatusCodes.NOT_IMPLEMENTED.getStatusCode());
     createResponse(resp, response);
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7d71cee8/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/rest/ODataExceptionMapperImplTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/rest/ODataExceptionMapperImplTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/rest/ODataExceptionMapperImplTest.java
index 64e8cb2..74da93c 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/rest/ODataExceptionMapperImplTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/rest/ODataExceptionMapperImplTest.java
@@ -36,7 +36,7 @@ import java.util.Map;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.NotAllowedException;
+import javax.ws.rs.ClientErrorException;
 import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MultivaluedHashMap;
 import javax.ws.rs.core.MultivaluedMap;
@@ -370,7 +370,7 @@ public class ODataExceptionMapperImplTest extends BaseTest {
     // prepare
     String message = "The request dispatcher does not allow the HTTP method used for the request.";
     Exception exception =
-        new NotAllowedException(Response.status(Response.Status.METHOD_NOT_ALLOWED).header(HttpHeaders.ALLOW, "GET")
+        new ClientErrorException(Response.status(Response.Status.METHOD_NOT_ALLOWED).header(HttpHeaders.ALLOW, "GET")
             .build());
 
     // execute

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7d71cee8/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/BasicHttpTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/BasicHttpTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/BasicHttpTest.java
index b8d5939..408373c 100644
--- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/BasicHttpTest.java
+++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/BasicHttpTest.java
@@ -207,7 +207,7 @@ public class BasicHttpTest extends AbstractBasicTest {
   public void unknownMethod() throws Exception {
     HttpSomethingUnsupported request = new HttpSomethingUnsupported(getEndpoint() + "aaa/bbb/ccc");
     final HttpResponse response = getHttpClient().execute(request);
-    assertEquals(HttpStatusCodes.METHOD_NOT_ALLOWED.getStatusCode(), response.getStatusLine().getStatusCode());
+    assertEquals(HttpStatusCodes.NOT_IMPLEMENTED.getStatusCode(), response.getStatusLine().getStatusCode());
   }
 
   @Test
@@ -269,6 +269,6 @@ public class BasicHttpTest extends AbstractBasicTest {
 
   @Test
   public void tunneledUnknownMethodOverride() throws Exception {
-    tunnelPost("X-HTTP-Method-Override", "xxx", HttpStatusCodes.METHOD_NOT_ALLOWED);
+    tunnelPost("X-HTTP-Method-Override", "xxx", HttpStatusCodes.NOT_IMPLEMENTED);
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7d71cee8/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/UrlRewriteTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/UrlRewriteTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/UrlRewriteTest.java
index 348e715..37d8ba7 100644
--- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/UrlRewriteTest.java
+++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/UrlRewriteTest.java
@@ -130,7 +130,7 @@ public class UrlRewriteTest extends AbstractBasicTest {
   public void testSomethingUnsupportedServiceDocumentRedirect() throws Exception {
     final HttpRequestBase httpMethod = createRedirectRequest(HttpSomethingUnsupported.class);
     final HttpResponse response = getHttpClient().execute(httpMethod);
-    assertEquals(HttpStatusCodes.METHOD_NOT_ALLOWED.getStatusCode(), response.getStatusLine().getStatusCode());
+    assertEquals(HttpStatusCodes.NOT_IMPLEMENTED.getStatusCode(), response.getStatusLine().getStatusCode());
   }
 
   private HttpRequestBase createRedirectRequest(final Class<? extends HttpRequestBase> clazz) throws Exception {


[49/50] [abbrv] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/olingo-odata2.git

Posted by mi...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/olingo-odata2.git

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/fe1b1c97
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/fe1b1c97
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/fe1b1c97

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: fe1b1c97fc2f2fdd464479fc4f793c7a27a0abeb
Parents: 78f31a8 7852087
Author: Chandan V A <ch...@sap.com>
Authored: Sun Aug 31 08:52:29 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sun Aug 31 08:52:29 2014 +0530

----------------------------------------------------------------------
 .../ep/producer/JsonLinkEntityProducer.java     | 10 ++-
 .../ep/producer/JsonLinksEntityProducer.java    | 11 +--
 .../ep/producer/JsonLinkEntityProducerTest.java | 17 +++++
 .../producer/JsonLinksEntityProducerTest.java   | 76 ++++++++++++++++++++
 4 files changed, 107 insertions(+), 7 deletions(-)
----------------------------------------------------------------------



[33/50] [abbrv] git commit: [OLINGO-374] Set patch version 2.0.1-SNAPSHOT

Posted by mi...@apache.org.
[OLINGO-374] Set patch version 2.0.1-SNAPSHOT


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/3a1ffb42
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/3a1ffb42
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/3a1ffb42

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 3a1ffb426a636d78ad7bdb6ff41405d5be81ad4d
Parents: 8e81450
Author: Christian Amend <ch...@apache.org>
Authored: Fri Jul 18 14:43:04 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Fri Jul 18 14:43:04 2014 +0200

----------------------------------------------------------------------
 odata2-annotation-processor/annotation-processor-api/pom.xml     | 2 +-
 odata2-annotation-processor/annotation-processor-core/pom.xml    | 2 +-
 odata2-annotation-processor/annotation-processor-ref/pom.xml     | 2 +-
 odata2-annotation-processor/annotation-processor-web/pom.xml     | 2 +-
 odata2-annotation-processor/pom.xml                              | 2 +-
 odata2-dist/janos/pom.xml                                        | 2 +-
 odata2-dist/javadoc/pom.xml                                      | 2 +-
 odata2-dist/jpa/pom.xml                                          | 2 +-
 odata2-dist/lib/pom.xml                                          | 2 +-
 odata2-dist/pom.xml                                              | 2 +-
 odata2-dist/ref/pom.xml                                          | 2 +-
 odata2-jpa-processor/jpa-api/pom.xml                             | 2 +-
 odata2-jpa-processor/jpa-core/pom.xml                            | 2 +-
 odata2-jpa-processor/jpa-ref/pom.xml                             | 2 +-
 odata2-jpa-processor/jpa-web/pom.xml                             | 2 +-
 odata2-jpa-processor/pom.xml                                     | 2 +-
 odata2-lib/odata-annotation/pom.xml                              | 2 +-
 odata2-lib/odata-api/pom.xml                                     | 2 +-
 odata2-lib/odata-core/pom.xml                                    | 2 +-
 odata2-lib/odata-fit/pom.xml                                     | 2 +-
 odata2-lib/odata-ref/pom.xml                                     | 2 +-
 odata2-lib/odata-testutil/pom.xml                                | 2 +-
 odata2-lib/odata-web/pom.xml                                     | 2 +-
 odata2-lib/pom.xml                                               | 2 +-
 odata2-sample/cars-annotation-archetype/pom.xml                  | 4 ++--
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/cars-jpa-archetype/pom.xml                         | 2 +-
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/cars-service-archetype/pom.xml                     | 4 ++--
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/pom.xml                                            | 2 +-
 pom.xml                                                          | 2 +-
 32 files changed, 34 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-annotation-processor/annotation-processor-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-api/pom.xml b/odata2-annotation-processor/annotation-processor-api/pom.xml
index 51cc9d0..515c0da 100644
--- a/odata2-annotation-processor/annotation-processor-api/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-api/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.1.0-SNAPSHOT</version>
+    <version>2.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-annotation-processor/annotation-processor-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/pom.xml b/odata2-annotation-processor/annotation-processor-core/pom.xml
index 53b72c8..8e44c9b 100644
--- a/odata2-annotation-processor/annotation-processor-core/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.1.0-SNAPSHOT</version>
+    <version>2.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-annotation-processor/annotation-processor-ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-ref/pom.xml b/odata2-annotation-processor/annotation-processor-ref/pom.xml
index d245263..6987e57 100644
--- a/odata2-annotation-processor/annotation-processor-ref/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-ref/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.1.0-SNAPSHOT</version>
+    <version>2.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-annotation-processor/annotation-processor-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-web/pom.xml b/odata2-annotation-processor/annotation-processor-web/pom.xml
index ad87c4d..491dd3b 100644
--- a/odata2-annotation-processor/annotation-processor-web/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-web/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.1.0-SNAPSHOT</version>
+    <version>2.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-annotation-processor/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/pom.xml b/odata2-annotation-processor/pom.xml
index ef10375..600e1c5 100644
--- a/odata2-annotation-processor/pom.xml
+++ b/odata2-annotation-processor/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-dist/janos/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/janos/pom.xml b/odata2-dist/janos/pom.xml
index 8b1e2ba..bceee90 100644
--- a/odata2-dist/janos/pom.xml
+++ b/odata2-dist/janos/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-dist/javadoc/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/javadoc/pom.xml b/odata2-dist/javadoc/pom.xml
index 223b2c7..ab57039 100644
--- a/odata2-dist/javadoc/pom.xml
+++ b/odata2-dist/javadoc/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-dist/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/jpa/pom.xml b/odata2-dist/jpa/pom.xml
index cbaa08c..7d702ca 100644
--- a/odata2-dist/jpa/pom.xml
+++ b/odata2-dist/jpa/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-dist/lib/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/lib/pom.xml b/odata2-dist/lib/pom.xml
index 2877a67..7f48775 100644
--- a/odata2-dist/lib/pom.xml
+++ b/odata2-dist/lib/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-dist/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/pom.xml b/odata2-dist/pom.xml
index e452a66..e6663b5 100644
--- a/odata2-dist/pom.xml
+++ b/odata2-dist/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-dist/ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/ref/pom.xml b/odata2-dist/ref/pom.xml
index 3c554a7..427e10c 100644
--- a/odata2-dist/ref/pom.xml
+++ b/odata2-dist/ref/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-jpa-processor/jpa-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/pom.xml b/odata2-jpa-processor/jpa-api/pom.xml
index ead670a..a80328b 100644
--- a/odata2-jpa-processor/jpa-api/pom.xml
+++ b/odata2-jpa-processor/jpa-api/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.1.0-SNAPSHOT</version>
+		<version>2.0.1-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-jpa-processor/jpa-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/pom.xml b/odata2-jpa-processor/jpa-core/pom.xml
index c03bb67..ad850b5 100644
--- a/odata2-jpa-processor/jpa-core/pom.xml
+++ b/odata2-jpa-processor/jpa-core/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.1.0-SNAPSHOT</version>
+		<version>2.0.1-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/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 9e77869..06ed36b 100644
--- a/odata2-jpa-processor/jpa-ref/pom.xml
+++ b/odata2-jpa-processor/jpa-ref/pom.xml
@@ -17,7 +17,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.1.0-SNAPSHOT</version>
+		<version>2.0.1-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-jpa-processor/jpa-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/pom.xml b/odata2-jpa-processor/jpa-web/pom.xml
index 2037516..2b22bd5 100644
--- a/odata2-jpa-processor/jpa-web/pom.xml
+++ b/odata2-jpa-processor/jpa-web/pom.xml
@@ -21,7 +21,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.1.0-SNAPSHOT</version>
+		<version>2.0.1-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-jpa-processor/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/pom.xml b/odata2-jpa-processor/pom.xml
index 960755a..b94e43b 100644
--- a/odata2-jpa-processor/pom.xml
+++ b/odata2-jpa-processor/pom.xml
@@ -18,7 +18,7 @@
     <parent>
       <groupId>org.apache.olingo</groupId>
       <artifactId>olingo-odata2-parent</artifactId>
-      <version>2.1.0-SNAPSHOT</version>
+      <version>2.0.1-SNAPSHOT</version>
       <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-lib/odata-annotation/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-annotation/pom.xml b/odata2-lib/odata-annotation/pom.xml
index 088809c..f6fb553 100644
--- a/odata2-lib/odata-annotation/pom.xml
+++ b/odata2-lib/odata-annotation/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-lib</artifactId>
-    <version>2.1.0-SNAPSHOT</version>
+    <version>2.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-lib/odata-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/pom.xml b/odata2-lib/odata-api/pom.xml
index dd571ce..df3353c 100644
--- a/odata2-lib/odata-api/pom.xml
+++ b/odata2-lib/odata-api/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-    <version>2.1.0-SNAPSHOT</version>
+    <version>2.0.1-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-lib/odata-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/pom.xml b/odata2-lib/odata-core/pom.xml
index 421cdf1..c3415e5 100644
--- a/odata2-lib/odata-core/pom.xml
+++ b/odata2-lib/odata-core/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.1.0-SNAPSHOT</version>
+		<version>2.0.1-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-lib/odata-fit/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/pom.xml b/odata2-lib/odata-fit/pom.xml
index 7486948..5784900 100644
--- a/odata2-lib/odata-fit/pom.xml
+++ b/odata2-lib/odata-fit/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.1.0-SNAPSHOT</version>
+		<version>2.0.1-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-lib/odata-ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-ref/pom.xml b/odata2-lib/odata-ref/pom.xml
index 9901a3a..43d8c23 100644
--- a/odata2-lib/odata-ref/pom.xml
+++ b/odata2-lib/odata-ref/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.1.0-SNAPSHOT</version>
+		<version>2.0.1-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-lib/odata-testutil/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-testutil/pom.xml b/odata2-lib/odata-testutil/pom.xml
index 5dff9de..252a61c 100644
--- a/odata2-lib/odata-testutil/pom.xml
+++ b/odata2-lib/odata-testutil/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-lib</artifactId>
-    <version>2.1.0-SNAPSHOT</version>
+    <version>2.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-lib/odata-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-web/pom.xml b/odata2-lib/odata-web/pom.xml
index 110d6f8..45c6e2c 100644
--- a/odata2-lib/odata-web/pom.xml
+++ b/odata2-lib/odata-web/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-lib</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-lib/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/pom.xml b/odata2-lib/pom.xml
index 1fc4e81..f40ed97 100644
--- a/odata2-lib/pom.xml
+++ b/odata2-lib/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-sample/cars-annotation-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/pom.xml b/odata2-sample/cars-annotation-archetype/pom.xml
index d368a85..27b86a6 100644
--- a/odata2-sample/cars-annotation-archetype/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/pom.xml
@@ -16,13 +16,13 @@
   <groupId>org.apache.olingo</groupId>
   <artifactId>olingo-odata2-sample-cars-annotation-archetype</artifactId>
   <name>${project.artifactId}</name>
-  <version>2.1.0-SNAPSHOT</version>
+  <version>2.0.1-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-sample</artifactId>
-    <version>2.1.0-SNAPSHOT</version>
+    <version>2.0.1-SNAPSHOT</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
index 42e361d..1acbca5 100644
--- a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
@@ -32,7 +32,7 @@
     <version.servlet-api>2.5</version.servlet-api>
     <version.jaxrs-api>2.0-m10</version.jaxrs-api>
     <version.slf4j>1.7.1</version.slf4j>
-    <version.olingo>2.1.0-SNAPSHOT</version.olingo>
+    <version.olingo>2.0.1-SNAPSHOT</version.olingo>
   </properties>
 
   <build>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-sample/cars-jpa-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/pom.xml b/odata2-sample/cars-jpa-archetype/pom.xml
index 03c96e6..5ca2091 100644
--- a/odata2-sample/cars-jpa-archetype/pom.xml
+++ b/odata2-sample/cars-jpa-archetype/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-sample</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 	

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
index 237973a..955e13c 100644
--- a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
@@ -20,7 +20,7 @@
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<version.cxf>2.7.6</version.cxf>
-		<version.olingo>2.1.0-SNAPSHOT</version.olingo>
+		<version.olingo>2.0.1-SNAPSHOT</version.olingo>
 		<version.eclipselink>2.5.1</version.eclipselink>
 		<version.javax.persistence>2.0.5</version.javax.persistence>
 	</properties>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-sample/cars-service-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/pom.xml b/odata2-sample/cars-service-archetype/pom.xml
index 67df1fe..569be90 100644
--- a/odata2-sample/cars-service-archetype/pom.xml
+++ b/odata2-sample/cars-service-archetype/pom.xml
@@ -24,14 +24,14 @@
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-sample-cars-service-archetype</artifactId>
     <name>${project.artifactId}</name>
-    <version>2.1.0-SNAPSHOT</version>
+    <version>2.0.1-SNAPSHOT</version>
 
     <packaging>maven-archetype</packaging>
 
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-sample</artifactId>
-        <version>2.1.0-SNAPSHOT</version>
+        <version>2.0.1-SNAPSHOT</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
index e1f88af..4400759 100644
--- a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
@@ -20,7 +20,7 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<version.cxf>2.7.6</version.cxf>
 		<version.slf4j>1.7.1</version.slf4j>
-		<version.olingo>2.1.0-SNAPSHOT</version.olingo>
+		<version.olingo>2.0.1-SNAPSHOT</version.olingo>
 	</properties>
 
 	<build>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/odata2-sample/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/pom.xml b/odata2-sample/pom.xml
index b16d48b..091f1e5 100644
--- a/odata2-sample/pom.xml
+++ b/odata2-sample/pom.xml
@@ -15,7 +15,7 @@
     <parent>
       <groupId>org.apache.olingo</groupId>
       <artifactId>olingo-odata2-parent</artifactId>
-      <version>2.1.0-SNAPSHOT</version>
+      <version>2.0.1-SNAPSHOT</version>
       <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3a1ffb42/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index bf21b7c..4646cdc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
 
 	<groupId>org.apache.olingo</groupId>
 	<artifactId>olingo-odata2-parent</artifactId>
-	<version>2.1.0-SNAPSHOT</version>
+	<version>2.0.1-SNAPSHOT</version>
 	<packaging>pom</packaging>
 
 	<name>${project.artifactId}</name>


[23/50] [abbrv] git commit: [OLINGO-293] Fix Null Pointer Exception in JPA Error Callback

Posted by mi...@apache.org.
[OLINGO-293] Fix Null Pointer Exception in JPA Error Callback


Signed-off-by: Chandan V A <ch...@sap.com>

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/418c631c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/418c631c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/418c631c

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 418c631c8ec0b72fbb50e0ee88ec799b50c3a6fe
Parents: 9b6e92a
Author: Chandan V A <ch...@sap.com>
Authored: Mon Jun 30 21:58:49 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Mon Jun 30 21:58:49 2014 +0530

----------------------------------------------------------------------
 .../odata2/jpa/processor/api/exception/ODataJPAErrorCallback.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/418c631c/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/exception/ODataJPAErrorCallback.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/exception/ODataJPAErrorCallback.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/exception/ODataJPAErrorCallback.java
index 6d7e737..4482f61 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/exception/ODataJPAErrorCallback.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/exception/ODataJPAErrorCallback.java
@@ -32,7 +32,7 @@ public class ODataJPAErrorCallback implements ODataErrorCallback {
     final String SEPARATOR = " : ";
 
     Throwable t = context.getException();
-    if (t instanceof ODataJPAException) {
+    if (t instanceof ODataJPAException && t.getCause() != null) {
       StringBuilder errorBuilder = new StringBuilder();
       errorBuilder.append(t.getCause().getClass().toString());
       errorBuilder.append(SEPARATOR);


[20/50] [abbrv] git commit: [OLINGO-165] Remove deprecated variables and methods

Posted by mi...@apache.org.
[OLINGO-165] Remove deprecated variables and methods


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/afa3a454
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/afa3a454
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/afa3a454

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: afa3a4541c8096d29751dab9dffd210a46bcac1c
Parents: 5968f1d
Author: Christian Amend <ch...@apache.org>
Authored: Fri Jun 27 16:39:58 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Fri Jun 27 18:54:53 2014 +0200

----------------------------------------------------------------------
 .../processor/core/ListsProcessor.java          |  11 +-
 .../core/datasource/BeanPropertyAccess.java     |   8 +-
 .../core/datasource/BeanPropertyAccessTest.java |   2 +-
 .../core/ODataJPAResponseBuilderTest.java       |   2 +-
 .../olingo/odata2/api/edm/EdmMapping.java       |   9 --
 .../olingo/odata2/api/edm/provider/Mapping.java |  18 ----
 .../api/ep/EntityProviderWriteProperties.java   |  25 -----
 .../olingo/odata2/core/ODataRequestImpl.java    |   1 -
 .../odata2/core/ep/BasicEntityProvider.java     |   6 +-
 .../core/ep/consumer/JsonEntryConsumer.java     |   1 -
 .../ep/producer/AtomEntryEntityProducer.java    |  42 +++-----
 .../ep/producer/JsonEntryEntityProducer.java    |  19 ++--
 .../ep/producer/XmlPropertyEntityProducer.java  |   4 +-
 .../olingo/odata2/core/ODataRequestTest.java    |   1 -
 .../core/edm/provider/EdmMappingTest.java       |   5 +-
 .../edm/provider/EdmPropertyImplProvTest.java   |   3 +-
 .../odata2/core/ep/AbstractProviderTest.java    |   1 +
 .../ep/ODataEntityProviderPropertiesTest.java   |  14 ---
 .../core/ep/producer/AtomEntryProducerTest.java | 105 ++++++++++++++-----
 .../core/ep/producer/AtomFeedProducerTest.java  |  16 ++-
 .../producer/JsonEntryEntityProducerTest.java   |  95 +++++++++--------
 .../odata2/ref/edm/ScenarioEdmProvider.java     |  15 ++-
 .../ref/processor/BeanPropertyAccess.java       |   8 +-
 .../odata2/ref/processor/ListsProcessor.java    |  11 +-
 .../olingo/odata2/testutil/mock/EdmMock.java    |   6 +-
 .../odata2/testutil/mock/EdmTestProvider.java   |   8 +-
 26 files changed, 197 insertions(+), 239 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
index 2c18668..a03136b 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
@@ -567,7 +567,7 @@ public class ListsProcessor extends DataSourceProcessor {
     final List<EdmProperty> propertyPath = uriInfo.getPropertyPath();
     final EdmProperty property = propertyPath.get(propertyPath.size() - 1);
     final Object value = property.isSimple() ?
-        property.getMapping() == null || property.getMapping().getMimeType() == null ?
+        property.getMapping() == null || property.getMapping().getMediaResourceMimeTypeKey() == null ?
             getPropertyValue(data, propertyPath) : getSimpleTypeValueMap(data, propertyPath) :
         getStructuralTypeValueMap(getPropertyValue(data, propertyPath), (EdmStructuralType) property.getType());
 
@@ -604,7 +604,7 @@ public class ListsProcessor extends DataSourceProcessor {
 
     final List<EdmProperty> propertyPath = uriInfo.getPropertyPath();
     final EdmProperty property = propertyPath.get(propertyPath.size() - 1);
-    final Object value = property.getMapping() == null || property.getMapping().getMimeType() == null ?
+    final Object value = property.getMapping() == null || property.getMapping().getMediaResourceMimeTypeKey() == null ?
         getPropertyValue(data, propertyPath) : getSimpleTypeValueMap(data, propertyPath);
 
     return ODataResponse.fromResponse(EntityProvider.writePropertyValue(property, value)).eTag(
@@ -1506,13 +1506,10 @@ public class ListsProcessor extends DataSourceProcessor {
 
   private void handleMimeType(final Object data, final EdmMapping mapping, final Map<String, Object> valueMap)
       throws ODataException {
-    final String mimeTypeName = mapping.getMimeType();
+    final String mimeTypeName = mapping.getMediaResourceMimeTypeKey();
     if (mimeTypeName != null) {
       Object value = valueAccess.getMappingValue(data, mapping);
       valueMap.put(mimeTypeName, value);
-      if (mapping.getMediaResourceMimeTypeKey() != null) {
-        valueMap.put(mapping.getMediaResourceMimeTypeKey(), value);
-      }
     }
   }
 
@@ -1543,7 +1540,7 @@ public class ListsProcessor extends DataSourceProcessor {
       final Object value = valueAccess.getPropertyValue(data, property);
 
       if (property.isSimple()) {
-        if (property.getMapping() == null || property.getMapping().getMimeType() == null) {
+        if (property.getMapping() == null || property.getMapping().getMediaResourceMimeTypeKey() == null) {
           valueMap.put(propertyName, value);
         } else {
           // TODO: enable MIME type mapping outside the current subtree

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/datasource/BeanPropertyAccess.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/datasource/BeanPropertyAccess.java b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/datasource/BeanPropertyAccess.java
index 290b99f..cd88b81 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/datasource/BeanPropertyAccess.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/datasource/BeanPropertyAccess.java
@@ -55,16 +55,16 @@ public class BeanPropertyAccess implements ValueAccess {
 
   @Override
   public <T> Object getMappingValue(final T data, final EdmMapping mapping) throws ODataException {
-    if (mapping != null && mapping.getMimeType() != null) {
-      return getValue(data, mapping.getMimeType());
+    if (mapping != null && mapping.getMediaResourceMimeTypeKey() != null) {
+      return getValue(data, mapping.getMediaResourceMimeTypeKey());
     }
     return null;
   }
 
   @Override
   public <T, V> void setMappingValue(final T data, final EdmMapping mapping, final V value) throws ODataException {
-    if (mapping != null && mapping.getMimeType() != null) {
-      setValue(data, getSetterMethodName(mapping.getMimeType()), value);
+    if (mapping != null && mapping.getMediaResourceMimeTypeKey() != null) {
+      setValue(data, getSetterMethodName(mapping.getMediaResourceMimeTypeKey()), value);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/datasource/BeanPropertyAccessTest.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/datasource/BeanPropertyAccessTest.java b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/datasource/BeanPropertyAccessTest.java
index 9d25e0a..76e0cb4 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/datasource/BeanPropertyAccessTest.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/datasource/BeanPropertyAccessTest.java
@@ -234,7 +234,7 @@ public class BeanPropertyAccessTest {
 
   private EdmMapping mockMapping(final String mimeTypeKey) throws EdmException {
     EdmMapping mapping = Mockito.mock(EdmMapping.class);
-    Mockito.when(mapping.getMimeType()).thenReturn(mimeTypeKey);
+    Mockito.when(mapping.getMediaResourceMimeTypeKey()).thenReturn(mimeTypeKey);
     return mapping;
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderTest.java
index 1345260..049b365 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataJPAResponseBuilderTest.java
@@ -386,7 +386,7 @@ public class ODataJPAResponseBuilderTest extends JPAEdmTestModelView {
     EdmProperty edmProperty = EasyMock.createMock(EdmProperty.class);
     EdmMapping edmMapping = EasyMock.createMock(EdmMapping.class);
     EasyMock.expect(edmMapping.getInternalName()).andStubReturn("soId");
-    EasyMock.expect(edmMapping.getMimeType()).andReturn(null);
+    EasyMock.expect(edmMapping.getMediaResourceMimeTypeKey()).andReturn(null);
     EasyMock.replay(edmMapping);
     try {
       EasyMock.expect(edmProperty.getName()).andStubReturn("ID");

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmMapping.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmMapping.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmMapping.java
index 2c1116d..5bf01d3 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmMapping.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/EdmMapping.java
@@ -33,15 +33,6 @@ public interface EdmMapping {
   String getInternalName();
 
   /**
-   * Get the mapping name for mime type lookup
-   * 
-   * @return mapping name as String
-   * @deprecated use instead functionality of {@link #getMediaResourceMimeTypeKey()} method
-   */
-  @Deprecated
-  String getMimeType();
-
-  /**
    * Gets the key under which the resource source value can be found in the data map.
    * @return the key of the media resource source
    */

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/provider/Mapping.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/provider/Mapping.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/provider/Mapping.java
index d9e3453..34d03a1 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/provider/Mapping.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/edm/provider/Mapping.java
@@ -27,7 +27,6 @@ import org.apache.olingo.odata2.api.edm.EdmMapping;
 public class Mapping implements EdmMapping {
 
   private String value;
-  private String mimeType;
   private Object object;
   private String mediaResourceSourceKey;
   private String mediaResourceMimeTypeKey;
@@ -38,11 +37,6 @@ public class Mapping implements EdmMapping {
   }
 
   @Override
-  public String getMimeType() {
-    return mimeType;
-  }
-
-  @Override
   public Object getObject() {
     return object;
   }
@@ -68,18 +62,6 @@ public class Mapping implements EdmMapping {
   }
 
   /**
-   * Sets the mime type for this {@link Mapping}.
-   * @param mimeType
-   * @return {@link Mapping} for method chaining
-   * @deprecated use instead functionality of {@link #setMediaResourceMimeTypeKey(String)} method
-   */
-  @Deprecated
-  public Mapping setMimeType(final String mimeType) {
-    this.mimeType = mimeType;
-    return this;
-  }
-
-  /**
    * Sets an object. This method can be used by a provider to set whatever it wants to associate with this.
    * @param object
    * @return {@link Mapping} for method chaining

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
index b4422ee..4273b30 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
@@ -34,8 +34,6 @@ import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
 public class EntityProviderWriteProperties {
 
   private URI serviceRoot;
-  @Deprecated
-  private String mediaResourceMimeType;
   private InlineCount inlineCountType;
   private Integer inlineCount;
   private String nextLink;
@@ -82,17 +80,6 @@ public class EntityProviderWriteProperties {
   }
 
   /**
-   * Gets the MIME type of the media resource.
-   * @return the MIME type of the media resource
-   * @deprecated use instead the functionality of 'EdmMapping -> mediaResourceMimeTypeKey' to reference via a key
-   * to the 'mime type' of the media resource provided in the entity data map
-   */
-  @Deprecated
-  public final String getMediaResourceMimeType() {
-    return mediaResourceMimeType;
-  }
-
-  /**
    * Gets the type of the inlinecount request from the system query option.
    * @return the type of the inlinecount request from the system query option
    */
@@ -156,17 +143,6 @@ public class EntityProviderWriteProperties {
     }
 
     /**
-     * @param mediaResourceMimeType the mediaResourceMimeType to set
-     * @deprecated use instead the functionality of 'EdmMapping -> mediaResourceMimeTypeKey' to reference via a key
-     * to the 'mime type' of the media resource provided in the entity data map
-     */
-    @Deprecated
-    public final ODataEntityProviderPropertiesBuilder mediaResourceMimeType(final String mediaResourceMimeType) {
-      properties.mediaResourceMimeType = mediaResourceMimeType;
-      return this;
-    }
-
-    /**
      * @param inlineCountType the inlineCountType to set
      */
     public final ODataEntityProviderPropertiesBuilder inlineCountType(final InlineCount inlineCountType) {
@@ -251,7 +227,6 @@ public class EntityProviderWriteProperties {
 
     
     public ODataEntityProviderPropertiesBuilder fromProperties(final EntityProviderWriteProperties properties) {
-      this.properties.mediaResourceMimeType = properties.getMediaResourceMimeType();
       this.properties.inlineCountType = properties.getInlineCountType();
       this.properties.inlineCount = properties.getInlineCount();
       this.properties.nextLink = properties.getNextLink();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
index 5bfcaf9..5a67ae7 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata2.core;
 
 import java.io.InputStream;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
index a32b916..c8b2520 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/BasicEntityProvider.java
@@ -56,8 +56,6 @@ import org.apache.olingo.odata2.core.ep.util.CircleStreamBuffer;
 
 /**
  * Provider for all basic (content type independent) entity provider methods.
- * 
- * 
  */
 public class BasicEntityProvider {
 
@@ -163,8 +161,8 @@ public class BasicEntityProvider {
         if (edmProperty.getMimeType() != null) {
           contentType = edmProperty.getMimeType();
         } else {
-          if (edmProperty.getMapping() != null && edmProperty.getMapping().getMimeType() != null) {
-            String mimeTypeMapping = edmProperty.getMapping().getMimeType();
+          if (edmProperty.getMapping() != null && edmProperty.getMapping().getMediaResourceMimeTypeKey() != null) {
+            String mimeTypeMapping = edmProperty.getMapping().getMediaResourceMimeTypeKey();
             if (value instanceof Map) {
               final Map<?, ?> mappedData = (Map<?, ?>) value;
               binary = mappedData.get(edmProperty.getName());

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java
index 1a6bca2..45726ba 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumer.java
@@ -264,7 +264,6 @@ public class JsonEntryConsumer {
         throw new EntityProviderException(EntityProviderException.MISSING_ATTRIBUTE.addContent(FormatJson.CONTENT_TYPE)
             .addContent(FormatJson.METADATA));
       }
-      // TODO Mime Type Mapping
     } else {
       if (mediaMetadata.getContentType() != null || mediaMetadata.getEditLink() != null
           || mediaMetadata.getEtag() != null || mediaMetadata.getSourceLink() != null) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
index bd519e0..89b7e6e 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
@@ -59,7 +59,6 @@ import org.apache.olingo.odata2.core.commons.Encoder;
 import org.apache.olingo.odata2.core.edm.EdmDateTimeOffset;
 import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
 import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
-import org.apache.olingo.odata2.core.ep.util.FormatJson;
 import org.apache.olingo.odata2.core.ep.util.FormatXml;
 
 /**
@@ -351,19 +350,17 @@ public class AtomEntryEntityProducer {
   private void appendAtomContentLink(final XMLStreamWriter writer, final EntityInfoAggregator eia,
       final Map<String, Object> data, final String selfLink) throws EntityProviderException, EdmException {
     try {
-      String mediaResourceMimeType = properties.getMediaResourceMimeType();
-      if (mediaResourceMimeType == null) {
-        EdmMapping entityTypeMapping = eia.getEntityType().getMapping();
-        if (entityTypeMapping != null) {
-          String mediaResourceMimeTypeKey = entityTypeMapping.getMediaResourceMimeTypeKey();
-          if (mediaResourceMimeTypeKey != null) {
-            mediaResourceMimeType = (String) data.get(mediaResourceMimeTypeKey);
-          }
-        }
-        if (mediaResourceMimeType == null) {
-          mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
+      String mediaResourceMimeType = null;
+      EdmMapping entityTypeMapping = eia.getEntityType().getMapping();
+      if (entityTypeMapping != null) {
+        String mediaResourceMimeTypeKey = entityTypeMapping.getMediaResourceMimeTypeKey();
+        if (mediaResourceMimeTypeKey != null) {
+          mediaResourceMimeType = (String) data.get(mediaResourceMimeTypeKey);
         }
       }
+      if (mediaResourceMimeType == null) {
+        mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
+      }
 
       writer.writeStartElement(FormatXml.ATOM_LINK);
       writer.writeAttribute(FormatXml.ATOM_HREF, selfLink + "/$value");
@@ -379,10 +376,9 @@ public class AtomEntryEntityProducer {
       final Map<String, Object> data, final String selfLink) throws EntityProviderException, EdmException {
     try {
 
-      // We have to support the media resource mime type at the properties till version 1.2 then this can be refactored
-      String mediaResourceMimeType = properties.getMediaResourceMimeType();
       EdmMapping entityTypeMapping = eia.getEntityType().getMapping();
       String self = null;
+      String mediaResourceMimeType = null;
 
       if (entityTypeMapping != null) {
         String mediaResourceSourceKey = entityTypeMapping.getMediaResourceSourceKey();
@@ -392,22 +388,16 @@ public class AtomEntryEntityProducer {
         if (self == null) {
           self = selfLink + "/$value";
         }
-        if (mediaResourceMimeType == null) {
-          String mediaResourceMimeTypeKey =
-              entityTypeMapping.getMimeType() != null ? entityTypeMapping.getMimeType()
-                  : entityTypeMapping.getMediaResourceMimeTypeKey();
-          if (mediaResourceMimeTypeKey != null) {
-            mediaResourceMimeType = (String) data.get(mediaResourceMimeTypeKey);
-          }
-          if (mediaResourceMimeType == null) {
-            mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
-          }
+        String mediaResourceMimeTypeKey = entityTypeMapping.getMediaResourceMimeTypeKey();
+        if (mediaResourceMimeTypeKey != null) {
+          mediaResourceMimeType = (String) data.get(mediaResourceMimeTypeKey);
         }
-      } else {
-        self = selfLink + "/$value";
         if (mediaResourceMimeType == null) {
           mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
         }
+      } else {
+        self = selfLink + "/$value";
+        mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
       }
 
       writer.writeStartElement(FormatXml.ATOM_CONTENT);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
index 5369f95..ab2daf8 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
@@ -24,7 +24,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Set;
 
 import org.apache.olingo.odata2.api.ODataCallback;
 import org.apache.olingo.odata2.api.edm.Edm;
@@ -218,9 +217,8 @@ public class JsonEntryEntityProducer {
     if (type.hasStream()) {
       jsonStreamWriter.separator();
 
-      // We have to support the media resource mime type at the properties till version 1.2 then this can be refactored
-      String mediaResourceMimeType = properties.getMediaResourceMimeType();
       EdmMapping entityTypeMapping = entityInfo.getEntityType().getMapping();
+      String mediaResourceMimeType = null;
       String mediaSrc = null;
 
       if (entityTypeMapping != null) {
@@ -231,19 +229,16 @@ public class JsonEntryEntityProducer {
         if (mediaSrc == null) {
           mediaSrc = self + "/$value";
         }
-        if (mediaResourceMimeType == null) {
-          mediaResourceMimeType =
-              entityTypeMapping.getMimeType() != null ? (String) data.get(entityTypeMapping.getMimeType())
-                  : (String) data.get(entityTypeMapping.getMediaResourceMimeTypeKey());
-          if (mediaResourceMimeType == null) {
-            mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
-          }
+        String mediaResourceMimeTypeKey = entityTypeMapping.getMediaResourceMimeTypeKey();
+        if (mediaResourceMimeTypeKey != null) {
+          mediaResourceMimeType = (String) data.get(mediaResourceMimeTypeKey);
         }
-      } else {
-        mediaSrc = self + "/$value";
         if (mediaResourceMimeType == null) {
           mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
         }
+      } else {
+        mediaSrc = self + "/$value";
+        mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
       }
 
       jsonStreamWriter.namedStringValueRaw(FormatJson.CONTENT_TYPE, mediaResourceMimeType);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlPropertyEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlPropertyEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlPropertyEntityProducer.java
index b36205a..bf89349 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlPropertyEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/XmlPropertyEntityProducer.java
@@ -183,8 +183,8 @@ public class XmlPropertyEntityProducer {
     String mimeType = null;
     if (prop.getMimeType() != null) {
       mimeType = prop.getMimeType();
-    } else if (prop.getMapping() != null && prop.getMapping().getMimeType() != null) {
-      mimeType = (String) extractChildValue(value, prop.getMapping().getMimeType());
+    } else if (prop.getMapping() != null && prop.getMapping().getMediaResourceMimeTypeKey() != null) {
+      mimeType = (String) extractChildValue(value, prop.getMapping().getMediaResourceMimeTypeKey());
       contentValue = extractChildValue(value, prop.getName());
     }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestTest.java
index 541077f..0652a73 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestTest.java
@@ -25,7 +25,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.olingo.odata2.api.edm.provider.Property;
 import org.apache.olingo.odata2.api.processor.ODataRequest;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmMappingTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmMappingTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmMappingTest.java
index 62da2e7..7f8757d 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmMappingTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmMappingTest.java
@@ -47,8 +47,7 @@ public class EdmMappingTest extends BaseTest {
 
     mappedObject = new EdmMappingTest();
 
-    Mapping propertySimpleMapping =
-        new Mapping().setMimeType("mimeType").setInternalName("value").setObject(mappedObject);
+    Mapping propertySimpleMapping = new Mapping().setInternalName("value").setObject(mappedObject);
     CustomizableFeedMappings propertySimpleFeedMappings = new CustomizableFeedMappings().setFcKeepInContent(true);
     SimpleProperty propertySimple =
         new SimpleProperty().setName("PropertyName").setType(EdmSimpleTypeKind.String)
@@ -67,7 +66,6 @@ public class EdmMappingTest extends BaseTest {
     EdmMapping mapping = propertySimpleProvider.getMapping();
     assertNotNull(mapping);
     assertEquals("value", mapping.getInternalName());
-    assertEquals("mimeType", mapping.getMimeType());
     assertEquals(mappedObject, mapping.getObject());
   }
 
@@ -76,7 +74,6 @@ public class EdmMappingTest extends BaseTest {
     EdmMapping mapping = navPropertyProvider.getMapping();
     assertNotNull(mapping);
     assertEquals("value", mapping.getInternalName());
-    assertEquals("mimeType", mapping.getMimeType());
     assertEquals(mappedObject, mapping.getObject());
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmPropertyImplProvTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmPropertyImplProvTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmPropertyImplProvTest.java
index 79ef3a6..c9348df 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmPropertyImplProvTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmPropertyImplProvTest.java
@@ -59,7 +59,7 @@ public class EdmPropertyImplProvTest extends BaseTest {
     edmProvider = mock(EdmProvider.class);
     EdmImplProv edmImplProv = new EdmImplProv(edmProvider);
 
-    Mapping propertySimpleMapping = new Mapping().setMimeType("mimeType2").setInternalName("value");
+    Mapping propertySimpleMapping = new Mapping().setInternalName("value");
     CustomizableFeedMappings propertySimpleFeedMappings = new CustomizableFeedMappings().setFcKeepInContent(true);
     SimpleProperty propertySimple =
         new SimpleProperty().setName("PropertyName").setType(EdmSimpleTypeKind.String)
@@ -94,7 +94,6 @@ public class EdmPropertyImplProvTest extends BaseTest {
     assertEquals(EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.String), propertySimpleProvider.getType());
     assertEquals("mimeType", propertySimpleProvider.getMimeType());
     assertNotNull(propertySimpleProvider.getMapping());
-    assertEquals("mimeType2", propertySimpleProvider.getMapping().getMimeType());
     assertNotNull(propertySimpleProvider.getCustomizableFeedMappings());
     assertEquals("value", propertySimpleProvider.getMapping().getInternalName());
     assertNull(propertySimpleProvider.getFacets());

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/AbstractProviderTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/AbstractProviderTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/AbstractProviderTest.java
index 3845675..d9462c2 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/AbstractProviderTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/AbstractProviderTest.java
@@ -95,6 +95,7 @@ public abstract class AbstractProviderTest extends AbstractXmlProducerTestHelper
     employeeData.put("EntryDate", date);
     employeeData.put("TeamId", "42");
     employeeData.put("EmployeeName", "Walter Winter");
+    //employeeData.put("getImageType", "abc");
 
     Map<String, Object> locationData = new HashMap<String, Object>();
     Map<String, Object> cityData = new HashMap<String, Object>();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
index 73c957a..94f6650 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
@@ -69,7 +69,6 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
         .expandSelectTree(expandSelectTree)
         .inlineCount(1)
         .inlineCountType(InlineCount.ALLPAGES)
-        .mediaResourceMimeType("image/png")
         .nextLink("http://localhost")
         .selfLink(selfLink)
         .includeSimplePropertyType(true)
@@ -82,7 +81,6 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
     assertTrue("No callback found.", properties.getCallbacks().containsKey("aCallback"));
     assertEquals("Wrong expand select tree.", expandSelectTree, properties.getExpandSelectTree());
     assertEquals("Wrong self link.", selfLink, properties.getSelfLink());
-    assertEquals("Wrong media resource mime type.", "image/png", properties.getMediaResourceMimeType());
     assertEquals("Wrong base uri.", "http://localhost:80/", properties.getServiceRoot().toASCIIString());
     assertEquals("Wrong inline count type.", InlineCount.ALLPAGES, properties.getInlineCountType());
     assertEquals("Wrong inline count.", Integer.valueOf(1), properties.getInlineCount());
@@ -94,16 +92,6 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
   }
 
   @Test
-  public void buildEntryProperties() throws Exception {
-    final String mediaResourceMimeType = "text/html";
-    final URI serviceRoot = new URI("http://localhost:80/");
-    final EntityProviderWriteProperties properties = EntityProviderWriteProperties.serviceRoot(serviceRoot)
-        .mediaResourceMimeType(mediaResourceMimeType)
-        .build();
-    assertEquals("Wrong mime type.", "text/html", properties.getMediaResourceMimeType());
-  }
-
-  @Test
   public void buildEntryPropertiesFromExisting() throws Exception {
     URI serviceRoot = new URI("http://localhost:80/");
     Map<String, ODataCallback> callbacks = new HashMap<String, ODataCallback>();
@@ -117,7 +105,6 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
         .expandSelectTree(expandSelectTree)
         .inlineCount(1)
         .inlineCountType(InlineCount.ALLPAGES)
-        .mediaResourceMimeType("image/png")
         .nextLink("http://localhost")
         .selfLink(selfLink)
         .includeSimplePropertyType(true)
@@ -135,7 +122,6 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
     assertTrue(fromProperties.getCallbacks().containsKey("aCallback"));
     assertEquals(expandSelectTree, fromProperties.getExpandSelectTree());
     assertEquals(selfLink, fromProperties.getSelfLink());
-    assertEquals("image/png", fromProperties.getMediaResourceMimeType());
     assertEquals("Wrong base uri.", "http://localhost:80/", fromProperties.getServiceRoot().toASCIIString());
     assertEquals("Wrong inline count type.", InlineCount.ALLPAGES, fromProperties.getInlineCountType());
     assertEquals("Wrong inline count.", Integer.valueOf(1), fromProperties.getInlineCount());

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
index db59c1e..b7a350a 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
@@ -31,9 +31,11 @@ import static org.mockito.Mockito.when;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.TimeZone;
 
 import javax.xml.stream.FactoryConfigurationError;
 import javax.xml.stream.XMLStreamException;
@@ -567,10 +569,34 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
   public void serializeAtomMediaResourceWithMimeType() throws IOException, XpathException, SAXException,
       XMLStreamException, FactoryConfigurationError, ODataException {
     AtomEntityProvider ser = createAtomEntityProvider();
-    EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("abc").build();
+    EntityProviderWriteProperties properties = EntityProviderWriteProperties.serviceRoot(BASE_URI).build();
+    Map<String, Object> localEmployeeData = new HashMap<String, Object>();
+
+    Calendar date = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
+    date.clear();
+    date.set(1999, 0, 1);
+
+    localEmployeeData.put("EmployeeId", "1");
+    localEmployeeData.put("ImmageUrl", null);
+    localEmployeeData.put("ManagerId", "1");
+    localEmployeeData.put("Age", new Integer(52));
+    localEmployeeData.put("RoomId", "1");
+    localEmployeeData.put("EntryDate", date);
+    localEmployeeData.put("TeamId", "42");
+    localEmployeeData.put("EmployeeName", "Walter Winter");
+    localEmployeeData.put("getImageType", "abc");
+
+    Map<String, Object> locationData = new HashMap<String, Object>();
+    Map<String, Object> cityData = new HashMap<String, Object>();
+    cityData.put("PostalCode", "33470");
+    cityData.put("CityName", "Duckburg");
+    locationData.put("City", cityData);
+    locationData.put("Country", "Calisota");
+
+    localEmployeeData.put("Location", locationData);
     ODataResponse response =
-        ser.writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees"), employeeData,
+        ser.writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees"),
+            localEmployeeData,
             properties);
     String xmlString = verifyResponse(response);
 
@@ -614,10 +640,34 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
   public void serializeEmployeeAndCheckOrderOfTags() throws IOException, XpathException, SAXException,
       XMLStreamException, FactoryConfigurationError, ODataException {
     AtomEntityProvider ser = createAtomEntityProvider();
-    EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("abc").build();
+    EntityProviderWriteProperties properties = EntityProviderWriteProperties.serviceRoot(BASE_URI).build();
+    Map<String, Object> localEmployeeData = new HashMap<String, Object>();
+
+    Calendar date = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
+    date.clear();
+    date.set(1999, 0, 1);
+
+    localEmployeeData.put("EmployeeId", "1");
+    localEmployeeData.put("ImmageUrl", null);
+    localEmployeeData.put("ManagerId", "1");
+    localEmployeeData.put("Age", new Integer(52));
+    localEmployeeData.put("RoomId", "1");
+    localEmployeeData.put("EntryDate", date);
+    localEmployeeData.put("TeamId", "42");
+    localEmployeeData.put("EmployeeName", "Walter Winter");
+    localEmployeeData.put("getImageType", "abc");
+
+    Map<String, Object> locationData = new HashMap<String, Object>();
+    Map<String, Object> cityData = new HashMap<String, Object>();
+    cityData.put("PostalCode", "33470");
+    cityData.put("CityName", "Duckburg");
+    locationData.put("City", cityData);
+    locationData.put("Country", "Calisota");
+
+    localEmployeeData.put("Location", locationData);
     ODataResponse response =
-        ser.writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees"), employeeData,
+        ser.writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees"),
+            localEmployeeData,
             properties);
     String xmlString = verifyResponse(response);
 
@@ -649,7 +699,7 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
       XMLStreamException, FactoryConfigurationError, ODataException {
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("abc").build();
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).build();
     EdmEntitySet employeeEntitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
     ODataResponse response = ser.writeEntry(employeeEntitySet, employeeData, properties);
     String xmlString = verifyResponse(response);
@@ -672,7 +722,7 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
       XMLStreamException, FactoryConfigurationError, ODataException {
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("abc").build();
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).build();
     EdmEntitySet employeeEntitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
 
     // set "keepInContent" to false for EntryDate
@@ -1026,7 +1076,6 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     EdmMapping mapping = employeesSet.getEntityType().getMapping();
     when(mapping.getMediaResourceSourceKey()).thenReturn(mediaResourceSourceKey);
     when(mapping.getMediaResourceMimeTypeKey()).thenReturn(mediaResourceMimeTypeKey);
-    when(mapping.getMimeType()).thenReturn(null);
     ODataResponse response = ser.writeEntry(employeesSet, localEmployeeData, DEFAULT_PROPERTIES);
     String xmlString = verifyResponse(response);
 
@@ -1084,25 +1133,25 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
     assertXpathNotExists("/a:entry/a:content[@src=\"http://localhost:8080/images/image1\"]", xmlString);
   }
 
-  @Test
-  public void assureGetMimeTypeWinsOverGetMediaResourceMimeTypeKey() throws Exception {
-    // Keep this test till version 1.2
-    AtomEntityProvider ser = createAtomEntityProvider();
-    Map<String, Object> localEmployeeData = new HashMap<String, Object>(employeeData);
-    String mediaResourceMimeTypeKey = "~type";
-    localEmployeeData.put(mediaResourceMimeTypeKey, "wrong");
-    String originalMimeTypeKey = "~originalType";
-    localEmployeeData.put(originalMimeTypeKey, "right");
-    EdmEntitySet employeesSet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
-    EdmMapping mapping = employeesSet.getEntityType().getMapping();
-    when(mapping.getMediaResourceMimeTypeKey()).thenReturn(mediaResourceMimeTypeKey);
-    when(mapping.getMimeType()).thenReturn(originalMimeTypeKey);
-    ODataResponse response = ser.writeEntry(employeesSet, localEmployeeData, DEFAULT_PROPERTIES);
-    String xmlString = verifyResponse(response);
-
-    assertXpathExists("/a:entry/a:content[@type=\"right\"]", xmlString);
-    assertXpathNotExists("/a:entry/a:content[@type=\"wrong\"]", xmlString);
-  }
+//  @Test
+//  public void assureGetMimeTypeWinsOverGetMediaResourceMimeTypeKey() throws Exception {
+//    // Keep this test till version 1.2
+//    AtomEntityProvider ser = createAtomEntityProvider();
+//    Map<String, Object> localEmployeeData = new HashMap<String, Object>(employeeData);
+//    String mediaResourceMimeTypeKey = "~type";
+//    localEmployeeData.put(mediaResourceMimeTypeKey, "wrong");
+//    String originalMimeTypeKey = "~originalType";
+//    localEmployeeData.put(originalMimeTypeKey, "right");
+//    EdmEntitySet employeesSet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+//    EdmMapping mapping = employeesSet.getEntityType().getMapping();
+//    when(mapping.getMediaResourceMimeTypeKey()).thenReturn(mediaResourceMimeTypeKey);
+//    when(mapping.getMimeType()).thenReturn(originalMimeTypeKey);
+//    ODataResponse response = ser.writeEntry(employeesSet, localEmployeeData, DEFAULT_PROPERTIES);
+//    String xmlString = verifyResponse(response);
+//
+//    assertXpathExists("/a:entry/a:content[@type=\"right\"]", xmlString);
+//    assertXpathNotExists("/a:entry/a:content[@type=\"wrong\"]", xmlString);
+//  }
 
   private void verifyTagOrdering(final String xmlString, final String... toCheckTags) {
     XMLUnitHelper.verifyTagOrdering(xmlString, toCheckTags);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomFeedProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomFeedProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomFeedProducerTest.java
index 6608558..37432dd 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomFeedProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomFeedProducerTest.java
@@ -84,7 +84,7 @@ public class AtomFeedProducerTest extends AbstractProviderTest {
   public void testFeedNamespaces() throws Exception {
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("mediatype").build();
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).build();
     ODataResponse response = ser.writeFeed(view.getTargetEntitySet(), roomsData, properties);
     String xmlString = verifyResponse(response);
 
@@ -96,7 +96,7 @@ public class AtomFeedProducerTest extends AbstractProviderTest {
   public void testSelfLink() throws Exception {
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("mediatype").build();
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).build();
     ODataResponse response = ser.writeFeed(view.getTargetEntitySet(), roomsData, properties);
     String xmlString = verifyResponse(response);
 
@@ -110,7 +110,7 @@ public class AtomFeedProducerTest extends AbstractProviderTest {
     String customLink = "Test";
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("mediatype").selfLink(
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).selfLink(
             new URI(customLink)).build();
     ODataResponse response = ser.writeFeed(view.getTargetEntitySet(), roomsData, properties);
     String xmlString = verifyResponse(response);
@@ -124,7 +124,7 @@ public class AtomFeedProducerTest extends AbstractProviderTest {
   public void testFeedMandatoryParts() throws Exception {
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("mediatype").build();
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).build();
     ODataResponse response = ser.writeFeed(view.getTargetEntitySet(), roomsData, properties);
     String xmlString = verifyResponse(response);
 
@@ -153,7 +153,6 @@ public class AtomFeedProducerTest extends AbstractProviderTest {
 
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties = EntityProviderWriteProperties.serviceRoot(BASE_URI)
-        .mediaResourceMimeType("mediatype")
         .inlineCount(Integer.valueOf(103))
         .inlineCountType(InlineCount.ALLPAGES)
         .build();
@@ -170,7 +169,7 @@ public class AtomFeedProducerTest extends AbstractProviderTest {
 
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("mediatype").build();
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).build();
     ODataResponse response = ser.writeFeed(view.getTargetEntitySet(), roomsData, properties);
     String xmlString = verifyResponse(response);
 
@@ -183,7 +182,6 @@ public class AtomFeedProducerTest extends AbstractProviderTest {
 
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties = EntityProviderWriteProperties.serviceRoot(BASE_URI)
-        .mediaResourceMimeType("mediatype")
         .nextLink("http://thisisanextlink")
         .build();
     ODataResponse response = ser.writeFeed(view.getTargetEntitySet(), roomsData, properties);
@@ -197,7 +195,7 @@ public class AtomFeedProducerTest extends AbstractProviderTest {
   public void testInlineCountInvalid() throws Exception {
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("mediatype").inlineCountType(
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).inlineCountType(
             InlineCount.ALLPAGES).build();
     ser.writeFeed(view.getTargetEntitySet(), roomsData, properties);
   }
@@ -208,7 +206,7 @@ public class AtomFeedProducerTest extends AbstractProviderTest {
 
     AtomEntityProvider ser = createAtomEntityProvider();
     EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).mediaResourceMimeType("mediatype").build();
+        EntityProviderWriteProperties.serviceRoot(BASE_URI).build();
     ODataResponse response = ser.writeFeed(view.getTargetEntitySet(), roomsData, properties);
     String xmlString = verifyResponse(response);
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
index 7040e2a..f07b56c 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
@@ -768,7 +768,6 @@ public class JsonEntryEntityProducerTest extends BaseTest {
     EdmMapping mapping = employeesSet.getEntityType().getMapping();
     when(mapping.getMediaResourceSourceKey()).thenReturn(mediaResourceSourceKey);
     when(mapping.getMediaResourceMimeTypeKey()).thenReturn(mediaResourceMimeTypeKey);
-    when(mapping.getMimeType()).thenReturn(null);
 
     ODataResponse response = new JsonEntityProvider().writeEntry(employeesSet, employeeData, DEFAULT_PROPERTIES);
     String jsonString = verifyResponse(response);
@@ -846,53 +845,53 @@ public class JsonEntryEntityProducerTest extends BaseTest {
     assertNull(jsonMap.get("edit_media"));
   }
 
-  @SuppressWarnings("unchecked")
-  @Test
-  public void assureGetMimeTypeWinsOverGetMediaResourceMimeTypeKey() throws Exception {
-    // Keep this test till version 1.2
-    Map<String, Object> employeeData = new HashMap<String, Object>();
-
-    Calendar date = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
-    date.clear();
-    date.set(1999, 0, 1);
-
-    employeeData.put("EmployeeId", "1");
-    employeeData.put("ImmageUrl", null);
-    employeeData.put("ManagerId", "1");
-    employeeData.put("Age", new Integer(52));
-    employeeData.put("RoomId", "1");
-    employeeData.put("EntryDate", date);
-    employeeData.put("TeamId", "42");
-    employeeData.put("EmployeeName", "Walter Winter");
-
-    Map<String, Object> locationData = new HashMap<String, Object>();
-    Map<String, Object> cityData = new HashMap<String, Object>();
-    cityData.put("PostalCode", "33470");
-    cityData.put("CityName", "Duckburg");
-    locationData.put("City", cityData);
-    locationData.put("Country", "Calisota");
-
-    employeeData.put("Location", locationData);
-    String mediaResourceMimeTypeKey = "~type";
-    employeeData.put(mediaResourceMimeTypeKey, "wrong");
-    String originalMimeTypeKey = "~originalType";
-    employeeData.put(originalMimeTypeKey, "right");
-
-    EdmEntitySet employeesSet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
-    EdmMapping mapping = employeesSet.getEntityType().getMapping();
-    when(mapping.getMediaResourceMimeTypeKey()).thenReturn(mediaResourceMimeTypeKey);
-    when(mapping.getMimeType()).thenReturn(originalMimeTypeKey);
-
-    ODataResponse response = new JsonEntityProvider().writeEntry(employeesSet, employeeData, DEFAULT_PROPERTIES);
-    String jsonString = verifyResponse(response);
-
-    Gson gson = new Gson();
-    StringMap<Object> jsonMap = gson.fromJson(jsonString, StringMap.class);
-    jsonMap = (StringMap<Object>) jsonMap.get("d");
-    jsonMap = (StringMap<Object>) jsonMap.get("__metadata");
-
-    assertEquals("right", jsonMap.get("content_type"));
-  }
+//  @SuppressWarnings("unchecked")
+//  @Test
+//  public void assureGetMimeTypeWinsOverGetMediaResourceMimeTypeKey() throws Exception {
+//    // Keep this test till version 1.2
+//    Map<String, Object> employeeData = new HashMap<String, Object>();
+//
+//    Calendar date = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
+//    date.clear();
+//    date.set(1999, 0, 1);
+//
+//    employeeData.put("EmployeeId", "1");
+//    employeeData.put("ImmageUrl", null);
+//    employeeData.put("ManagerId", "1");
+//    employeeData.put("Age", new Integer(52));
+//    employeeData.put("RoomId", "1");
+//    employeeData.put("EntryDate", date);
+//    employeeData.put("TeamId", "42");
+//    employeeData.put("EmployeeName", "Walter Winter");
+//
+//    Map<String, Object> locationData = new HashMap<String, Object>();
+//    Map<String, Object> cityData = new HashMap<String, Object>();
+//    cityData.put("PostalCode", "33470");
+//    cityData.put("CityName", "Duckburg");
+//    locationData.put("City", cityData);
+//    locationData.put("Country", "Calisota");
+//
+//    employeeData.put("Location", locationData);
+//    String mediaResourceMimeTypeKey = "~type";
+//    employeeData.put(mediaResourceMimeTypeKey, "wrong");
+//    String originalMimeTypeKey = "~originalType";
+//    employeeData.put(originalMimeTypeKey, "right");
+//
+//    EdmEntitySet employeesSet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+//    EdmMapping mapping = employeesSet.getEntityType().getMapping();
+//    when(mapping.getMediaResourceMimeTypeKey()).thenReturn(mediaResourceMimeTypeKey);
+//    when(mapping.getMimeType()).thenReturn(originalMimeTypeKey);
+//
+//    ODataResponse response = new JsonEntityProvider().writeEntry(employeesSet, employeeData, DEFAULT_PROPERTIES);
+//    String jsonString = verifyResponse(response);
+//
+//    Gson gson = new Gson();
+//    StringMap<Object> jsonMap = gson.fromJson(jsonString, StringMap.class);
+//    jsonMap = (StringMap<Object>) jsonMap.get("d");
+//    jsonMap = (StringMap<Object>) jsonMap.get("__metadata");
+//
+//    assertEquals("right", jsonMap.get("content_type"));
+//  }
 
   @Test
   public void additionalLink() throws Exception {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/edm/ScenarioEdmProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/edm/ScenarioEdmProvider.java b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/edm/ScenarioEdmProvider.java
index c57b06c..94f7fea 100644
--- a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/edm/ScenarioEdmProvider.java
+++ b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/edm/ScenarioEdmProvider.java
@@ -215,7 +215,10 @@ public class ScenarioEdmProvider extends EdmProvider {
             .setHasStream(true)
             .setKey(getKey("EmployeeId"))
             .setNavigationProperties(navigationProperties)
-            .setMapping(new Mapping().setMimeType("getImageType").setMediaResourceMimeTypeKey("~mrmtk"));
+            .setMapping(new Mapping()
+//                  .setMimeType("getImageType")
+//                .setMediaResourceMimeTypeKey("~mrmtk")
+                .setMediaResourceMimeTypeKey("getImageType"));
 
       } else if (ENTITY_TYPE_1_BASE.getName().equals(edmFQName.getName())) {
         List<Property> properties = new ArrayList<Property>();
@@ -265,7 +268,9 @@ public class ScenarioEdmProvider extends EdmProvider {
             .setBaseType(ENTITY_TYPE_1_1)
             .setHasStream(true)
             .setNavigationProperties(navigationProperties)
-            .setMapping(new Mapping().setMimeType("getImageType"));
+            .setMapping(new Mapping()
+//            .setMimeType("getImageType")
+            .setMediaResourceMimeTypeKey("getImageType"));
 
       } else if (ENTITY_TYPE_1_5.getName().equals(edmFQName.getName())) {
         List<Property> properties = new ArrayList<Property>();
@@ -299,7 +304,7 @@ public class ScenarioEdmProvider extends EdmProvider {
                 .setFcTargetPath(EdmTargetPath.SYNDICATION_AUTHORURI))
             .setMapping(new Mapping().setInternalName("getImageUri")));
         properties.add(new SimpleProperty().setName("Image").setType(EdmSimpleTypeKind.Binary)
-            .setMapping(new Mapping().setMimeType("getImageType")));
+            .setMapping(new Mapping().setMediaResourceMimeTypeKey("getImageType")));
         properties.add(new SimpleProperty().setName("BinaryData").setType(EdmSimpleTypeKind.Binary)
             .setFacets(new Facets().setNullable(true))
             .setMimeType("image/jpeg"));
@@ -315,7 +320,9 @@ public class ScenarioEdmProvider extends EdmProvider {
             .setProperties(properties)
             .setHasStream(true)
             .setKey(getKey("Id", "Type"))
-            .setMapping(new Mapping().setMimeType("getType").setMediaResourceMimeTypeKey("~MediaResourceMimeTypeKey"));
+            .setMapping(new Mapping()
+            //.setMimeType("getType")
+                .setMediaResourceMimeTypeKey("getType"));
       }
     }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/BeanPropertyAccess.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/BeanPropertyAccess.java b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/BeanPropertyAccess.java
index 8898439..8ab3233 100644
--- a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/BeanPropertyAccess.java
+++ b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/BeanPropertyAccess.java
@@ -51,15 +51,15 @@ public class BeanPropertyAccess {
   }
 
   public <T> Object getMappingValue(final T data, final EdmMapping mapping) throws ODataException {
-    if (mapping != null && mapping.getMimeType() != null) {
-      return getValue(data, mapping.getMimeType());
+    if (mapping != null && mapping.getMediaResourceMimeTypeKey() != null) {
+      return getValue(data, mapping.getMediaResourceMimeTypeKey());
     }
     return null;
   }
 
   public <T, V> void setMappingValue(final T data, final EdmMapping mapping, final V value) throws ODataException {
-    if (mapping != null && mapping.getMimeType() != null) {
-      setValue(data, getSetterMethodName(mapping.getMimeType()), value);
+    if (mapping != null && mapping.getMediaResourceMimeTypeKey() != null) {
+      setValue(data, getSetterMethodName(mapping.getMediaResourceMimeTypeKey()), value);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
index 7e22a3d..86ae0cb 100644
--- a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
+++ b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
@@ -574,7 +574,7 @@ public class ListsProcessor extends ODataSingleProcessor {
     final List<EdmProperty> propertyPath = uriInfo.getPropertyPath();
     final EdmProperty property = propertyPath.get(propertyPath.size() - 1);
     final Object value = property.isSimple() ?
-        property.getMapping() == null || property.getMapping().getMimeType() == null ?
+        property.getMapping() == null || property.getMapping().getMediaResourceMimeTypeKey() == null ?
             getPropertyValue(data, propertyPath) : getSimpleTypeValueMap(data, propertyPath) :
         getStructuralTypeValueMap(getPropertyValue(data, propertyPath), (EdmStructuralType) property.getType());
 
@@ -611,7 +611,7 @@ public class ListsProcessor extends ODataSingleProcessor {
 
     final List<EdmProperty> propertyPath = uriInfo.getPropertyPath();
     final EdmProperty property = propertyPath.get(propertyPath.size() - 1);
-    final Object value = property.getMapping() == null || property.getMapping().getMimeType() == null ?
+    final Object value = property.getMapping() == null || property.getMapping().getMediaResourceMimeTypeKey() == null ?
         getPropertyValue(data, propertyPath) : getSimpleTypeValueMap(data, propertyPath);
 
     return ODataResponse.fromResponse(EntityProvider.writePropertyValue(property, value)).eTag(
@@ -1513,13 +1513,10 @@ public class ListsProcessor extends ODataSingleProcessor {
 
   private void handleMimeType(final Object data, final EdmMapping mapping, final Map<String, Object> valueMap)
       throws ODataException {
-    final String mimeTypeName = mapping.getMimeType();
+    final String mimeTypeName = mapping.getMediaResourceMimeTypeKey();
     if (mimeTypeName != null) {
       Object value = valueAccess.getMappingValue(data, mapping);
       valueMap.put(mimeTypeName, value);
-      if (mapping.getMediaResourceMimeTypeKey() != null) {
-        valueMap.put(mapping.getMediaResourceMimeTypeKey(), value);
-      }
     }
   }
 
@@ -1551,7 +1548,7 @@ public class ListsProcessor extends ODataSingleProcessor {
       final Object value = valueAccess.getPropertyValue(data, property);
 
       if (property.isSimple()) {
-        if (property.getMapping() == null || property.getMapping().getMimeType() == null) {
+        if (property.getMapping() == null || property.getMapping().getMediaResourceMimeTypeKey() == null) {
           valueMap.put(propertyName, value);
         } else {
           // TODO: enable MIME type mapping outside the current subtree

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/mock/EdmMock.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/mock/EdmMock.java b/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/mock/EdmMock.java
index 66a5708..acf55a4 100644
--- a/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/mock/EdmMock.java
+++ b/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/mock/EdmMock.java
@@ -72,7 +72,7 @@ class EdmMock {
     EdmEntityType employeeType = employeeEntitySet.getEntityType();
     when(employeeType.hasStream()).thenReturn(true);
     EdmMapping employeeTypeMapping = Mockito.mock(EdmMapping.class);
-    when(employeeTypeMapping.getMimeType()).thenReturn("getImageType");
+    when(employeeTypeMapping.getMediaResourceMimeTypeKey()).thenReturn("getImageType");
     when(employeeType.getMapping()).thenReturn(employeeTypeMapping);
     when(employeeType.getPropertyNames()).thenReturn(Arrays.asList(
         "EmployeeId", "EmployeeName", "ManagerId", "RoomId", "TeamId",
@@ -207,7 +207,7 @@ class EdmMock {
     when(photoEntityType.getKeyPropertyNames()).thenReturn(Arrays.asList("Id", "Type"));
     when(photoEntityType.hasStream()).thenReturn(true);
     EdmMapping photoEntityTypeMapping = Mockito.mock(EdmMapping.class);
-    when(photoEntityTypeMapping.getMimeType()).thenReturn("getType");
+    when(photoEntityTypeMapping.getMediaResourceMimeTypeKey()).thenReturn("getType");
     when(photoEntityType.getMapping()).thenReturn(photoEntityTypeMapping);
     EdmProperty photoIdProperty = createProperty("Id", EdmSimpleTypeKind.Int32, photoEntityType);
     EdmFacets photoIdFacet = mock(EdmFacets.class);
@@ -220,7 +220,7 @@ class EdmMock {
 
     EdmProperty photoImageProperty = createProperty("Image", EdmSimpleTypeKind.Binary, photoEntityType);
     EdmMapping imageMapping = mock(EdmMapping.class);
-    when(imageMapping.getMimeType()).thenReturn("getImageType");
+    when(imageMapping.getMediaResourceMimeTypeKey()).thenReturn("getImageType");
     when(photoImageProperty.getMapping()).thenReturn(imageMapping);
 
     EdmProperty binaryDataProperty = createProperty("BinaryData", EdmSimpleTypeKind.Binary, photoEntityType);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/afa3a454/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/mock/EdmTestProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/mock/EdmTestProvider.java b/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/mock/EdmTestProvider.java
index 6aafaaa..3119aca 100644
--- a/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/mock/EdmTestProvider.java
+++ b/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/mock/EdmTestProvider.java
@@ -259,7 +259,7 @@ public class EdmTestProvider extends EdmProvider {
             .setHasStream(true)
             .setKey(getKey("EmployeeId"))
             .setNavigationProperties(navigationProperties)
-            .setMapping(new Mapping().setMimeType("getImageType"));
+            .setMapping(new Mapping().setMediaResourceMimeTypeKey("getImageType"));
 
       } else if (ENTITY_TYPE_1_BASE.getName().equals(edmFQName.getName())) {
         final List<Property> properties = new ArrayList<Property>();
@@ -309,7 +309,7 @@ public class EdmTestProvider extends EdmProvider {
             .setBaseType(ENTITY_TYPE_1_1)
             .setHasStream(true)
             .setNavigationProperties(navigationProperties)
-            .setMapping(new Mapping().setMimeType("getImageType"));
+            .setMapping(new Mapping().setMediaResourceMimeTypeKey("getImageType"));
 
       } else if (ENTITY_TYPE_1_5.getName().equals(edmFQName.getName())) {
         final List<Property> properties = new ArrayList<Property>();
@@ -343,7 +343,7 @@ public class EdmTestProvider extends EdmProvider {
                 new CustomizableFeedMappings().setFcTargetPath(EdmTargetPath.SYNDICATION_AUTHORURI))
             .setMapping(new Mapping().setInternalName("getImageUri")));
         properties.add(new SimpleProperty().setName("Image").setType(EdmSimpleTypeKind.Binary)
-            .setMapping(new Mapping().setMimeType("getType")));
+            .setMapping(new Mapping().setMediaResourceMimeTypeKey("getType")));
         properties.add(new SimpleProperty().setName("BinaryData").setType(EdmSimpleTypeKind.Binary)
             .setFacets(new Facets().setNullable(true))
             .setMimeType("image/jpeg"));
@@ -359,7 +359,7 @@ public class EdmTestProvider extends EdmProvider {
             .setProperties(properties)
             .setHasStream(true)
             .setKey(getKey("Id", "Type"))
-            .setMapping(new Mapping().setMimeType("getType"));
+            .setMapping(new Mapping().setMediaResourceMimeTypeKey("getType"));
       }
     }
 


[12/50] [abbrv] git commit: [OLINGO-312] Fix Build Issue - This file got missed out in the commit :(

Posted by mi...@apache.org.
[OLINGO-312] Fix Build Issue - This file got missed out in the commit :(


Signed-off-by: Chandan V A <ch...@sap.com>

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/9f638e55
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/9f638e55
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/9f638e55

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 9f638e55ba55b72677dad841a81fa62de0abf868
Parents: db50903
Author: Chandan V A <ch...@sap.com>
Authored: Sun Jun 15 16:28:34 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sun Jun 15 16:28:34 2014 +0530

----------------------------------------------------------------------
 .../processor/ref/extension/SalesOrderProcessingExtension.java | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9f638e55/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/extension/SalesOrderProcessingExtension.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/extension/SalesOrderProcessingExtension.java b/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/extension/SalesOrderProcessingExtension.java
index 3133944..c3065ec 100644
--- a/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/extension/SalesOrderProcessingExtension.java
+++ b/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/extension/SalesOrderProcessingExtension.java
@@ -18,6 +18,7 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.jpa.processor.ref.extension;
 
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -65,4 +66,9 @@ public class SalesOrderProcessingExtension implements JPAEdmExtension {
 
   }
 
+  @Override
+  public InputStream getJPAEdmMappingModelStream() {
+    return null;
+  }
+
 }
\ No newline at end of file


[21/50] [abbrv] git commit: [OLINGO - 127] - Support for handling JPA annotation JoinColumn without "name" and "referencedColumnName" attributes.

Posted by mi...@apache.org.
[OLINGO - 127] 
- Support for handling JPA annotation JoinColumn without "name" and
"referencedColumnName" attributes.

- Support for handling JPA annotation JoinColumns.

- Fix for naming convention for Foreign key properties.

- Adapt Reference scenario to show case the above new features

Signed-off-by: Chandan V A <ch...@sap.com>

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/13093430
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/13093430
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/13093430

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 130934309353f4a7d46eb782490c1256b9286b68
Parents: afa3a45
Author: Chandan V A <ch...@sap.com>
Authored: Sat Jun 28 17:48:17 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sat Jun 28 17:48:17 2014 +0530

----------------------------------------------------------------------
 .../api/model/JPAEdmAssociationEndView.java     |  4 +-
 .../processor/api/model/JPAEdmPropertyView.java |  6 +-
 .../core/access/data/JPAEntityParser.java       | 10 ++++
 .../core/access/model/JPAEdmNameBuilder.java    | 10 ++--
 .../core/access/model/JPATypeConvertor.java     |  2 +-
 .../processor/core/model/JPAEdmAssociation.java | 13 ++--
 .../core/model/JPAEdmAssociationEnd.java        | 33 +++++-----
 .../processor/core/model/JPAEdmProperty.java    | 63 ++++++++++++++------
 .../model/JPAEdmReferentialConstraintRole.java  | 24 +++-----
 .../core/model/JPAEdmAssociationTest.java       | 23 +++++--
 .../JPAEdmReferentialConstraintRoleTest.java    | 20 +++----
 .../model/JPAEdmReferentialConstraintTest.java  | 18 +++---
 .../core/model/JPAEdmTestModelView.java         |  7 +--
 .../ref/converter/BlobToByteConverter.java      |  6 ++
 .../jpa/processor/ref/model/Category.java       | 12 ++++
 .../jpa/processor/ref/model/Material.java       |  9 +--
 .../processor/ref/model/SalesOrderHeader.java   |  2 +-
 .../jpa/processor/ref/model/SalesOrderItem.java |  2 +-
 .../ref/web/JPAReferenceServiceFactory.java     |  1 +
 .../resources/SQL_Insert_Category.properties    |  8 +--
 .../resources/SQL_Insert_Material.properties    | 22 +++----
 .../SQL_Insert_SalesOrderHeader.properties      | 22 +++----
 22 files changed, 183 insertions(+), 134 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmAssociationEndView.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmAssociationEndView.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmAssociationEndView.java
index 2d1262e..44ef3b2 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmAssociationEndView.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmAssociationEndView.java
@@ -80,9 +80,9 @@ public interface JPAEdmAssociationEndView extends JPAEdmBaseView {
    */
   boolean compare(AssociationEnd end1, AssociationEnd end2);
 
-  String getJoinColumnName();
+  String[] getJoinColumnNames();
 
-  String getJoinColumnReferenceColumnName();
+  String[] getJoinColumnReferenceColumnNames();
 
   String getMappedByName();
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmPropertyView.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmPropertyView.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmPropertyView.java
index 419d622..3ce66d6 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmPropertyView.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmPropertyView.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata2.jpa.processor.api.model;
 
 import java.util.List;
 
-import javax.persistence.JoinColumn;
 import javax.persistence.metamodel.Attribute;
 
 import org.apache.olingo.odata2.api.edm.provider.Property;
@@ -115,7 +114,8 @@ public interface JPAEdmPropertyView extends JPAEdmBaseView {
   /**
    * The method returns a list of JPA Join Column Annotations for the given JPA Attribute
    * @return
-   * an instance of type {@link javax.persistence.JoinColumn}
+   * a list of Array of Strings. First element in the Array represents the join column name and the second element in
+   * the array represents the referencedColumn name
    */
-  List<JoinColumn> getJPAJoinColumns();
+  List<String[]> getJPAJoinColumns();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
index 1314ed2..9543bfe 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
@@ -260,6 +260,11 @@ public final class JPAEntityParser {
 
   public static String getString(final Clob clob) throws ODataJPARuntimeException {
     try {
+
+      if (clob == null) {
+        return null;
+      }
+
       Reader stringReader = clob.getCharacterStream();
       StringWriter buffer = null;
       long clobSize = clob.length();
@@ -307,8 +312,13 @@ public final class JPAEntityParser {
 
   public static byte[] getBytes(final Blob blob) throws ODataJPARuntimeException {
     try {
+
+      if (blob == null) {
+        return null;
+      }
       InputStream is = null;
       ByteArrayOutputStream buffer = null;
+
       long blobSize = blob.length();
       long remainingBlobSize = blobSize;
       int len = 0;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmNameBuilder.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmNameBuilder.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmNameBuilder.java
index 1f0e152..75878e6 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmNameBuilder.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmNameBuilder.java
@@ -22,7 +22,6 @@ import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Field;
 
 import javax.persistence.Column;
-import javax.persistence.JoinColumn;
 import javax.persistence.metamodel.Attribute;
 import javax.persistence.metamodel.ManagedType;
 import javax.persistence.metamodel.PluralAttribute;
@@ -129,6 +128,7 @@ public class JPAEdmNameBuilder {
     Attribute<?, ?> jpaAttribute = view.getJPAAttribute();
     String jpaAttributeName = jpaAttribute.getName();
     String propertyName = null;
+    String[] joinColumnNames = null;
 
     JPAEdmMappingModelAccess mappingModelAccess = view.getJPAEdmMappingModelAccess();
     if (mappingModelAccess != null && mappingModelAccess.isMappingModelExists()) {
@@ -147,7 +147,8 @@ public class JPAEdmNameBuilder {
     } else if (propertyName == null) {
       propertyName = jpaAttributeName;
       if (isForeignKey == true) {
-        propertyName = FK_PREFIX + UNDERSCORE + propertyName;
+        joinColumnNames = view.getJPAJoinColumns().get(view.getJPAJoinColumns().size() - 1);
+        propertyName = FK_PREFIX + UNDERSCORE + joinColumnNames[0];
       }
     }
 
@@ -162,9 +163,8 @@ public class JPAEdmNameBuilder {
       if (column != null) {
         mapping.setJPAColumnName(column.name());
       } else {
-        JoinColumn joinColumn = annotatedElement.getAnnotation(JoinColumn.class);
-        if (joinColumn != null) {
-          mapping.setJPAColumnName(joinColumn.name());
+        if (joinColumnNames != null) {
+          mapping.setJPAColumnName(joinColumnNames[0]);
           jpaAttributeName += "." + view.getJPAReferencedAttribute().getName();
         }
       }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
index 685ee83..063b297 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
@@ -23,7 +23,7 @@ import java.math.BigDecimal;
 import java.sql.Blob;
 import java.sql.Clob;
 import java.util.Calendar;
-import java.util.Date;
+import java.sql.Date;
 import java.util.UUID;
 
 import javax.persistence.Lob;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociation.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociation.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociation.java
index 537a4f8..9f35c3a 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociation.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociation.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata2.jpa.processor.core.model;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -94,11 +95,13 @@ public class JPAEdmAssociation extends JPAEdmBaseViewImpl implements JPAEdmAssoc
         if (association != null) {
           if (view.compare(association.getEnd1(), association.getEnd2())) {
             JPAEdmAssociationEndView associationEnd = associationEndMap.get(association.getName());
-            if (associationEnd.getJoinColumnName() != null && associationEnd.getJoinColumnReferenceColumnName() != null
-                && view.getJoinColumnName() != null && view.getJoinColumnReferenceColumnName() != null) {
-              if (view.getJoinColumnName().equals(associationEnd.getJoinColumnName())
-                  && view.getJoinColumnReferenceColumnName()
-                      .equals(associationEnd.getJoinColumnReferenceColumnName())) {
+            if (associationEnd.getJoinColumnNames() != null
+                && associationEnd.getJoinColumnReferenceColumnNames() != null
+                && view.getJoinColumnNames() != null && view.getJoinColumnReferenceColumnNames() != null) {
+              if (Arrays.equals(view.getJoinColumnNames(), associationEnd.getJoinColumnNames())
+                  &&
+                  Arrays.equals(view.getJoinColumnReferenceColumnNames(), associationEnd
+                      .getJoinColumnReferenceColumnNames())) {
                 currentAssociation = association;
                 return association;
               }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationEnd.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationEnd.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationEnd.java
index 0fdaee0..d3af0e9 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationEnd.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationEnd.java
@@ -19,8 +19,9 @@
 package org.apache.olingo.odata2.jpa.processor.core.model;
 
 import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Array;
+import java.util.List;
 
-import javax.persistence.JoinColumn;
 import javax.persistence.ManyToMany;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
@@ -41,8 +42,8 @@ public class JPAEdmAssociationEnd extends JPAEdmBaseViewImpl implements JPAEdmAs
   private JPAEdmPropertyView propertyView = null;
   private AssociationEnd currentAssociationEnd1 = null;
   private AssociationEnd currentAssociationEnd2 = null;
-  private String columnName;
-  private String referencedColumnName;
+  private String[] columnNames;
+  private String[] referencedColumnNames;
   private String mappedBy;
   private String ownerPropertyName;
 
@@ -76,8 +77,6 @@ public class JPAEdmAssociationEnd extends JPAEdmBaseViewImpl implements JPAEdmAs
     @Override
     public void build() throws ODataJPAModelException {
 
-      JoinColumn joinColumn = null;
-
       currentAssociationEnd1 = new AssociationEnd();
       currentAssociationEnd2 = new AssociationEnd();
 
@@ -88,17 +87,17 @@ public class JPAEdmAssociationEnd extends JPAEdmBaseViewImpl implements JPAEdmAs
 
       setEdmMultiplicity(propertyView.getJPAAttribute().getPersistentAttributeType());
 
-      AnnotatedElement annotatedElement = (AnnotatedElement) propertyView.getJPAAttribute().getJavaMember();
-      if (annotatedElement != null) {
-        joinColumn = annotatedElement.getAnnotation(JoinColumn.class);
-        if (joinColumn != null) {
-          columnName = joinColumn.name();
-          referencedColumnName = joinColumn.referencedColumnName();
+      List<String[]> joinColumnNames = propertyView.getJPAJoinColumns();
+      if (joinColumnNames != null) {
+        int i = 0;
+        columnNames = (String[]) Array.newInstance(String.class, joinColumnNames.size());
+        referencedColumnNames = (String[]) Array.newInstance(String.class, joinColumnNames.size());
+        for (String[] jc : joinColumnNames) {
+          columnNames[i] = jc[0];
+          referencedColumnNames[i++] = jc[1];
         }
-
       }
       ownerPropertyName = propertyView.getJPAAttribute().getName();
-
     }
 
     private void setEdmMultiplicity(final PersistentAttributeType type) {
@@ -161,13 +160,13 @@ public class JPAEdmAssociationEnd extends JPAEdmBaseViewImpl implements JPAEdmAs
   }
 
   @Override
-  public String getJoinColumnName() {
-    return columnName;
+  public String[] getJoinColumnNames() {
+    return columnNames;
   }
 
   @Override
-  public String getJoinColumnReferenceColumnName() {
-    return referencedColumnName;
+  public String[] getJoinColumnReferenceColumnNames() {
+    return referencedColumnNames;
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
index 0726626..dbae270 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
@@ -74,7 +74,7 @@ public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
   private Attribute<?, ?> currentRefAttribute;
   private boolean isBuildModeComplexType;
   private Map<String, Integer> associationCount;
-  private ArrayList<JoinColumn> bJoinColumns = null;
+  private ArrayList<String[]> joinColumnNames = null;
 
   public JPAEdmProperty(final JPAEdmSchemaView view) {
     super(view);
@@ -140,8 +140,8 @@ public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
   }
 
   @Override
-  public List<JoinColumn> getJPAJoinColumns() {
-    return bJoinColumns;
+  public List<String[]> getJPAJoinColumns() {
+    return joinColumnNames;
   }
 
   private class JPAEdmPropertyBuilder implements JPAEdmBuilder {
@@ -348,7 +348,7 @@ public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
         ODataJPARuntimeException {
 
       AnnotatedElement annotatedElement = (AnnotatedElement) jpaAttribute.getJavaMember();
-      bJoinColumns = null;
+      joinColumnNames = null;
       if (annotatedElement == null) {
         return;
       }
@@ -356,27 +356,52 @@ public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
       if (joinColumn == null) {
         JoinColumns joinColumns = annotatedElement.getAnnotation(JoinColumns.class);
         if (joinColumns != null) {
-          return;
+          for (JoinColumn jc : joinColumns.value()) {
+            buildForeignKey(jc, jpaAttribute);
+          }
         }
       } else {
-        bJoinColumns = bJoinColumns == null ? new ArrayList<JoinColumn>() : bJoinColumns;
-        bJoinColumns.add(joinColumn);
-        if (joinColumn.insertable() && joinColumn.updatable()) {
-          EntityType<?> referencedEntityType = metaModel.entity(jpaAttribute.getJavaType());
-          for (Attribute<?, ?> referencedAttribute : referencedEntityType.getAttributes()) {
-            AnnotatedElement annotatedElement2 = (AnnotatedElement) referencedAttribute.getJavaMember();
-            if (annotatedElement2 != null) {
-              Column referencedColumn = annotatedElement2.getAnnotation(Column.class);
-              if (referencedColumn != null && referencedColumn.name().equals((joinColumn.referencedColumnName()))) {
-                currentRefAttribute = referencedAttribute;
-                currentSimpleProperty = new SimpleProperty();
-                properties.add(buildSimpleProperty(currentRefAttribute, currentSimpleProperty, true));
-                break;
-              }
+        buildForeignKey(joinColumn, jpaAttribute);
+      }
+    }
+
+    private void buildForeignKey(JoinColumn joinColumn, Attribute<?, ?> jpaAttribute) throws ODataJPAModelException,
+        ODataJPARuntimeException {
+      joinColumnNames = joinColumnNames == null ? new ArrayList<String[]>() : joinColumnNames;
+      String[] name = { null, null };
+      name[0] = joinColumn.name().equals("") == true ? jpaAttribute.getName() : joinColumn.name();
+
+      EntityType<?> referencedEntityType = metaModel.entity(jpaAttribute.getJavaType());
+      if (joinColumn.referencedColumnName().equals("")) {
+        for (Attribute<?, ?> referencedAttribute : referencedEntityType.getAttributes()) {
+          if (referencedAttribute.getPersistentAttributeType() == PersistentAttributeType.BASIC &&
+              ((SingularAttribute<?, ?>) referencedAttribute).isId()) {
+            name[1] = referencedAttribute.getName();
+            joinColumnNames.add(name);
+            currentRefAttribute = referencedAttribute;
+            break;
+          }
+        }
+      } else {
+        for (Attribute<?, ?> referencedAttribute : referencedEntityType.getAttributes()) {
+          AnnotatedElement annotatedElement2 = (AnnotatedElement) referencedAttribute.getJavaMember();
+          if (annotatedElement2 != null) {
+            Column referencedColumn = annotatedElement2.getAnnotation(Column.class);
+            if (referencedColumn != null && referencedColumn.name().equals((joinColumn.referencedColumnName()))) {
+              name[1] = referencedColumn.name();
+              joinColumnNames.add(name);
+              currentRefAttribute = referencedAttribute;
+              break;
             }
           }
         }
       }
+
+      if (joinColumn.insertable() && joinColumn.updatable()) {
+        currentSimpleProperty = new SimpleProperty();
+        properties.add(buildSimpleProperty(currentRefAttribute, currentSimpleProperty, true));
+      }
+
     }
 
     @SuppressWarnings("rawtypes")

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRole.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRole.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRole.java
index b36398a..94905e9 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRole.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRole.java
@@ -23,7 +23,6 @@ import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.persistence.JoinColumn;
 import javax.persistence.metamodel.Attribute;
 
 import org.apache.olingo.odata2.api.edm.provider.Association;
@@ -48,9 +47,8 @@ public class JPAEdmReferentialConstraintRole extends JPAEdmBaseViewImpl implemen
   private JPAEdmReferentialConstraintRoleView.RoleType roleType;
 
   private Attribute<?, ?> jpaAttribute;
-  private ArrayList<String> jpaColumnNames;
+  private List<String[]> jpaColumnNames;
   private Association association;
-  private List<JoinColumn> bufferedJoinColumns = null;
 
   private boolean roleExists = false;
 
@@ -66,7 +64,7 @@ public class JPAEdmReferentialConstraintRole extends JPAEdmBaseViewImpl implemen
     this.roleType = roleType;
 
     jpaAttribute = propertyView.getJPAAttribute();
-    bufferedJoinColumns = propertyView.getJPAJoinColumns();
+    jpaColumnNames = propertyView.getJPAJoinColumns();
     association = associationView.getEdmAssociation();
 
   }
@@ -133,21 +131,12 @@ public class JPAEdmReferentialConstraintRole extends JPAEdmBaseViewImpl implemen
       firstBuild = false;
       isConsistent = false;
 
-      if (bufferedJoinColumns == null || bufferedJoinColumns.isEmpty()) {
+      if (jpaColumnNames == null || jpaColumnNames.isEmpty()) {
         roleExists = false;
         return;
       } else {
         roleExists = true;
       }
-      jpaColumnNames = new ArrayList<String>();
-
-      for (JoinColumn joinColumn : bufferedJoinColumns) {
-        if (roleType == RoleType.PRINCIPAL) {
-          jpaColumnNames.add(joinColumn.referencedColumnName());
-        } else if (roleType == RoleType.DEPENDENT) {
-          jpaColumnNames.add(joinColumn.name());
-        }
-      }
     }
 
     private void buildRole() throws SecurityException, NoSuchFieldException {
@@ -174,9 +163,12 @@ public class JPAEdmReferentialConstraintRole extends JPAEdmBaseViewImpl implemen
 
         List<PropertyRef> propertyRefs = new ArrayList<PropertyRef>();
         if (edmEntityType != null) {
-          for (String columnName : jpaColumnNames) {
+          for (String[] columnName : jpaColumnNames) {
             for (Property property : edmEntityType.getProperties()) {
-              if (columnName.equals(((JPAEdmMapping) property.getMapping()).getJPAColumnName())) {
+              if (columnName[0].equals(((JPAEdmMapping) property.getMapping()).getJPAColumnName()) ||
+                  columnName[0].equals(property.getName()) ||
+                  columnName[1].equals(((JPAEdmMapping) property.getMapping()).getJPAColumnName()) ||
+                  columnName[1].equals(property.getName())) {
                 PropertyRef propertyRef = new PropertyRef();
                 propertyRef.setName(property.getName());
                 propertyRefs.add(propertyRef);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationTest.java
index 186a864..eea4433 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmAssociationTest.java
@@ -28,7 +28,9 @@ import java.lang.annotation.Annotation;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Field;
 import java.lang.reflect.Member;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.persistence.JoinColumn;
@@ -59,6 +61,7 @@ public class JPAEdmAssociationTest extends JPAEdmTestModelView {
   private JPAEdmAssociationTest localView = null;
   private static final String PUNIT_NAME = "salesorderprocessing";
   private int variant;
+  private List<String[]> joinColumnNames = null;
 
   @Before
   public void setup() {
@@ -183,6 +186,18 @@ public class JPAEdmAssociationTest extends JPAEdmTestModelView {
   @Test
   public void testSearchAssociation1() {
     class TestAssociationEndView extends JPAEdmTestModelView {
+
+      @Override
+      public List<String[]> getJPAJoinColumns() {
+        if (joinColumnNames == null) {
+
+          joinColumnNames = new ArrayList<String[]>();
+          String[] names = { "SOID", "DEMO_ID" };
+          joinColumnNames.add(names);
+        }
+        return joinColumnNames;
+      }
+
       @Override
       public String getEdmRelationShipName() {
         return "SalesOrderHeader_String1";
@@ -199,13 +214,13 @@ public class JPAEdmAssociationTest extends JPAEdmTestModelView {
       }
 
       @Override
-      public String getJoinColumnName() {
-        return "SO_ID";
+      public String[] getJoinColumnNames() {
+        return new String[] { "SO_ID" };
       }
 
       @Override
-      public String getJoinColumnReferenceColumnName() {
-        return "DEMO_ID";
+      public String[] getJoinColumnReferenceColumnNames() {
+        return new String[] { "DEMO_ID" };
       }
 
       @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRoleTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRoleTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRoleTest.java
index cee6ead..656af8d 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRoleTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRoleTest.java
@@ -55,7 +55,7 @@ public class JPAEdmReferentialConstraintRoleTest extends JPAEdmTestModelView {
 
   private static JPAEdmReferentialConstraintRole objJPAEdmReferentialConstraintRole = null;
   private static JPAEdmReferentialConstraintRoleTest objJPAEdmReferentialConstraintRoleTest = null;
-  private List<JoinColumn> bufferedJoinColumns = null;
+  private List<String[]> joinColumnNames = null;
 
   @Before
   public void setUp() {
@@ -148,18 +148,14 @@ public class JPAEdmReferentialConstraintRoleTest extends JPAEdmTestModelView {
   }
 
   @Override
-  public List<JoinColumn> getJPAJoinColumns() {
-    if (bufferedJoinColumns == null) {
-      JoinColumn joinColumn = EasyMock.createMock(JoinColumn.class);
-      EasyMock.expect(joinColumn.referencedColumnName()).andReturn("SOID");
-      EasyMock.expect(joinColumn.name()).andReturn("SOID");
-
-      EasyMock.replay(joinColumn);
+  public List<String[]> getJPAJoinColumns() {
+    if (joinColumnNames == null) {
 
-      bufferedJoinColumns = new ArrayList<JoinColumn>();
-      bufferedJoinColumns.add(joinColumn);
+      joinColumnNames = new ArrayList<String[]>();
+      String[] names = { "SOID", "SOID" };
+      joinColumnNames.add(names);
     }
-    return bufferedJoinColumns;
+    return joinColumnNames;
   }
 
   @Override
@@ -244,8 +240,6 @@ public class JPAEdmReferentialConstraintRoleTest extends JPAEdmTestModelView {
 
       EasyMock.replay(joinColumn);
 
-      bufferedJoinColumns = new ArrayList<JoinColumn>();
-      bufferedJoinColumns.add(joinColumn);
       return (T) joinColumn;
     }
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintTest.java
index 86181b7..1e26654 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintTest.java
@@ -50,7 +50,7 @@ public class JPAEdmReferentialConstraintTest extends JPAEdmTestModelView {
 
   private static JPAEdmReferentialConstraint objJPAEdmReferentialConstraint = null;
   private static JPAEdmReferentialConstraintTest objJPAEdmReferentialConstraintTest = null;
-  private List<JoinColumn> bufferedJoinColumns = null;
+  private List<String[]> joinColumnNames = null;
 
   @Before
   public void setUp() {
@@ -129,18 +129,14 @@ public class JPAEdmReferentialConstraintTest extends JPAEdmTestModelView {
   }
 
   @Override
-  public List<JoinColumn> getJPAJoinColumns() {
-    if (bufferedJoinColumns == null) {
-      JoinColumn joinColumn = EasyMock.createMock(JoinColumn.class);
-      EasyMock.expect(joinColumn.referencedColumnName()).andReturn("SOID");
-      EasyMock.expect(joinColumn.name()).andReturn("SOID");
-
-      EasyMock.replay(joinColumn);
+  public List<String[]> getJPAJoinColumns() {
+    if (joinColumnNames == null) {
 
-      bufferedJoinColumns = new ArrayList<JoinColumn>();
-      bufferedJoinColumns.add(joinColumn);
+      joinColumnNames = new ArrayList<String[]>();
+      String[] names = { "SOID", "SOID" };
+      joinColumnNames.add(names);
     }
-    return bufferedJoinColumns;
+    return joinColumnNames;
   }
 
   @SuppressWarnings("hiding")

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmTestModelView.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmTestModelView.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmTestModelView.java
index 639ad52..df20a50 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmTestModelView.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmTestModelView.java
@@ -21,7 +21,6 @@ package org.apache.olingo.odata2.jpa.processor.core.model;
 import java.util.HashMap;
 import java.util.List;
 
-import javax.persistence.JoinColumn;
 import javax.persistence.metamodel.Attribute;
 import javax.persistence.metamodel.EmbeddableType;
 import javax.persistence.metamodel.Metamodel;
@@ -357,13 +356,13 @@ public class JPAEdmTestModelView implements JPAEdmAssociationEndView, JPAEdmAsso
   }
 
   @Override
-  public String getJoinColumnName() {
+  public String[] getJoinColumnNames() {
     // TODO Auto-generated method stub
     return null;
   }
 
   @Override
-  public String getJoinColumnReferenceColumnName() {
+  public String[] getJoinColumnReferenceColumnNames() {
     // TODO Auto-generated method stub
     return null;
   }
@@ -405,7 +404,7 @@ public class JPAEdmTestModelView implements JPAEdmAssociationEndView, JPAEdmAsso
   }
 
   @Override
-  public List<JoinColumn> getJPAJoinColumns() {
+  public List<String[]> getJPAJoinColumns() {
     // TODO Auto-generated method stub
     return null;
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/converter/BlobToByteConverter.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/converter/BlobToByteConverter.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/converter/BlobToByteConverter.java
index b6b01cf..e950d69 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/converter/BlobToByteConverter.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/converter/BlobToByteConverter.java
@@ -34,6 +34,9 @@ public class BlobToByteConverter implements AttributeConverter<Blob, byte[]> {
 
   @Override
   public byte[] convertToDatabaseColumn(final Blob arg0) {
+    if (arg0 == null) {
+      return null;
+    }
     ByteArrayOutputStream buffer = new ByteArrayOutputStream();
     InputStream is;
     try {
@@ -55,6 +58,9 @@ public class BlobToByteConverter implements AttributeConverter<Blob, byte[]> {
   @Override
   public Blob convertToEntityAttribute(final byte[] arg0) {
     try {
+      if (arg0 == null) {
+        return null;
+      }
       return new JDBCBlob(arg0);
     } catch (SQLException e) {
       e.printStackTrace();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Category.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Category.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Category.java
index 22e2966..f0ff23f 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Category.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Category.java
@@ -35,6 +35,10 @@ public class Category {
   @Column(name = "CODE")
   private char code[] = new char[2];
 
+  @Id
+  @Column(name = "ID")
+  private long id;
+
   @Column(name = "DESC")
   private String description;
 
@@ -49,6 +53,14 @@ public class Category {
     this.materials = materials;
   }
 
+  public long getId() {
+    return id;
+  }
+
+  public void setId(long id) {
+    this.id = id;
+  }
+
   public char[] getCode() {
     return code;
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Material.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Material.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Material.java
index 356909f..8a2ef0c 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Material.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Material.java
@@ -28,18 +28,14 @@ import javax.persistence.Convert;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
+import javax.persistence.JoinColumns;
 import javax.persistence.Lob;
 import javax.persistence.ManyToMany;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
-import org.eclipse.persistence.annotations.Converter;
-
 @Entity
 @Table(name = "T_MATERIAL")
-@Converter(
-    name = "BlobToByteConverter",
-    converterClass = org.apache.olingo.odata2.jpa.processor.ref.converter.BlobToByteConverter.class)
 public class Material {
 
   public Material() {}
@@ -82,7 +78,8 @@ public class Material {
   private List<Store> stores = new ArrayList<Store>();
 
   @ManyToOne
-  @JoinColumn(name = "TYPE_CODE", referencedColumnName = "CODE")
+  @JoinColumns({ @JoinColumn(name = "TYPE_CODE", referencedColumnName = "CODE"),
+      @JoinColumn(name = "CAT_ID", referencedColumnName = "ID") })
   private Category category;
 
   public long getMaterialId() {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderHeader.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderHeader.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderHeader.java
index f54bbe7..0525017 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderHeader.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderHeader.java
@@ -89,7 +89,7 @@ public class SalesOrderHeader {
   private List<Note> notes = new ArrayList<Note>();
 
   @ManyToOne
-  @JoinColumn(name = "CUST_ID", referencedColumnName = "ID")
+  @JoinColumn
   private Customer customer;
 
   public Customer getCustomer() {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderItem.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderItem.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderItem.java
index 44bf6c2..a819ff0 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderItem.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderItem.java
@@ -69,7 +69,7 @@ public class SalesOrderItem {
     delivered = deliveryStatus;
   }
 
-  @JoinColumn(name = "Material_Id", referencedColumnName = "MATERIAL_ID")
+  @JoinColumn(name = "Material_Id")
   @ManyToOne
   private Material material;
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java b/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
index 938e00d..256ffdd 100644
--- a/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
+++ b/odata2-jpa-processor/jpa-web/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/web/JPAReferenceServiceFactory.java
@@ -47,6 +47,7 @@ public class JPAReferenceServiceFactory extends ODataJPAServiceFactory {
     oDataJPAContext
         .setJPAEdmExtension((JPAEdmExtension) new SalesOrderProcessingExtension());
     oDataJPAContext.setPageSize(PAGE_SIZE);
+    oDataJPAContext.setDefaultNaming(false);
     setErrorLevel();
     setOnWriteJPAContent(onDBWriteContent);
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Category.properties
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Category.properties b/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Category.properties
index 86d4a13..d9b44e6 100644
--- a/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Category.properties
+++ b/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Category.properties
@@ -16,7 +16,7 @@
 #        specific language governing permissions and limitations
 #        under the License.
 #-------------------------------------------------------------------------------
-query_1 = INSERT INTO T_CATEGORY (CODE,DESC) VALUES('P1','Pen');
-query_2 = INSERT INTO T_CATEGORY (CODE,DESC) VALUES('P2','Pencil');
-query_3 = INSERT INTO T_CATEGORY (CODE,DESC) VALUES('S1','Sharpner');
-query_4 = INSERT INTO T_CATEGORY (CODE,DESC) VALUES('E1','Eraser');
\ No newline at end of file
+query_1 = INSERT INTO T_CATEGORY (CODE,ID,DESC) VALUES('P1',1,'Pen');
+query_2 = INSERT INTO T_CATEGORY (CODE,ID,DESC) VALUES('P2',1,'Pencil');
+query_3 = INSERT INTO T_CATEGORY (CODE,ID,DESC) VALUES('S1',2,'Sharpner');
+query_4 = INSERT INTO T_CATEGORY (CODE,ID,DESC) VALUES('E1',3,'Eraser');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Material.properties
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Material.properties b/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Material.properties
index 7ea5ade..653fafd 100644
--- a/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Material.properties
+++ b/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Material.properties
@@ -17,14 +17,14 @@
 #        under the License.
 #-------------------------------------------------------------------------------
 
-material_query_1 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(111, 'My Pen', 'P1', 111.1, 'Piece');
-material_query_2 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(112, 'My Great Pen', 'P1', 112.1, 'Piece');
-material_query_3 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(113, 'Super Pen', 'P1', 113.1, 'Piece');
-material_query_4 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(114, 'Marvel Pen', 'P1', 114.1, 'Piece');
-material_query_5 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(115, 'Smooth', 'P2', 115.1, 'Piece');
-material_query_6 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(116, 'Silver Line', 'P2', 116.1, 'Piece');
-material_query_7 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(117, 'Dark Line', 'P2', 117.1, 'Piece');
-material_query_8 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(118, 'Sharp', 'S1', 118.1, 'Piece');
-material_query_9 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(119, 'Cut Sharp', 'S1', 119.1, 'Piece');
-material_query_10 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(120, 'Thin line', 'S1', 120.1, 'Piece');
-material_query_11 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, PRICE, MEASUREMENT_UNIT) values(121, 'Clean', 'E1', 121.1, 'Piece');
\ No newline at end of file
+material_query_1 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(111, 'My Pen', 'P1', 1, 111.1, 'Piece');
+material_query_2 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(112, 'My Great Pen', 'P1', 1, 112.1, 'Piece');
+material_query_3 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(113, 'Super Pen', 'P1', 1, 113.1, 'Piece');
+material_query_4 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(114, 'Marvel Pen', 'P1', 1, 114.1, 'Piece');
+material_query_5 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(115, 'Smooth', 'P2', 1, 115.1, 'Piece');
+material_query_6 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(116, 'Silver Line', 'P2', 1, 116.1, 'Piece');
+material_query_7 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(117, 'Dark Line', 'P2', 1, 117.1, 'Piece');
+material_query_8 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(118, 'Sharp', 'S1', 2, 118.1, 'Piece');
+material_query_9 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(119, 'Cut Sharp', 'S1', 2, 119.1, 'Piece');
+material_query_10 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(120, 'Thin line', 'S1', 2, 120.1, 'Piece');
+material_query_11 = insert into T_MATERIAL (MATERIAL_ID , MATERIAL_NAME, TYPE_CODE, CAT_ID, PRICE, MEASUREMENT_UNIT) values(121, 'Clean', 'E1', 3, 121.1, 'Piece');
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/13093430/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_SalesOrderHeader.properties
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_SalesOrderHeader.properties b/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_SalesOrderHeader.properties
index b5ebf24..8b519bf 100644
--- a/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_SalesOrderHeader.properties
+++ b/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_SalesOrderHeader.properties
@@ -17,14 +17,14 @@
 #        under the License.
 #-------------------------------------------------------------------------------
 
-query1 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(1, 100, 'INR', '01', '2012-11-01 00:01:00');
-query2 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(2, 100, 'USD', '01', '2013-01-02 00:00:00');
-query3 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(3, 100, 'USD', '02', '2013-01-01 14:00:00');
-query4 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(4, 200, 'INR', '01', '2013-01-02 00:00:00');
-query5 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(5, 201, 'INR', '02', '2013-01-01 14:14:14');
-query6 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(6, 101, 'EUR', '01', '2013-01-02 00:00:00');
-query7 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(7, 201, 'EUR', '02', '2013-01-01 14:14:00');
-query8 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(8, 201, 'GBR', '01', '2013-01-02 00:00:00');
-query9 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(9, 101, 'GBR', '02', '2013-01-01 00:00:00');
-query10 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(10, 100, 'AUD', '01', '2013-01-01 00:00:00');
-query11 = insert into T_SALESORDERHEADER (SO_ID, CUST_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(11, 202, 'AUD', '02', '2013-01-02 00:00:00');
\ No newline at end of file
+query1 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(1, 100, 'INR', '01', '2012-11-01 00:01:00');
+query2 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(2, 100, 'USD', '01', '2013-01-02 00:00:00');
+query3 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(3, 100, 'USD', '02', '2013-01-01 14:00:00');
+query4 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(4, 200, 'INR', '01', '2013-01-02 00:00:00');
+query5 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(5, 201, 'INR', '02', '2013-01-01 14:14:14');
+query6 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(6, 101, 'EUR', '01', '2013-01-02 00:00:00');
+query7 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(7, 201, 'EUR', '02', '2013-01-01 14:14:00');
+query8 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(8, 201, 'GBR', '01', '2013-01-02 00:00:00');
+query9 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(9, 101, 'GBR', '02', '2013-01-01 00:00:00');
+query10 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(10, 100, 'AUD', '01', '2013-01-01 00:00:00');
+query11 = insert into T_SALESORDERHEADER (SO_ID, customer_ID, CURRENCY_CODE, DELIVERY_STATUS, creationDate) values(11, 202, 'AUD', '02', '2013-01-02 00:00:00');
\ No newline at end of file


[37/50] [abbrv] git commit: [OLINGO-379] Add gitattributes file to make tests work

Posted by mi...@apache.org.
[OLINGO-379] Add gitattributes file to make tests work

All test resource files are changed when commiting them to Unix line
endings. To prevent this in the case of the batch test resources we need
this gitattributes file


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/2d5a019b
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/2d5a019b
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/2d5a019b

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 2d5a019b7482d367a271858a423fd0a4b54875f7
Parents: 3c6d937
Author: Christian Amend <ch...@apache.org>
Authored: Fri Jul 25 17:20:36 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Fri Jul 25 17:20:36 2014 +0200

----------------------------------------------------------------------
 .gitattributes | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/2d5a019b/.gitattributes
----------------------------------------------------------------------
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..aee8603
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,6 @@
+# Set the default behavior, in case people don't have core.autocrlf set.
+* text=auto
+
+# Declare files that will always have CRLF line endings on checkout.
+# We need this for our batch parsing tests
+*.batch text eol=crlf
\ No newline at end of file


[43/50] [abbrv] git commit: [OLINGO-388] Duplicate system query options throw exception

Posted by mi...@apache.org.
[OLINGO-388] Duplicate system query options throw exception


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/575c59ff
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/575c59ff
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/575c59ff

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 575c59ff7106ddcb542c9e806c0302775f83c140
Parents: d9e9038
Author: Christian Holzer <c....@sap.com>
Authored: Mon Aug 11 14:25:08 2014 +0200
Committer: Michael Bolz <mi...@apache.org>
Committed: Tue Aug 12 10:33:06 2014 +0200

----------------------------------------------------------------------
 .../odata2/api/processor/ODataRequest.java      | 14 ++++-
 .../apache/olingo/odata2/api/uri/UriParser.java | 16 +++++
 .../odata2/api/uri/UriSyntaxException.java      |  2 +
 .../olingo/odata2/core/ODataRequestHandler.java |  2 +-
 .../olingo/odata2/core/ODataRequestImpl.java    | 45 +++++++++++---
 .../odata2/core/rest/ODataSubLocator.java       |  2 +-
 .../odata2/core/servlet/ODataServlet.java       |  2 +-
 .../olingo/odata2/core/servlet/RestUtil.java    | 30 ++++++++++
 .../olingo/odata2/core/uri/UriParserImpl.java   | 62 +++++++++++++++-----
 .../src/main/resources/i18n.properties          |  1 +
 .../core/ODataRequestHandlerValidationTest.java | 16 +++++
 .../olingo/odata2/core/uri/UriParserTest.java   | 42 +++++++++----
 .../fit/basic/HttpExceptionResponseTest.java    | 13 +++-
 .../fit/basic/LanguageNegotiationTest.java      |  6 +-
 .../src/test/resources/i18n.properties          | 22 -------
 .../src/test/resources/i18n_it.properties       |  1 +
 16 files changed, 212 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataRequest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataRequest.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataRequest.java
index 7dfa43e..8c3190f 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataRequest.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataRequest.java
@@ -50,7 +50,9 @@ public abstract class ODataRequest {
   public abstract List<String> getAcceptHeaders();
 
   public abstract Map<String, String> getQueryParameters();
-
+  
+  public abstract Map<String, List<String>> getAllQueryParameters();
+  
   public static ODataRequestBuilder requestHeaders(final Map<String, List<String>> headers) {
     return newBuilder().requestHeaders(headers);
   }
@@ -82,7 +84,11 @@ public abstract class ODataRequest {
   public static ODataRequestBuilder queryParameters(final Map<String, String> queryParameters) {
     return newBuilder().queryParameters(queryParameters);
   }
-
+  
+  public static ODataRequestBuilder allQueryParameters(final Map<String, List<String>> allQueryParameters) {
+    return newBuilder().allQueryParameters(allQueryParameters);
+  }
+  
   public static ODataRequestBuilder fromRequest(final ODataRequest request) {
     return newBuilder().fromRequest(request);
   }
@@ -119,7 +125,9 @@ public abstract class ODataRequest {
     public abstract ODataRequestBuilder acceptHeaders(List<String> acceptHeaders);
 
     public abstract ODataRequestBuilder queryParameters(Map<String, String> queryParameters);
-
+    
+    public abstract ODataRequestBuilder allQueryParameters(Map<String, List<String>> queryParameters);
+    
     public abstract ODataRequestBuilder fromRequest(ODataRequest request);
 
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/UriParser.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/UriParser.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/UriParser.java
index 8db63e8..4032306 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/UriParser.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/UriParser.java
@@ -55,6 +55,8 @@ public abstract class UriParser {
 
   /**
    * Parses path segments and query parameters.
+   * This method ignores redundant system query parameters.
+   * 
    * @param pathSegments list of path segments
    * @param queryParameters query parameters
    * @return {@link UriInfo} information about the parsed URI
@@ -66,6 +68,20 @@ public abstract class UriParser {
       throws UriSyntaxException, UriNotMatchingException, EdmException;
 
   /**
+   * Parses path segments and query parameters.
+   * Throws an exception if there are redundant system query parameters.
+   * 
+   * @param pathSegments list of path segments
+   * @param queryParameters query parameters
+   * @return {@link UriInfo} information about the parsed URI
+   * @throws UriSyntaxException
+   * @throws UriNotMatchingException
+   * @throws EdmException
+   */
+  public abstract UriInfo parseAll(List<PathSegment> pathSegments, Map<String, List<String>> allQueryParameters)
+      throws UriSyntaxException, UriNotMatchingException, EdmException;
+  
+  /**
    * Parses a $filter expression string and create an expression tree.
    * <p>The current expression parser supports expressions as defined in the
    * OData specification 2.0 with the following restrictions:

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/UriSyntaxException.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/UriSyntaxException.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/UriSyntaxException.java
index f719343..480f38d 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/UriSyntaxException.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/uri/UriSyntaxException.java
@@ -44,6 +44,8 @@ public class UriSyntaxException extends ODataBadRequestException {
       "MISSINGKEYPREDICATENAME");
   public static final MessageReference DUPLICATEKEYNAMES = createMessageReference(UriSyntaxException.class,
       "DUPLICATEKEYNAMES");
+  public static final MessageReference DUPLICATESYSTEMQUERYPARAMETES = createMessageReference(UriSyntaxException.class,
+      "DUPLICATESYSTEMQUERYPARAMETES");
   public static final MessageReference EMPTYSEGMENT = createMessageReference(UriSyntaxException.class, "EMPTYSEGMENT");
   public static final MessageReference MUSTNOTBELASTSEGMENT = createMessageReference(UriSyntaxException.class,
       "MUSTNOTBELASTSEGMENT");

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java
index 0b1da19..2f169aa 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestHandler.java
@@ -104,7 +104,7 @@ public class ODataRequestHandler {
 
       final List<PathSegment> pathSegments = context.getPathInfo().getODataSegments();
       int timingHandle2 = context.startRuntimeMeasurement("UriParserImpl", "parse");
-      uriInfo = (UriInfoImpl) uriParser.parse(pathSegments, request.getQueryParameters());
+      uriInfo = (UriInfoImpl) uriParser.parseAll(pathSegments, request.getAllQueryParameters());
       context.stopRuntimeMeasurement(timingHandle2);
 
       final ODataHttpMethod method = request.getMethod();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
index 67e77b4..41a45a7 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata2.core;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -41,6 +42,7 @@ public class ODataRequestImpl extends ODataRequest {
   private InputStream body;
   private PathInfo pathInfo;
   private Map<String, String> queryParameters;
+  private Map<String, List<String>> allQueryParameters;
   private List<String> acceptHeaders;
   private ContentType contentType;
   private List<Locale> acceptableLanguages;
@@ -91,12 +93,17 @@ public class ODataRequestImpl extends ODataRequest {
     return pathInfo;
   }
 
+  @Override
+  public Map<String, List<String>> getAllQueryParameters() {
+    return allQueryParameters;
+  }
+
   public class ODataRequestBuilderImpl extends ODataRequestBuilder {
     private ODataHttpMethod method;
     private CaseInsensitiveMap requestHeaders = new CaseInsensitiveMap();
     private InputStream body;
     private PathInfo pathInfo;
-    private Map<String, String> queryParameters;
+    private Map<String, List<String>> allQueryParameters = new HashMap<String, List<String>>();
     private List<String> acceptHeaders;
     private ContentType contentType;
     private List<Locale> acceptableLanguages;
@@ -107,10 +114,12 @@ public class ODataRequestImpl extends ODataRequest {
       ODataRequestImpl.this.requestHeaders = requestHeaders;
       ODataRequestImpl.this.body = body;
       ODataRequestImpl.this.pathInfo = pathInfo;
-      ODataRequestImpl.this.queryParameters = queryParameters;
+      queryParameters = convertMultiMaptoSingleMap(allQueryParameters);
+      ODataRequestImpl.this.allQueryParameters = allQueryParameters;
       ODataRequestImpl.this.acceptHeaders = acceptHeaders;
       ODataRequestImpl.this.contentType = contentType;
       ODataRequestImpl.this.acceptableLanguages = acceptableLanguages;
+
       return ODataRequestImpl.this;
     }
 
@@ -156,7 +165,18 @@ public class ODataRequestImpl extends ODataRequest {
 
     @Override
     public ODataRequestBuilder queryParameters(final Map<String, String> queryParameters) {
-      this.queryParameters = queryParameters;
+      for (String key : queryParameters.keySet()) {
+        List<String> parameterValues = new LinkedList<String>();
+        parameterValues.add(queryParameters.get(key));
+
+        allQueryParameters.put(key, parameterValues);
+      }
+      return this;
+    }
+
+    @Override
+    public ODataRequestBuilder allQueryParameters(final Map<String, List<String>> allQueryParameters) {
+      this.allQueryParameters = new HashMap<String, List<String>>(allQueryParameters);
       return this;
     }
 
@@ -192,16 +212,25 @@ public class ODataRequestImpl extends ODataRequest {
           acceptableLanguages.add(acceptLanguage);
         }
       }
-      if (request.getQueryParameters() != null) {
-        queryParameters = new HashMap<String, String>();
-        for (Map.Entry<String, String> queryParameter : request.getQueryParameters().entrySet()) {
+      if (request.getAllQueryParameters() != null) {
+        allQueryParameters = new HashMap<String, List<String>>();
+        for (Map.Entry<String, List<String>> queryParameter : request.getAllQueryParameters().entrySet()) {
           String queryParameterName = queryParameter.getKey();
-          queryParameters.put(queryParameterName, queryParameter.getValue());
+          allQueryParameters.put(queryParameterName, request.getAllQueryParameters().get(queryParameterName));
         }
       }
       return this;
     }
 
+    private <T, K> Map<T, K> convertMultiMaptoSingleMap(final Map<T, List<K>> multiMap) {
+      final Map<T, K> singleMap = new HashMap<T, K>();
+
+      for (T key : multiMap.keySet()) {
+        singleMap.put(key, multiMap.get(key).get(0));
+      }
+
+      return singleMap;
+    }
   }
 
   private class CaseInsensitiveMap extends HashMap<String, List<String>> {
@@ -224,4 +253,4 @@ public class ODataRequestImpl extends ODataRequest {
       return super.get(skey.toLowerCase());
     }
   }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataSubLocator.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataSubLocator.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataSubLocator.java
index 2c207bb..7ab9ee1 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataSubLocator.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rest/ODataSubLocator.java
@@ -166,7 +166,7 @@ public final class ODataSubLocator {
         .acceptHeaders(RestUtil.extractAcceptHeaders(param))
         .body(RestUtil.contentAsStream(RestUtil.extractRequestContent(param)))
         .pathInfo(RestUtil.buildODataPathInfo(param))
-        .queryParameters(RestUtil.convertToSinglevaluedMap(param.getUriInfo().getQueryParameters()))
+        .allQueryParameters(param.getUriInfo().getQueryParameters())
         .requestHeaders(param.getHttpHeaders().getRequestHeaders())
         .contentType(RestUtil.extractRequestContentType(param).toContentTypeString())
         .build();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
index 5078e4b..1d4dfe3 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
@@ -166,7 +166,7 @@ public class ODataServlet extends HttpServlet {
           .acceptHeaders(RestUtil.extractAcceptHeaders(req.getHeader(HttpHeaders.ACCEPT)))
           .acceptableLanguages(RestUtil.extractAcceptableLanguage(req.getHeader(HttpHeaders.ACCEPT_LANGUAGE)))
           .pathInfo(RestUtil.buildODataPathInfo(req, pathSplit))
-          .queryParameters(RestUtil.extractQueryParameters(req.getQueryString()))
+          .allQueryParameters(RestUtil.extractAllQueryParameters(req.getQueryString()))
           .requestHeaders(RestUtil.extractHeaders(req))
           .body(req.getInputStream())
           .build();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
index 36a1f65..6e06bc1 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
@@ -26,6 +26,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -104,6 +105,35 @@ public class RestUtil {
     return queryParametersMap;
   }
 
+  public static Map<String, List<String>> extractAllQueryParameters(final String queryString) {
+    Map<String, List<String>> allQueryParameterMap = new HashMap<String, List<String>>();
+    
+    if (queryString != null) {
+      // At first the queryString will be decoded.
+      List<String> queryParameters = Arrays.asList(Decoder.decode(queryString).split("\\&"));
+      for (String param : queryParameters) {
+        int indexOfEqualSign = param.indexOf("=");
+        
+        if (indexOfEqualSign < 0) {
+          final List<String> parameterList = allQueryParameterMap.containsKey(param) ? allQueryParameterMap.get(param) 
+              : new LinkedList<String>();
+         allQueryParameterMap.put(param, parameterList);
+          
+          parameterList.add("");
+        } else {
+          final String key = param.substring(0, indexOfEqualSign);
+          final List<String> parameterList = allQueryParameterMap.containsKey(key) ? allQueryParameterMap.get(key) 
+              : new LinkedList<String>();
+          
+          allQueryParameterMap.put(key, parameterList);
+          parameterList.add(param.substring(indexOfEqualSign + 1));
+        }
+      }
+    }
+    
+    return allQueryParameterMap;
+  }
+  
   /*
    * Parses Accept-Language header. Returns a list sorted by quality parameter
    */

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java
index 2f0a286..c58f7ae 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/UriParserImpl.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata2.core.uri;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
@@ -102,6 +103,14 @@ public class UriParserImpl extends UriParser {
   @Override
   public UriInfo parse(final List<PathSegment> pathSegments, final Map<String, String> queryParameters)
       throws UriSyntaxException, UriNotMatchingException, EdmException {
+
+    return parseAll(pathSegments, convertFromSingleMapToMultiMap(queryParameters));
+  }
+
+  @Override
+  public UriInfo parseAll(final List<PathSegment> pathSegments, final Map<String, List<String>> allQueryParameters)
+      throws UriSyntaxException, UriNotMatchingException, EdmException {
+
     this.pathSegments = copyPathSegmentList(pathSegments);
     systemQueryOptions = new HashMap<SystemQueryOption, String>();
     otherQueryParameters = new HashMap<String, String>();
@@ -111,7 +120,7 @@ public class UriParserImpl extends UriParser {
 
     handleResourcePath();
 
-    distributeQueryParameters(queryParameters);
+    distributeQueryParameters(allQueryParameters);
     checkSystemQueryOptionsCompatibility();
     handleSystemQueryOptions();
     handleOtherQueryParameters();
@@ -119,6 +128,19 @@ public class UriParserImpl extends UriParser {
     return uriResult;
   }
 
+  private <T, K> Map<T, List<K>> convertFromSingleMapToMultiMap(final Map<T, K> singleMap) {
+    Map<T, List<K>> multiMap = new HashMap<T, List<K>>();
+
+    for (T key : singleMap.keySet()) {
+      List<K> valueList = new LinkedList<K>();
+      valueList.add(singleMap.get(key));
+
+      multiMap.put(key, valueList);
+    }
+
+    return multiMap;
+  }
+
   private void preparePathSegments() throws UriSyntaxException {
     // Remove an empty path segment at the start of the OData part of the resource path.
     if (!pathSegments.isEmpty() && pathSegments.get(0).equals("")) {
@@ -508,23 +530,35 @@ public class UriParserImpl extends UriParser {
     ensureLastSegment();
   }
 
-  private void distributeQueryParameters(final Map<String, String> queryParameters) throws UriSyntaxException {
+  private void distributeQueryParameters(final Map<String, List<String>> queryParameters) throws UriSyntaxException {
     for (final String queryOptionString : queryParameters.keySet()) {
-      final String value = queryParameters.get(queryOptionString);
-      if (queryOptionString.startsWith("$")) {
-        SystemQueryOption queryOption;
-        try {
-          queryOption = SystemQueryOption.valueOf(queryOptionString);
-        } catch (IllegalArgumentException e) {
-          throw new UriSyntaxException(UriSyntaxException.INVALIDSYSTEMQUERYOPTION.addContent(queryOptionString), e);
-        }
-        if ("".equals(value)) {
-          throw new UriSyntaxException(UriSyntaxException.INVALIDNULLVALUE.addContent(queryOptionString));
+      final List<String> valueList = queryParameters.get(queryOptionString);
+
+      if (valueList.size() >= 1) {
+        String value = valueList.get(0);
+
+        if (queryOptionString.startsWith("$")) {
+          SystemQueryOption queryOption;
+          try {
+            queryOption = SystemQueryOption.valueOf(queryOptionString);
+          } catch (IllegalArgumentException e) {
+            throw new UriSyntaxException(UriSyntaxException.INVALIDSYSTEMQUERYOPTION.addContent(queryOptionString), e);
+          }
+          if ("".equals(value)) {
+            throw new UriSyntaxException(UriSyntaxException.INVALIDNULLVALUE.addContent(queryOptionString));
+          } else {
+            if (valueList.size() == 1 && !systemQueryOptions.containsKey(queryOption)) {
+              systemQueryOptions.put(queryOption, value);
+            } else {
+              throw new UriSyntaxException(UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES
+                  .addContent(queryOptionString));
+            }
+          }
         } else {
-          systemQueryOptions.put(queryOption, value);
+          otherQueryParameters.put(queryOptionString, value);
         }
       } else {
-        otherQueryParameters.put(queryOptionString, value);
+        throw new UriSyntaxException(UriSyntaxException.INVALIDNULLVALUE.addContent(queryOptionString));
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-core/src/main/resources/i18n.properties
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/resources/i18n.properties b/odata2-lib/odata-core/src/main/resources/i18n.properties
index cc2ca5f..90b7045 100644
--- a/odata2-lib/odata-core/src/main/resources/i18n.properties
+++ b/odata2-lib/odata-core/src/main/resources/i18n.properties
@@ -40,6 +40,7 @@ org.apache.olingo.odata2.api.uri.UriSyntaxException.NONAVIGATIONPROPERTY=Propert
 org.apache.olingo.odata2.api.uri.UriSyntaxException.MISSINGPARAMETER=Missing parameter.
 org.apache.olingo.odata2.api.uri.UriSyntaxException.MISSINGKEYPREDICATENAME=Missing key predicate name for key: '%1$s'.
 org.apache.olingo.odata2.api.uri.UriSyntaxException.DUPLICATEKEYNAMES=Duplicate key names: '%1$s'.
+org.apache.olingo.odata2.api.uri.UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES=Duplicate system query parameter names: '%1$s'.
 org.apache.olingo.odata2.api.uri.UriSyntaxException.EMPTYSEGMENT=No empty segment allowed.
 org.apache.olingo.odata2.api.uri.UriSyntaxException.MUSTNOTBELASTSEGMENT='%1$s' must not be the last segment. 
 org.apache.olingo.odata2.api.uri.UriSyntaxException.MUSTBELASTSEGMENT='%1$s' must be the last segment.

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestHandlerValidationTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestHandlerValidationTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestHandlerValidationTest.java
index b46da46..7105c93 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestHandlerValidationTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestHandlerValidationTest.java
@@ -29,6 +29,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
@@ -232,6 +233,8 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
     when(request.getPathInfo()).thenReturn(pathInfo);
     when(request.getQueryParameters()).thenReturn(
         queryParameters == null ? Collections.<String, String> emptyMap() : queryParameters);
+    when(request.getAllQueryParameters()).thenReturn(queryParameters == null ?
+        Collections.<String, List<String>> emptyMap() : convertToMultiMap(queryParameters));
     when(request.getContentType()).thenReturn(
         requestContentType == null ? HttpContentType.APPLICATION_JSON : requestContentType);
     when(request.getRequestHeaderValue(httpHeaderName)).thenReturn(httpHeaderValue);
@@ -241,6 +244,19 @@ public class ODataRequestHandlerValidationTest extends BaseTest {
     return request;
   }
 
+  private Map<String, List<String>> convertToMultiMap(final Map<String, String> queryParameters) {
+    Map<String, List<String>> multiMap = new HashMap<String, List<String>>();
+
+    for (final String key : queryParameters.keySet()) {
+      List<String> parameterList = new LinkedList<String>();
+      parameterList.add(queryParameters.get(key));
+
+      multiMap.put(key, parameterList);
+    }
+
+    return multiMap;
+  }
+
   private ODataService mockODataService(final ODataServiceFactory serviceFactory) throws ODataException {
     ODataService service = DispatcherTest.getMockService();
     when(service.getEntityDataModel()).thenReturn(edm);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java
index c3e457d..0c64844 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/UriParserTest.java
@@ -31,6 +31,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
@@ -81,19 +82,25 @@ public class UriParserTest extends BaseTest {
 
     final List<PathSegment> pathSegments =
         MockFacade.getPathSegmentsAsODataPathSegmentMock(Arrays.asList(path[0].split("/", -1)));
-    final Map<String, String> queryParameters =
-        getQueryParameters(path.length == 2 ? unescape(path[1]) : "");
+    final Map<String, List<String>> queryParameters = getQueryParameters(path.length == 2 ? unescape(path[1]) : "");
 
-    return (UriInfoImpl) new UriParserImpl(edm).parse(pathSegments, queryParameters);
+    return (UriInfoImpl) new UriParserImpl(edm).parseAll(pathSegments, queryParameters);
   }
 
-  private Map<String, String> getQueryParameters(final String uri) {
-    Map<String, String> queryParameters = new HashMap<String, String>();
+  private Map<String, List<String>> getQueryParameters(final String uri) {
+    Map<String, List<String>> allQueryParameters = new HashMap<String, List<String>>();
+
     for (final String option : uri.split("&")) {
       final String[] keyAndValue = option.split("=");
-      queryParameters.put(keyAndValue[0], keyAndValue.length == 2 ? keyAndValue[1] : "");
+      List<String> list = allQueryParameters.containsKey(keyAndValue[0]) ?
+          allQueryParameters.get(keyAndValue[0]) : new LinkedList<String>();
+
+      list.add(keyAndValue.length == 2 ? keyAndValue[1] : "");
+
+      allQueryParameters.put(keyAndValue[0], list);
     }
-    return queryParameters;
+
+    return allQueryParameters;
   }
 
   private String unescape(final String s) throws UriSyntaxException {
@@ -667,9 +674,6 @@ public class UriParserTest extends BaseTest {
     assertEquals("xml", result.getFormat());
     assertNull(result.getTop());
 
-    result = parse("Employees?$format=xml&$format=json");
-    assertEquals("json", result.getFormat());
-
     result = parse("Employees?$format=custom/*");
     assertNotNull(result.getFormat());
     assertEquals("custom/*", result.getFormat().toString());
@@ -708,6 +712,24 @@ public class UriParserTest extends BaseTest {
   }
 
   @Test
+  public void parseWrongRedundantSystemQueryOptions() throws Exception {
+    parseWrongUri("Employees?$top=1&$top=2", UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES);
+    parseWrongUri("Employees?$top=1&$skip=1&$top=2", UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES);
+    parseWrongUri("Employees?$top=1&$top=1", UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES);
+    parseWrongUri("Employees?$skip=1&$skip=2", UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES);
+    parseWrongUri("Employees?$expand=ne_Manager&$expand=ne_Manager", UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES);
+    parseWrongUri("Employees?$orderby=Name%20desc&$orderby=Birthday%20desc",
+        UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES);
+    parseWrongUri("Employees?$select=EmployeeName&$select=EmployeeName",
+        UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES);
+    parseWrongUri("Employees?$filter=EmployeeName%20eq%20'Foo'&$filter=EmployeeName%20ne%20'Bar'",
+        UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES);
+    parseWrongUri("Employees?$inlinecount=allpages&$inlinecount=none",
+        UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES);
+    parseWrongUri("Employees?$format=xml&$format=json", UriSyntaxException.DUPLICATESYSTEMQUERYPARAMETES);
+  }
+
+  @Test
   public void parseWrongSystemQueryOptionSkip() throws Exception {
     parseWrongUri("Employees?$skip=-1", UriSyntaxException.INVALIDNEGATIVEVALUE);
     parseWrongUri("Employees?$skip=-0", UriSyntaxException.INVALIDNEGATIVEVALUE);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/HttpExceptionResponseTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/HttpExceptionResponseTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/HttpExceptionResponseTest.java
index 8fbba2f..1bb8f69 100644
--- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/HttpExceptionResponseTest.java
+++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/HttpExceptionResponseTest.java
@@ -95,7 +95,18 @@ public class HttpExceptionResponseTest extends AbstractBasicTest {
     assertXpathValuesEqual("\"" + MessageService.getMessage(Locale.ENGLISH, ODataNotFoundException.ENTITY).getText()
         + "\"", "/a:error/a:message", content);
   }
-
+  
+  @Test
+  public void test400BadRequestRedundantSystemQueryOptions() throws Exception {
+    HttpResponse response = executeGetRequest("Employees?$top=1&$top=3");
+    assertEquals(HttpStatusCodes.BAD_REQUEST.getStatusCode(), response.getStatusLine().getStatusCode());
+    
+    final String content = StringHelper.inputStreamToString(response.getEntity().getContent());
+    assertEquals("<?xml version='1.0' encoding='UTF-8'?><error xmlns=\"http://schemas.microsoft.com/ado/2007/"
+        + "08/dataservices/metadata\"><code/><message xml:lang=\"en\">Duplicate system query parameter names: "
+        + "'$top'.</message></error>", content);
+  }
+  
   @Test
   public void genericHttpExceptions() throws Exception {
     disableLogging();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/LanguageNegotiationTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/LanguageNegotiationTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/LanguageNegotiationTest.java
index 3d46b45..ecbd893 100644
--- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/LanguageNegotiationTest.java
+++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/basic/LanguageNegotiationTest.java
@@ -100,7 +100,7 @@ public class LanguageNegotiationTest extends AbstractBasicTest {
 
     assertXpathExists("/m:error/m:message", content);
     assertXpathExists("/m:error/m:message[@xml:lang=\"it\"]", content);
-    assertXpathEvaluatesTo("itLanguage", "/m:error/m:message/text()", content);
+    assertXpathEvaluatesTo("eccezione comune", "/m:error/m:message/text()", content);
 
   }
 
@@ -114,11 +114,11 @@ public class LanguageNegotiationTest extends AbstractBasicTest {
 
     assertXpathExists("/m:error/m:message", content);
     assertXpathExists("/m:error/m:message[@xml:lang=\"en\"]", content);
-    assertXpathEvaluatesTo("fallbackLanguage", "/m:error/m:message/text()", content);
+    assertXpathEvaluatesTo("Common exception", "/m:error/m:message/text()", content);
   }
 
   private static class MyException extends ODataMessageException {
-    private static final MessageReference TEST = createMessageReference(MyException.class, "TEST");
+    private static final MessageReference TEST = createMessageReference(ODataMessageException.class, "COMMON");
     private static final long serialVersionUID = 1L;
 
     /**

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-fit/src/test/resources/i18n.properties
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/resources/i18n.properties b/odata2-lib/odata-fit/src/test/resources/i18n.properties
deleted file mode 100644
index ae7c98b..0000000
--- a/odata2-lib/odata-fit/src/test/resources/i18n.properties
+++ /dev/null
@@ -1,22 +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.
-#-------------------------------------------------------------------------------
-# Language Negotiation Test
-#
-
-org.apache.olingo.odata2.fit.basic.LanguageNegotiationTest$MyException.TEST=fallbackLanguage

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/575c59ff/odata2-lib/odata-fit/src/test/resources/i18n_it.properties
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/resources/i18n_it.properties b/odata2-lib/odata-fit/src/test/resources/i18n_it.properties
index 12d072b..1320e74 100644
--- a/odata2-lib/odata-fit/src/test/resources/i18n_it.properties
+++ b/odata2-lib/odata-fit/src/test/resources/i18n_it.properties
@@ -20,3 +20,4 @@
 #
 
 org.apache.olingo.odata2.fit.basic.LanguageNegotiationTest$MyException.TEST=itLanguage
+org.apache.olingo.odata2.api.exception.ODataMessageException.COMMON=eccezione comune


[27/50] [abbrv] git commit: [OLINGO-335] Run Code cleanup

Posted by mi...@apache.org.
[OLINGO-335] Run Code cleanup


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/6a866625
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/6a866625
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/6a866625

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 6a866625f5fdbde39a1d6c82d0d28f472adef972
Parents: 81dfcfa
Author: Christian Amend <ch...@apache.org>
Authored: Tue Jul 1 16:22:36 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Tue Jul 1 16:22:36 2014 +0200

----------------------------------------------------------------------
 .../api/ODataJPATombstoneEntityListener.java    |  2 ++
 .../jpa/processor/core/access/data/JPAPage.java |  4 +--
 .../core/access/data/JPAProcessorImpl.java      |  2 +-
 .../core/access/model/JPATypeConvertor.java     |  2 +-
 .../processor/core/model/JPAEdmProperty.java    |  3 +-
 .../core/access/data/JPAPageBuilderTest.java    |  5 +--
 .../SalesOrderItemTombstoneListener.java        |  4 +--
 .../listeners/SalesOrderTombstoneListener.java  |  4 +--
 .../jpa/processor/ref/model/Category.java       |  2 +-
 .../jpa/processor/ref/model/Customer.java       |  2 +-
 .../api/ep/EntityProviderWriteProperties.java   |  5 ++-
 .../odata2/api/processor/ODataResponse.java     |  6 ++--
 .../olingo/odata2/core/ODataRequestImpl.java    |  6 ++--
 .../odata2/core/batch/BatchRequestParser.java   | 16 +++++-----
 .../odata2/core/batch/BatchRequestWriter.java   |  2 +-
 .../odata2/core/batch/BatchResponseParser.java  | 10 +++---
 .../edm/provider/EdmAssociationImplProv.java    |  4 +--
 .../ep/producer/AtomEntryEntityProducer.java    |  3 +-
 .../odata2/core/servlet/ODataServlet.java       |  9 +++---
 .../olingo/odata2/core/ODataRequestTest.java    |  4 +--
 .../odata2/core/batch/BatchRequestTest.java     | 26 ++++++++--------
 .../core/batch/BatchRequestWriterTest.java      | 20 ++++++------
 .../odata2/core/batch/BatchResponseTest.java    | 17 ++++++-----
 .../odata2/core/ep/AbstractProviderTest.java    |  2 +-
 .../consumer/JsonEntryDeepInsertEntryTest.java  |  2 +-
 .../core/ep/consumer/XmlFeedConsumerTest.java   |  6 ++--
 .../producer/JsonEntryEntityProducerTest.java   |  2 +-
 .../odata2/core/servlet/ODataServletTest.java   | 32 ++++++++++----------
 .../odata2/ref/edm/ScenarioEdmProvider.java     |  8 ++---
 .../odata2/testutil/helper/StringHelper.java    | 32 +++++++++++---------
 30 files changed, 125 insertions(+), 117 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPATombstoneEntityListener.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPATombstoneEntityListener.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPATombstoneEntityListener.java
index f120ab9..ec28842 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPATombstoneEntityListener.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/ODataJPATombstoneEntityListener.java
@@ -19,8 +19,10 @@
 package org.apache.olingo.odata2.jpa.processor.api;
 
 import java.util.List;
+
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
+
 import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo;
 
 /**

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPage.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPage.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPage.java
index 281d7ce..7aff111 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPage.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAPage.java
@@ -203,8 +203,8 @@ public class JPAPage implements JPAPaging {
       return this;
     }
 
-    public JPAPageBuilder entities(List<Object> result) {
-      this.entities = result;
+    public JPAPageBuilder entities(final List<Object> result) {
+      entities = result;
       return this;
     }
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
index a7bcf35..fdef108 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
@@ -196,7 +196,7 @@ public class JPAProcessorImpl implements JPAProcessor {
     }
   }
 
-  private List<Object> handlePaging(List<Object> result, GetEntitySetUriInfo uriParserResultView) {
+  private List<Object> handlePaging(final List<Object> result, final GetEntitySetUriInfo uriParserResultView) {
     if (result == null) {
       return null;
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
index 9548d63..8ea1ce3 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
@@ -22,9 +22,9 @@ import java.lang.reflect.AnnotatedElement;
 import java.math.BigDecimal;
 import java.sql.Blob;
 import java.sql.Clob;
+import java.sql.Date;
 import java.sql.Timestamp;
 import java.util.Calendar;
-import java.sql.Date;
 import java.util.UUID;
 
 import javax.persistence.Lob;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
index dbae270..fd14794 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
@@ -365,7 +365,8 @@ public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
       }
     }
 
-    private void buildForeignKey(JoinColumn joinColumn, Attribute<?, ?> jpaAttribute) throws ODataJPAModelException,
+    private void buildForeignKey(final JoinColumn joinColumn, final Attribute<?, ?> jpaAttribute)
+        throws ODataJPAModelException,
         ODataJPARuntimeException {
       joinColumnNames = joinColumnNames == null ? new ArrayList<String[]>() : joinColumnNames;
       String[] name = { null, null };

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/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 b9e6894..0232163 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
@@ -62,8 +62,6 @@ public class JPAPageBuilderTest {
     assertEquals(10, query.getMaxResults());
   }
 
-
-
   @Test
   public void testBuildDefaultZeroPage() {
     JPAPageBuilder pageBuilder = new JPAPageBuilder();
@@ -84,7 +82,7 @@ public class JPAPageBuilderTest {
     assertEquals(0, query.getMaxResults());
   }
 
-   @Test
+  @Test
   public void testBuildWithNoSkipToken() {
     JPAPageBuilder pageBuilder = new JPAPageBuilder();
     Query query = mockQuery(false);
@@ -559,5 +557,4 @@ public class JPAPageBuilderTest {
     };
   }
 
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
index 036db52..05de214 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
@@ -6,9 +6,9 @@
  * 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

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
index ea162ae..0545eac 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
@@ -6,9 +6,9 @@
  * 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

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Category.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Category.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Category.java
index f0ff23f..7c8965e 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Category.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Category.java
@@ -57,7 +57,7 @@ public class Category {
     return id;
   }
 
-  public void setId(long id) {
+  public void setId(final long id) {
     this.id = id;
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
index d95c91e..48243d0 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
@@ -86,7 +86,7 @@ public class Customer {
     return createdAt;
   }
 
-  public void setCreatedAt(Timestamp createdAt) {
+  public void setCreatedAt(final Timestamp createdAt) {
     this.createdAt = createdAt;
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
index 4273b30..cd6aad6 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
@@ -215,17 +215,16 @@ public class EntityProviderWriteProperties {
       return this;
     }
 
-    public ODataEntityProviderPropertiesBuilder omitJsonWrapper(boolean omitJsonWrapper) {
+    public ODataEntityProviderPropertiesBuilder omitJsonWrapper(final boolean omitJsonWrapper) {
       properties.omitJsonWrapper = omitJsonWrapper;
       return this;
     }
 
-    public ODataEntityProviderPropertiesBuilder contentOnly(boolean contentOnly) {
+    public ODataEntityProviderPropertiesBuilder contentOnly(final boolean contentOnly) {
       properties.contentOnly = contentOnly;
       return this;
     }
 
-    
     public ODataEntityProviderPropertiesBuilder fromProperties(final EntityProviderWriteProperties properties) {
       this.properties.inlineCountType = properties.getInlineCountType();
       this.properties.inlineCount = properties.getInlineCount();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataResponse.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataResponse.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataResponse.java
index 57e41c6..2035b25 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataResponse.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/processor/ODataResponse.java
@@ -55,16 +55,16 @@ public abstract class ODataResponse {
 
   /**
    * @return a response entity as inputStream which becomes the body part of a response message
-   * @throws ODataException throws ODataException in case of entity is not a stream (internal ClassCastException) 
+   * @throws ODataException throws ODataException in case of entity is not a stream (internal ClassCastException)
    */
   public InputStream getEntityAsStream() throws ODataException {
     try {
-    return (InputStream) getEntity();
+      return (InputStream) getEntity();
     } catch (ClassCastException e) {
       throw new ODataException(e);
     }
   }
-  
+
   /**
    * Close the underlying entity input stream (if such a stream is available) and release all with this repsonse
    * associated resources.

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
index 5a67ae7..67e77b4 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
@@ -209,17 +209,17 @@ public class ODataRequestImpl extends ODataRequest {
     private static final long serialVersionUID = 1L;
 
     @Override
-    public List<String> put(String key, List<String> value) {
+    public List<String> put(final String key, final List<String> value) {
       return super.put(key.toLowerCase(), value);
     }
 
     // not @Override because that would require the key parameter to be of type Object
-    public List<String> get(String key) {
+    public List<String> get(final String key) {
       return super.get(key.toLowerCase());
     }
 
     @Override
-    public List<String> get(Object key) {
+    public List<String> get(final Object key) {
       String skey = (String) key;
       return super.get(skey.toLowerCase());
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
index ca69d36..6ac1445 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
@@ -186,8 +186,8 @@ public class BatchRequestParser {
   }
 
   private BatchRequestPart parseBatchRequestPart(final Scanner scanner, final String boundary,
-                                                 final Map<String, String> mimeHeaders,
-                                                 final String contentType) throws BatchException {
+      final Map<String, String> mimeHeaders,
+      final String contentType) throws BatchException {
     if (HttpContentType.APPLICATION_HTTP.equalsIgnoreCase(contentType)) {
       validateEncoding(mimeHeaders.get(BatchHelper.HTTP_CONTENT_TRANSFER_ENCODING.toLowerCase(Locale.ENGLISH)));
       parseNewLine(scanner);// mandatory
@@ -217,8 +217,8 @@ public class BatchRequestParser {
   }
 
   private BatchRequestPart parseBatchRequestPartInChangeset(final Scanner scanner, final String boundary,
-                                                            final Map<String, String> mimeHeaders,
-                                                            final String contentType) throws BatchException {
+      final Map<String, String> mimeHeaders,
+      final String contentType) throws BatchException {
     if (HttpContentType.APPLICATION_HTTP.equalsIgnoreCase(contentType)) {
       validateEncoding(mimeHeaders.get(BatchHelper.HTTP_CONTENT_TRANSFER_ENCODING.toLowerCase(Locale.ENGLISH)));
       parseNewLine(scanner);// mandatory
@@ -231,7 +231,7 @@ public class BatchRequestParser {
   }
 
   private ODataRequest parseRequest(final Scanner scanner, final boolean isChangeSet, final String boundary)
-          throws BatchException {
+      throws BatchException {
     if (scanner.hasNext(REG_EX_REQUEST_LINE)) {
       scanner.next(REG_EX_REQUEST_LINE);
       currentLineNumber++;
@@ -292,11 +292,11 @@ public class BatchRequestParser {
   }
 
   private Map<String, List<String>> parseRequestHeaders(final Scanner scanner, final String boundary)
-          throws BatchException {
+      throws BatchException {
     Map<String, List<String>> headers = new HashMap<String, List<String>>();
     while (scanner.hasNext()
-            && !scanner.hasNext(REG_EX_BLANK_LINE)
-            && !scanner.hasNext("--" + boundary + REG_EX_ZERO_OR_MORE_WHITESPACES)) {
+        && !scanner.hasNext(REG_EX_BLANK_LINE)
+        && !scanner.hasNext("--" + boundary + REG_EX_ZERO_OR_MORE_WHITESPACES)) {
       if (scanner.hasNext(REG_EX_HEADER)) {
         scanner.next(REG_EX_HEADER);
         currentLineNumber++;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestWriter.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestWriter.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestWriter.java
index 63453c2..a7ddfa1 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestWriter.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestWriter.java
@@ -86,7 +86,7 @@ public class BatchRequestWriter {
     writer.append(HttpHeaders.CONTENT_TYPE).append(COLON).append(SP).append(HttpContentType.APPLICATION_HTTP)
         .append(LF);
     writer.append(BatchHelper.HTTP_CONTENT_TRANSFER_ENCODING).append(COLON).append(SP)
-            .append(BatchHelper.BINARY_ENCODING).append(LF);
+        .append(BatchHelper.BINARY_ENCODING).append(LF);
     if (contentId != null) {
       writer.append(BatchHelper.HTTP_CONTENT_ID).append(COLON).append(SP).append(contentId).append(LF);
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
index 7c2c21b..b488ce2 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
@@ -361,13 +361,13 @@ public class BatchResponseParser {
   }
 
   private void parseOptionalEmptyLine(final Scanner scanner) {
-      if (scanner.hasNext() && scanner.hasNext(REG_EX_BLANK_LINE)) {
-        scanner.next();
-        currentLineNumber++;
-      }
+    if (scanner.hasNext() && scanner.hasNext(REG_EX_BLANK_LINE)) {
+      scanner.next();
+      currentLineNumber++;
     }
+  }
 
-      private String trimQuota(String boundary) {
+  private String trimQuota(String boundary) {
     if (boundary.matches("\".*\"")) {
       boundary = boundary.replace("\"", "");
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProv.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProv.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProv.java
index 3124d45..8cb8e11 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProv.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProv.java
@@ -103,9 +103,9 @@ public class EdmAssociationImplProv extends EdmNamedImplProv implements EdmAssoc
 
   @Override
   public EdmReferentialConstraint getReferentialConstraint() throws EdmException {
-    if(referentialConstraint == null){
+    if (referentialConstraint == null) {
       ReferentialConstraint refConstraint = association.getReferentialConstraint();
-      if(refConstraint != null){
+      if (refConstraint != null) {
         referentialConstraint = new EdmReferentialConstraintImplProv(refConstraint);
       }
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
index 89b7e6e..f2e19ea 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
@@ -145,7 +145,8 @@ public class AtomEntryEntityProducer {
     }
   }
 
-  private void appendAdditinalLinks(XMLStreamWriter writer, EntityInfoAggregator eia, Map<String, Object> data)
+  private void appendAdditinalLinks(final XMLStreamWriter writer, final EntityInfoAggregator eia,
+      final Map<String, Object> data)
       throws EntityProviderException, EdmException, URISyntaxException {
     final Map<String, Map<String, Object>> links = properties.getAdditionalLinks();
     if (links != null && !links.isEmpty()) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
index a5bedab..5078e4b 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
@@ -154,7 +154,8 @@ public class ODataServlet extends HttpServlet {
     return true;
   }
 
-  private void handleRequest(final HttpServletRequest req, final ODataHttpMethod method, final HttpServletResponse resp)
+  private void
+      handleRequest(final HttpServletRequest req, final ODataHttpMethod method, final HttpServletResponse resp)
           throws IOException {
     try {
       if (req.getHeader(HttpHeaders.ACCEPT) != null && req.getHeader(HttpHeaders.ACCEPT).isEmpty()) {
@@ -205,14 +206,14 @@ public class ODataServlet extends HttpServlet {
 
   }
 
-  private String createLocation(HttpServletRequest req) {
+  private String createLocation(final HttpServletRequest req) {
     StringBuilder location = new StringBuilder();
     String contextPath = req.getContextPath();
-    if(contextPath != null) {
+    if (contextPath != null) {
       location.append(contextPath);
     }
     String servletPath = req.getServletPath();
-    if(servletPath != null) {
+    if (servletPath != null) {
       location.append(servletPath);
     }
     location.append("/");

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestTest.java
index 0652a73..673641d 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ODataRequestTest.java
@@ -47,7 +47,7 @@ public class ODataRequestTest {
 
   }
 
-  void verifyHeader(ODataRequest r) {
+  void verifyHeader(final ODataRequest r) {
     assertEquals("lower", r.getRequestHeaderValue("lower"));
     assertEquals("lower", r.getRequestHeaderValue("LOWER"));
     assertEquals("lower", r.getRequestHeaderValue("Lower"));
@@ -72,6 +72,6 @@ public class ODataRequestTest {
 
     assertEquals("mIxEd", map.get("mixed").get(0));
     assertEquals("mIxEd", map.get("MIXED").get(0));
-    assertEquals("mIxEd", map.get("mIxEd").get(0));    
+    assertEquals("mIxEd", map.get("mIxEd").get(0));
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestTest.java
index b3f41a0..ca6b655 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestTest.java
@@ -18,16 +18,9 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.core.batch;
 
-import org.apache.olingo.odata2.api.batch.BatchException;
-import org.apache.olingo.odata2.api.batch.BatchRequestPart;
-import org.apache.olingo.odata2.api.client.batch.BatchChangeSet;
-import org.apache.olingo.odata2.api.client.batch.BatchChangeSetPart;
-import org.apache.olingo.odata2.api.client.batch.BatchPart;
-import org.apache.olingo.odata2.api.client.batch.BatchQueryPart;
-import org.apache.olingo.odata2.api.ep.EntityProviderBatchProperties;
-import org.apache.olingo.odata2.core.PathInfoImpl;
-import org.apache.olingo.odata2.testutil.helper.StringHelper;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -38,9 +31,16 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import org.apache.olingo.odata2.api.batch.BatchException;
+import org.apache.olingo.odata2.api.batch.BatchRequestPart;
+import org.apache.olingo.odata2.api.client.batch.BatchChangeSet;
+import org.apache.olingo.odata2.api.client.batch.BatchChangeSetPart;
+import org.apache.olingo.odata2.api.client.batch.BatchPart;
+import org.apache.olingo.odata2.api.client.batch.BatchQueryPart;
+import org.apache.olingo.odata2.api.ep.EntityProviderBatchProperties;
+import org.apache.olingo.odata2.core.PathInfoImpl;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.junit.Test;
 
 /**
  * Test creation of a batch request with BatchRequestWriter and

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestWriterTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestWriterTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestWriterTest.java
index 89bdea3..051e1da 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestWriterTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestWriterTest.java
@@ -18,13 +18,9 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.core.batch;
 
-import org.apache.olingo.odata2.api.batch.BatchException;
-import org.apache.olingo.odata2.api.client.batch.BatchChangeSet;
-import org.apache.olingo.odata2.api.client.batch.BatchChangeSetPart;
-import org.apache.olingo.odata2.api.client.batch.BatchPart;
-import org.apache.olingo.odata2.api.client.batch.BatchQueryPart;
-import org.apache.olingo.odata2.testutil.helper.StringHelper;
-import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -33,9 +29,13 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import org.apache.olingo.odata2.api.batch.BatchException;
+import org.apache.olingo.odata2.api.client.batch.BatchChangeSet;
+import org.apache.olingo.odata2.api.client.batch.BatchChangeSetPart;
+import org.apache.olingo.odata2.api.client.batch.BatchPart;
+import org.apache.olingo.odata2.api.client.batch.BatchQueryPart;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
+import org.junit.Test;
 
 public class BatchRequestWriterTest {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseTest.java
index c438a0f..f5f05ff 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseTest.java
@@ -18,6 +18,16 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.core.batch;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.olingo.odata2.api.batch.BatchException;
 import org.apache.olingo.odata2.api.batch.BatchResponsePart;
 import org.apache.olingo.odata2.api.client.batch.BatchSingleResponse;
@@ -26,13 +36,6 @@ import org.apache.olingo.odata2.api.processor.ODataResponse;
 import org.apache.olingo.odata2.testutil.helper.StringHelper;
 import org.junit.Test;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.junit.Assert.*;
-
 /**
  * Test creation of a batch response with BatchResponseWriter and
  * then parsing this response again with BatchResponseParser.

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/AbstractProviderTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/AbstractProviderTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/AbstractProviderTest.java
index d9462c2..3c53540 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/AbstractProviderTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/AbstractProviderTest.java
@@ -95,7 +95,7 @@ public abstract class AbstractProviderTest extends AbstractXmlProducerTestHelper
     employeeData.put("EntryDate", date);
     employeeData.put("TeamId", "42");
     employeeData.put("EmployeeName", "Walter Winter");
-    //employeeData.put("getImageType", "abc");
+    // employeeData.put("getImageType", "abc");
 
     Map<String, Object> locationData = new HashMap<String, Object>();
     Map<String, Object> cityData = new HashMap<String, Object>();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
index d35bbe4..e12cb59 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryDeepInsertEntryTest.java
@@ -161,7 +161,7 @@ public class JsonEntryDeepInsertEntryTest extends AbstractConsumerTest {
 
     associationUris = innerRoom.getMetadata().getAssociationUris("nr_Building");
     assertEquals(Collections.emptyList(), associationUris);
-    
+
     assertEquals("W/\"1\"", innerRoom.getMetadata().getEtag());
 
     ODataEntry innerBuilding = (ODataEntry) innerRoomProperties.get("nr_Building");

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumerTest.java
index dace8eb..ec7ce71 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlFeedConsumerTest.java
@@ -43,7 +43,7 @@ public class XmlFeedConsumerTest extends AbstractXmlConsumerTest {
   public XmlFeedConsumerTest(final StreamWriterImplType type) {
     super(type);
   }
-  
+
   @Test
   public void roomsFeedWithEtagEntries() throws Exception {
     InputStream stream = getFileAsStream("feed_rooms_small.xml");
@@ -58,13 +58,13 @@ public class XmlFeedConsumerTest extends AbstractXmlConsumerTest {
     FeedMetadata feedMetadata = feed.getFeedMetadata();
     assertNotNull(feedMetadata);
     assertNotNull(feedMetadata.getNextLink());
-    
+
     List<ODataEntry> entries = feed.getEntries();
     assertEquals(3, entries.size());
     ODataEntry singleRoom = entries.get(0);
     EntryMetadata roomMetadata = singleRoom.getMetadata();
     assertNotNull(roomMetadata);
-    
+
     assertEquals("W/\"1\"", roomMetadata.getEtag());
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
index f07b56c..7052fb0 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
@@ -213,7 +213,7 @@ public class JsonEntryEntityProducerTest extends BaseTest {
         EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).contentOnly(true)
             .expandSelectTree(expandSelectTreeNode).additionalLinks(additinalLinks).build();
     final ODataResponse response = new JsonEntityProvider().writeEntry(entitySet, employeeData, properties);
-   //System.out.println(StringHelper.inputStreamToString((InputStream) response.getEntity()));
+    // System.out.println(StringHelper.inputStreamToString((InputStream) response.getEntity()));
     Map<String, Object> employee =
         (Map<String, Object>) new Gson().fromJson(new InputStreamReader((InputStream) response.getEntity()), Map.class);
     assertNull(employee.get("__metadata"));

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/ODataServletTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/ODataServletTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/ODataServletTest.java
index 4a6327e..1c74fc0 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/ODataServletTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/ODataServletTest.java
@@ -6,9 +6,9 @@
  * 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
@@ -18,6 +18,13 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.core.servlet;
 
+import java.lang.reflect.Field;
+
+import javax.servlet.GenericServlet;
+import javax.servlet.ServletConfig;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.olingo.odata2.api.ODataServiceFactory;
 import org.apache.olingo.odata2.api.commons.HttpHeaders;
 import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
@@ -25,12 +32,6 @@ import org.apache.olingo.odata2.core.rest.ODataServiceFactoryImpl;
 import org.junit.Test;
 import org.mockito.Mockito;
 
-import javax.servlet.GenericServlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.lang.reflect.Field;
-
 /**
  *
  */
@@ -41,9 +42,9 @@ public class ODataServletTest {
   private ServletConfig configMock;
 
   public ODataServletTest() {
-    this.reqMock = Mockito.mock(HttpServletRequest.class);
-    this.respMock = Mockito.mock(HttpServletResponse.class);
-    this.configMock = Mockito.mock(ServletConfig.class);
+    reqMock = Mockito.mock(HttpServletRequest.class);
+    respMock = Mockito.mock(HttpServletResponse.class);
+    configMock = Mockito.mock(ServletConfig.class);
   }
 
   @Test
@@ -90,18 +91,18 @@ public class ODataServletTest {
     Mockito.verify(respMock).setHeader(HttpHeaders.LOCATION, "/");
   }
 
-  private void prepareRequest(HttpServletRequest req, String contextPath, String servletPath) {
+  private void prepareRequest(final HttpServletRequest req, final String contextPath, final String servletPath) {
     Mockito.when(req.getMethod()).thenReturn("GET");
     Mockito.when(req.getContextPath()).thenReturn(contextPath);
     Mockito.when(req.getServletPath()).thenReturn(servletPath);
   }
 
-  private void prepareRequest(HttpServletRequest req) {
+  private void prepareRequest(final HttpServletRequest req) {
     prepareRequest(req, "/context-path", "/servlet-path");
   }
 
-  private void prepareServlet(GenericServlet servlet) throws Exception {
-    //    private transient ServletConfig config;
+  private void prepareServlet(final GenericServlet servlet) throws Exception {
+    // private transient ServletConfig config;
     Field configField = GenericServlet.class.getDeclaredField("config");
     configField.setAccessible(true);
     configField.set(servlet, configMock);
@@ -110,5 +111,4 @@ public class ODataServletTest {
     Mockito.when(configMock.getInitParameter(ODataServiceFactory.FACTORY_LABEL)).thenReturn(factoryClassName);
   }
 
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/edm/ScenarioEdmProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/edm/ScenarioEdmProvider.java b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/edm/ScenarioEdmProvider.java
index 94f7fea..6585ccb 100644
--- a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/edm/ScenarioEdmProvider.java
+++ b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/edm/ScenarioEdmProvider.java
@@ -216,7 +216,7 @@ public class ScenarioEdmProvider extends EdmProvider {
             .setKey(getKey("EmployeeId"))
             .setNavigationProperties(navigationProperties)
             .setMapping(new Mapping()
-//                  .setMimeType("getImageType")
+                // .setMimeType("getImageType")
 //                .setMediaResourceMimeTypeKey("~mrmtk")
                 .setMediaResourceMimeTypeKey("getImageType"));
 
@@ -269,8 +269,8 @@ public class ScenarioEdmProvider extends EdmProvider {
             .setHasStream(true)
             .setNavigationProperties(navigationProperties)
             .setMapping(new Mapping()
-//            .setMimeType("getImageType")
-            .setMediaResourceMimeTypeKey("getImageType"));
+                // .setMimeType("getImageType")
+                .setMediaResourceMimeTypeKey("getImageType"));
 
       } else if (ENTITY_TYPE_1_5.getName().equals(edmFQName.getName())) {
         List<Property> properties = new ArrayList<Property>();
@@ -321,7 +321,7 @@ public class ScenarioEdmProvider extends EdmProvider {
             .setHasStream(true)
             .setKey(getKey("Id", "Type"))
             .setMapping(new Mapping()
-            //.setMimeType("getType")
+                // .setMimeType("getType")
                 .setMediaResourceMimeTypeKey("getType"));
       }
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6a866625/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/helper/StringHelper.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/helper/StringHelper.java b/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/helper/StringHelper.java
index feb4ddd..2ef1c6c 100644
--- a/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/helper/StringHelper.java
+++ b/odata2-lib/odata-testutil/src/main/java/org/apache/olingo/odata2/testutil/helper/StringHelper.java
@@ -18,7 +18,13 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.testutil.helper;
 
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
 import java.nio.charset.Charset;
 import java.util.Random;
 
@@ -30,15 +36,14 @@ import org.apache.olingo.odata2.testutil.TestUtilRuntimeException;
  */
 public class StringHelper {
 
-
   public static class Stream {
     private final byte[] data;
 
-    private Stream(byte[] data) {
+    private Stream(final byte[] data) {
       this.data = data;
     }
 
-    public Stream(String content, String charset) throws UnsupportedEncodingException {
+    public Stream(final String content, final String charset) throws UnsupportedEncodingException {
       this(content.getBytes(charset));
     }
 
@@ -54,11 +59,11 @@ public class StringHelper {
       return asString("UTF-8");
     }
 
-    public String asString(String charsetName) {
+    public String asString(final String charsetName) {
       return new String(data, Charset.forName(charsetName));
     }
 
-    public Stream print(OutputStream out) throws IOException {
+    public Stream print(final OutputStream out) throws IOException {
       out.write(data);
       return this;
     }
@@ -71,7 +76,7 @@ public class StringHelper {
      * Number of lines separated by line breaks (<code>CRLF</code>).
      * A content string like <code>text\r\nmoreText</code> will result in
      * a line count of <code>2</code>.
-     *
+     * 
      * @return lines count
      */
     public int linesCount() {
@@ -79,7 +84,7 @@ public class StringHelper {
     }
   }
 
-  public static Stream toStream(InputStream stream) throws IOException {
+  public static Stream toStream(final InputStream stream) throws IOException {
     byte[] result = new byte[0];
     byte[] tmp = new byte[8192];
     int readCount = stream.read(tmp);
@@ -94,7 +99,7 @@ public class StringHelper {
     return new Stream(result);
   }
 
-  public static Stream toStream(String content) {
+  public static Stream toStream(final String content) {
     try {
       return new Stream(content, "UTF-8");
     } catch (UnsupportedEncodingException e) {
@@ -102,7 +107,6 @@ public class StringHelper {
     }
   }
 
-
   public static String inputStreamToString(final InputStream in, final boolean preserveLineBreaks) throws IOException {
     final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, Charset.forName("UTF-8")));
     final StringBuilder stringBuilder = new StringBuilder();
@@ -122,12 +126,12 @@ public class StringHelper {
     return result;
   }
 
-  public static int countLines(String content) {
+  public static int countLines(final String content) {
     return countLines(content, "\r\n");
   }
 
-  public static int countLines(String content, String lineBreak) {
-    if(content == null) {
+  public static int countLines(final String content, final String lineBreak) {
+    if (content == null) {
       return -1;
     }
 
@@ -135,7 +139,7 @@ public class StringHelper {
     int count = 1;
 
     while (lastPos >= 0) {
-      lastPos = content.indexOf(lineBreak, lastPos+1);
+      lastPos = content.indexOf(lineBreak, lastPos + 1);
       count++;
     }
     return count;


[17/50] [abbrv] git commit: [OLINGO-310] Confirm consumer can consume content only payload

Posted by mi...@apache.org.
[OLINGO-310] Confirm consumer can consume content only payload


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/6ac100f5
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/6ac100f5
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/6ac100f5

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 6ac100f51a0a6bd5c0e8cfce3e650d5ed85d3f6e
Parents: f14dfd4
Author: Christian Amend <ch...@apache.org>
Authored: Wed Jun 25 15:24:14 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Wed Jun 25 15:31:26 2014 +0200

----------------------------------------------------------------------
 .../core/ep/consumer/JsonEntryConsumerTest.java | 74 ++++++++++++++++++-
 .../core/ep/consumer/XmlEntityConsumerTest.java | 75 +++++++++++++++++++-
 .../src/test/resources/EmployeeContentOnly.xml  | 37 ++++++++++
 .../EmployeeContentOnlyWithAdditionalLink.xml   | 38 ++++++++++
 .../test/resources/JsonEmployeeContentOnly.json | 25 +++++++
 ...onEmployeeContentOnlyWithAdditionalLink.json | 30 ++++++++
 .../src/test/resources/JsonRoomContentOnly.json |  8 +++
 .../JsonRoomContentOnlyWithAdditionalLink.json  | 13 ++++
 .../src/test/resources/RoomContentOnly.xml      | 28 ++++++++
 .../RoomContentOnlyWithAdditionalLink.xml       | 29 ++++++++
 10 files changed, 352 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6ac100f5/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumerTest.java
index 30539fb..4836fd3 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntryConsumerTest.java
@@ -55,6 +55,76 @@ public class JsonEntryConsumerTest extends AbstractConsumerTest {
   private static final String negativeJsonStart_1 = "{ \"abc\": {";
   private static final String negativeJsonStart_2 = "{ \"d\": [a: 1, b: 2] }";
 
+  @Test
+  public void readContentOnlyEmployee() throws Exception {
+    // prepare
+    String content = readFile("JsonEmployeeContentOnly.json");
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    InputStream contentBody = createContentAsStream(content);
+
+    // execute
+    JsonEntityConsumer xec = new JsonEntityConsumer();
+    ODataEntry result =
+        xec.readEntry(entitySet, contentBody, EntityProviderReadProperties.init().mergeSemantic(true).build());
+
+    // verify
+    assertEquals(9, result.getProperties().size());
+  }
+
+  @Test
+  public void readContentOnlyRoom() throws Exception {
+    // prepare
+    String content = readFile("JsonRoomContentOnly.json");
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+    InputStream contentBody = createContentAsStream(content);
+
+    // execute
+    JsonEntityConsumer xec = new JsonEntityConsumer();
+    ODataEntry result =
+        xec.readEntry(entitySet, contentBody, EntityProviderReadProperties.init().mergeSemantic(true).build());
+
+    // verify
+    assertEquals(4, result.getProperties().size());
+  }
+
+  @Test
+  public void readContentOnlyEmployeeWithAdditionalLink() throws Exception {
+    // prepare
+    String content = readFile("JsonEmployeeContentOnlyWithAdditionalLink.json");
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    InputStream contentBody = createContentAsStream(content);
+
+    // execute
+    JsonEntityConsumer xec = new JsonEntityConsumer();
+    ODataEntry result =
+        xec.readEntry(entitySet, contentBody, EntityProviderReadProperties.init().mergeSemantic(true).build());
+
+    // verify
+    assertEquals(9, result.getProperties().size());
+    List<String> associationUris = result.getMetadata().getAssociationUris("ne_Manager");
+    assertEquals(1, associationUris.size());
+    assertEquals("http://host:8080/ReferenceScenario.svc/Managers('1')", associationUris.get(0));
+  }
+
+  @Test
+  public void readContentOnlyRoomWithAdditionalLink() throws Exception {
+    // prepare
+    String content = readFile("JsonRoomContentOnlyWithAdditionalLink.json");
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+    InputStream contentBody = createContentAsStream(content);
+
+    // execute
+    JsonEntityConsumer xec = new JsonEntityConsumer();
+    ODataEntry result =
+        xec.readEntry(entitySet, contentBody, EntityProviderReadProperties.init().mergeSemantic(true).build());
+
+    // verify
+    assertEquals(4, result.getProperties().size());
+    List<String> associationUris = result.getMetadata().getAssociationUris("nr_Building");
+    assertEquals(1, associationUris.size());
+    assertEquals("http://host:8080/ReferenceScenario.svc/Buildings('1')", associationUris.get(0));
+  }
+
   @Test(expected = EntityProviderException.class)
   public void doubleClosingBracketsAtTheEnd() throws Exception {
     String invalidJson = "{ \"Id\" : \"1\", \"Seats\" : 1, \"Version\" : 1}}";
@@ -65,7 +135,7 @@ public class JsonEntryConsumerTest extends AbstractConsumerTest {
     JsonEntityConsumer xec = new JsonEntityConsumer();
     xec.readEntry(entitySet, contentBody, DEFAULT_PROPERTIES);
   }
-  
+
   @Test
   public void readSimpleRoomEntry() throws Exception {
     ODataEntry roomEntry = prepareAndExecuteEntry(SIMPLE_ENTRY_ROOM, "Rooms", DEFAULT_PROPERTIES);
@@ -88,7 +158,7 @@ public class JsonEntryConsumerTest extends AbstractConsumerTest {
     assertEquals("http://localhost:8080/ReferenceScenario.svc/Rooms('1')/nr_Building", associationUris.get(0));
 
     EntryMetadata metadata = roomEntry.getMetadata();
-    assertEquals("W/\"1\"",metadata.getEtag());
+    assertEquals("W/\"1\"", metadata.getEtag());
   }
 
   @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6ac100f5/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
index 45e9861..2194619 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumerTest.java
@@ -433,6 +433,76 @@ public class XmlEntityConsumerTest extends AbstractXmlConsumerTest {
   }
 
   @Test
+  public void readContentOnlyEmployee() throws Exception {
+    // prepare
+    String content = readFile("EmployeeContentOnly.xml");
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    InputStream contentBody = createContentAsStream(content);
+
+    // execute
+    XmlEntityConsumer xec = new XmlEntityConsumer();
+    ODataEntry result =
+        xec.readEntry(entitySet, contentBody, EntityProviderReadProperties.init().mergeSemantic(true).build());
+
+    // verify
+    assertEquals(9, result.getProperties().size());
+  }
+
+  @Test
+  public void readContentOnlyRoom() throws Exception {
+    // prepare
+    String content = readFile("RoomContentOnly.xml");
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+    InputStream contentBody = createContentAsStream(content);
+
+    // execute
+    XmlEntityConsumer xec = new XmlEntityConsumer();
+    ODataEntry result =
+        xec.readEntry(entitySet, contentBody, EntityProviderReadProperties.init().mergeSemantic(true).build());
+
+    // verify
+    assertEquals(4, result.getProperties().size());
+  }
+
+  @Test
+  public void readContentOnlyEmployeeWithAdditionalLink() throws Exception {
+    // prepare
+    String content = readFile("EmployeeContentOnlyWithAdditionalLink.xml");
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    InputStream contentBody = createContentAsStream(content);
+
+    // execute
+    XmlEntityConsumer xec = new XmlEntityConsumer();
+    ODataEntry result =
+        xec.readEntry(entitySet, contentBody, EntityProviderReadProperties.init().mergeSemantic(true).build());
+
+    // verify
+    assertEquals(9, result.getProperties().size());
+    List<String> associationUris = result.getMetadata().getAssociationUris("ne_Manager");
+    assertEquals(1, associationUris.size());
+    assertEquals("Managers('1')", associationUris.get(0));
+  }
+
+  @Test
+  public void readContentOnlyRoomWithAdditionalLink() throws Exception {
+    // prepare
+    String content = readFile("RoomContentOnlyWithAdditionalLink.xml");
+    EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
+    InputStream contentBody = createContentAsStream(content);
+
+    // execute
+    XmlEntityConsumer xec = new XmlEntityConsumer();
+    ODataEntry result =
+        xec.readEntry(entitySet, contentBody, EntityProviderReadProperties.init().mergeSemantic(true).build());
+
+    // verify
+    assertEquals(4, result.getProperties().size());
+    List<String> associationUris = result.getMetadata().getAssociationUris("nr_Building");
+    assertEquals(1, associationUris.size());
+    assertEquals("Buildings('1')", associationUris.get(0));
+  }
+
+  @Test
   public void readDeltaLink() throws Exception {
     // prepare
     String content = readFile("feed_with_delta_link.xml");
@@ -815,9 +885,8 @@ public class XmlEntityConsumerTest extends AbstractXmlConsumerTest {
     EntryMetadata employeeMetadata = employee.getMetadata();
     assertNotNull(employeeMetadata);
     assertEquals("W/\"1\"", employeeMetadata.getEtag());
-    
-    
-    //Inline
+
+    // Inline
     ODataEntry room = (ODataEntry) properties.get("ne_Room");
     Map<String, Object> roomProperties = room.getProperties();
     assertEquals(4, roomProperties.size());

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6ac100f5/odata2-lib/odata-core/src/test/resources/EmployeeContentOnly.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/EmployeeContentOnly.xml b/odata2-lib/odata-core/src/test/resources/EmployeeContentOnly.xml
new file mode 100644
index 0000000..161b730
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/EmployeeContentOnly.xml
@@ -0,0 +1,37 @@
+<!--
+  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.
+-->
+<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://host:8080/ReferenceScenario.svc/">
+	<m:properties>
+		<d:EmployeeId>1</d:EmployeeId>
+		<d:EmployeeName>Walter Winter</d:EmployeeName>
+		<d:ManagerId>1</d:ManagerId>
+		<d:RoomId>1</d:RoomId>
+		<d:TeamId>1</d:TeamId>
+		<d:Location m:type="RefScenario.c_Location">
+			<d:City m:type="RefScenario.c_City">
+				<d:PostalCode>69124</d:PostalCode>
+				<d:CityName>Heidelberg</d:CityName>
+			</d:City>
+			<d:Country>Germany</d:Country>
+		</d:Location>
+		<d:Age>52</d:Age>
+		<d:EntryDate>1999-01-01T00:00:00</d:EntryDate>
+		<d:ImageUrl>Employees('1')/$value</d:ImageUrl>
+	</m:properties>
+</entry>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6ac100f5/odata2-lib/odata-core/src/test/resources/EmployeeContentOnlyWithAdditionalLink.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/EmployeeContentOnlyWithAdditionalLink.xml b/odata2-lib/odata-core/src/test/resources/EmployeeContentOnlyWithAdditionalLink.xml
new file mode 100644
index 0000000..dfa1b95
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/EmployeeContentOnlyWithAdditionalLink.xml
@@ -0,0 +1,38 @@
+<!--
+  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.
+-->
+<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://host:8080/ReferenceScenario.svc/">
+	<link href="Managers('1')" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/ne_Manager" title="ne_Manager" type="application/atom+xml;type=entry"/>
+	<m:properties>
+		<d:EmployeeId>1</d:EmployeeId>
+		<d:EmployeeName>Walter Winter</d:EmployeeName>
+		<d:ManagerId>1</d:ManagerId>
+		<d:RoomId>1</d:RoomId>
+		<d:TeamId>1</d:TeamId>
+		<d:Location m:type="RefScenario.c_Location">
+			<d:City m:type="RefScenario.c_City">
+				<d:PostalCode>69124</d:PostalCode>
+				<d:CityName>Heidelberg</d:CityName>
+			</d:City>
+			<d:Country>Germany</d:Country>
+		</d:Location>
+		<d:Age>52</d:Age>
+		<d:EntryDate>1999-01-01T00:00:00</d:EntryDate>
+		<d:ImageUrl>Employees('1')/$value</d:ImageUrl>
+	</m:properties>
+</entry>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6ac100f5/odata2-lib/odata-core/src/test/resources/JsonEmployeeContentOnly.json
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/JsonEmployeeContentOnly.json b/odata2-lib/odata-core/src/test/resources/JsonEmployeeContentOnly.json
new file mode 100644
index 0000000..9352a29
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/JsonEmployeeContentOnly.json
@@ -0,0 +1,25 @@
+{
+	"d" : {
+		"EmployeeId" : "1",
+		"EmployeeName" : "Walter Winter",
+		"ManagerId" : "1",
+		"RoomId" : "1",
+		"TeamId" : "1",
+		"Location" : {
+			"__metadata" : {
+				"type" : "RefScenario.c_Location"
+			},
+			"City" : {
+				"__metadata" : {
+					"type" : "RefScenario.c_City"
+				},
+				"PostalCode" : "69124",
+				"CityName" : "Heidelberg"
+			},
+			"Country" : "Germany"
+		},
+		"Age" : 52,
+		"EntryDate" : "\/Date(915148800000)\/",
+		"ImageUrl" : "Employees('1')/$value"
+	}
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6ac100f5/odata2-lib/odata-core/src/test/resources/JsonEmployeeContentOnlyWithAdditionalLink.json
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/JsonEmployeeContentOnlyWithAdditionalLink.json b/odata2-lib/odata-core/src/test/resources/JsonEmployeeContentOnlyWithAdditionalLink.json
new file mode 100644
index 0000000..fb90c14
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/JsonEmployeeContentOnlyWithAdditionalLink.json
@@ -0,0 +1,30 @@
+{
+	"d" : {
+		"EmployeeId" : "1",
+		"EmployeeName" : "Walter Winter",
+		"ManagerId" : "1",
+		"RoomId" : "1",
+		"TeamId" : "1",
+		"Location" : {
+			"__metadata" : {
+				"type" : "RefScenario.c_Location"
+			},
+			"City" : {
+				"__metadata" : {
+					"type" : "RefScenario.c_City"
+				},
+				"PostalCode" : "69124",
+				"CityName" : "Heidelberg"
+			},
+			"Country" : "Germany"
+		},
+		"Age" : 52,
+		"EntryDate" : "\/Date(915148800000)\/",
+		"ImageUrl" : "Employees('1')/$value",
+		"ne_Manager" : {
+			"__deferred" : {
+				"uri" : "http://host:8080/ReferenceScenario.svc/Managers('1')"
+			}
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6ac100f5/odata2-lib/odata-core/src/test/resources/JsonRoomContentOnly.json
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/JsonRoomContentOnly.json b/odata2-lib/odata-core/src/test/resources/JsonRoomContentOnly.json
new file mode 100644
index 0000000..f8c741a
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/JsonRoomContentOnly.json
@@ -0,0 +1,8 @@
+{
+	"d" : {
+		"Id" : "1",
+		"Name" : "Room 1",
+		"Seats" : 1,
+		"Version" : 1
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6ac100f5/odata2-lib/odata-core/src/test/resources/JsonRoomContentOnlyWithAdditionalLink.json
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/JsonRoomContentOnlyWithAdditionalLink.json b/odata2-lib/odata-core/src/test/resources/JsonRoomContentOnlyWithAdditionalLink.json
new file mode 100644
index 0000000..7a511b6
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/JsonRoomContentOnlyWithAdditionalLink.json
@@ -0,0 +1,13 @@
+{
+	"d" : {
+		"Id" : "1",
+		"Name" : "Room 1",
+		"Seats" : 1,
+		"Version" : 1,
+		"nr_Building" : {
+			"__deferred" : {
+				"uri" : "http://host:8080/ReferenceScenario.svc/Buildings('1')"
+			}
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6ac100f5/odata2-lib/odata-core/src/test/resources/RoomContentOnly.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/RoomContentOnly.xml b/odata2-lib/odata-core/src/test/resources/RoomContentOnly.xml
new file mode 100644
index 0000000..558e713
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/RoomContentOnly.xml
@@ -0,0 +1,28 @@
+<!--
+  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.
+-->
+<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://host:8080/ReferenceScenario.svc/" m:etag="W/&quot;1&quot;">
+	<content type="application/xml">
+		<m:properties>
+			<d:Id>1</d:Id>
+			<d:Name>Room 1</d:Name>
+			<d:Seats>1</d:Seats>
+			<d:Version>1</d:Version>
+		</m:properties>
+	</content>
+</entry>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6ac100f5/odata2-lib/odata-core/src/test/resources/RoomContentOnlyWithAdditionalLink.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/RoomContentOnlyWithAdditionalLink.xml b/odata2-lib/odata-core/src/test/resources/RoomContentOnlyWithAdditionalLink.xml
new file mode 100644
index 0000000..a7d039e
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/RoomContentOnlyWithAdditionalLink.xml
@@ -0,0 +1,29 @@
+<!--
+  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.
+-->
+<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://host:8080/ReferenceScenario.svc/" m:etag="W/&quot;1&quot;">
+	<link href="Buildings('1')" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/nr_Building" title="nr_Building" type="application/atom+xml;type=entry"/>
+	<content type="application/xml">
+		<m:properties>
+			<d:Id>1</d:Id>
+			<d:Name>Room 1</d:Name>
+			<d:Seats>1</d:Seats>
+			<d:Version>1</d:Version>
+		</m:properties>
+	</content>
+</entry>
\ No newline at end of file


[06/50] [abbrv] git commit: [OLINGO-224] Update reference scenario to showcase Delta Token Implementation

Posted by mi...@apache.org.
[OLINGO-224] Update reference scenario to showcase Delta Token
Implementation

Signed-off-by: Chandan V A <ch...@sap.com>


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/14e79efc
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/14e79efc
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/14e79efc

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 14e79efc6eb41d71271002416a1e1acea4fcb867
Parents: 01db5f1
Author: Chandan V A <ch...@sap.com>
Authored: Sun Jun 8 19:30:38 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sun Jun 8 19:30:38 2014 +0530

----------------------------------------------------------------------
 .../SalesOrderItemTombstoneListener.java        | 77 ++++++++++++++++++++
 .../listeners/SalesOrderTombstoneListener.java  | 39 ++++++++++
 .../processor/ref/model/SalesOrderHeader.java   | 23 ++----
 .../jpa/processor/ref/model/SalesOrderItem.java |  2 +
 4 files changed, 125 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/14e79efc/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
new file mode 100644
index 0000000..c44bc62
--- /dev/null
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
@@ -0,0 +1,77 @@
+package org.apache.olingo.odata2.jpa.processor.ref.listeners;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.olingo.odata2.api.edm.EdmException;
+import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo;
+import org.apache.olingo.odata2.jpa.processor.api.ODataJPATombstoneContext;
+import org.apache.olingo.odata2.jpa.processor.api.ODataJPATombstoneEntityListener;
+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.jpql.JPQLContext;
+import org.apache.olingo.odata2.jpa.processor.api.jpql.JPQLContextType;
+import org.apache.olingo.odata2.jpa.processor.api.jpql.JPQLStatement;
+
+public class SalesOrderItemTombstoneListener extends ODataJPATombstoneEntityListener {
+
+  @Override
+  public Query getQuery(final GetEntitySetUriInfo resultsView, final EntityManager em) {
+    JPQLContextType contextType = null;
+
+    try {
+      if (!resultsView.getStartEntitySet().getName().equals(resultsView.getTargetEntitySet().getName())) {
+        contextType = JPQLContextType.JOIN;
+      } else {
+        contextType = JPQLContextType.SELECT;
+      }
+
+      JPQLContext jpqlContext = JPQLContext.createBuilder(contextType, resultsView).build();
+      JPQLStatement jpqlStatement = JPQLStatement.createBuilder(jpqlContext).build();
+      String deltaToken = ODataJPATombstoneContext.getDeltaToken();
+
+      Query query = null;
+      if (deltaToken != null) {
+        String statement = jpqlStatement.toString();
+        String[] statementParts = statement.split(JPQLStatement.KEYWORD.WHERE);
+        String deltaCondition = jpqlContext.getJPAEntityAlias() + ".creationDate >= {ts '" + deltaToken + "'}";
+        if (statementParts.length > 1) {
+          statement =
+              statementParts[0] + JPQLStatement.DELIMITER.SPACE + JPQLStatement.KEYWORD.WHERE
+                  + JPQLStatement.DELIMITER.SPACE + deltaCondition + JPQLStatement.DELIMITER.SPACE
+                  + JPQLStatement.Operator.AND + statementParts[1];
+        } else {
+          statement =
+              statementParts[0] + JPQLStatement.DELIMITER.SPACE + JPQLStatement.KEYWORD.WHERE
+                  + JPQLStatement.DELIMITER.SPACE + deltaCondition;
+        }
+
+        query = em.createQuery(statement);
+      } else {
+        query = em.createQuery(jpqlStatement.toString());
+      }
+
+      return query;
+    } catch (EdmException e) {
+      return null;
+    } catch (ODataJPAModelException e) {
+      return null;
+    } catch (ODataJPARuntimeException e) {
+      return null;
+    }
+  }
+
+  @Override
+  public String generateDeltaToken(final List<Object> deltas, final Query query) {
+    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.000");
+
+    Date date = new Date(System.currentTimeMillis());
+    dateFormat.format(date);
+    return dateFormat.format(date);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/14e79efc/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
new file mode 100644
index 0000000..ae80c53
--- /dev/null
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
@@ -0,0 +1,39 @@
+package org.apache.olingo.odata2.jpa.processor.ref.listeners;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PostLoad;
+import javax.persistence.Query;
+
+import org.apache.olingo.odata2.api.uri.info.GetEntitySetUriInfo;
+import org.apache.olingo.odata2.jpa.processor.api.ODataJPATombstoneContext;
+import org.apache.olingo.odata2.jpa.processor.api.ODataJPATombstoneEntityListener;
+import org.apache.olingo.odata2.jpa.processor.ref.model.SalesOrderHeader;
+
+public class SalesOrderTombstoneListener extends ODataJPATombstoneEntityListener {
+
+  public static String ENTITY_NAME = "SalesOrderHeader";
+
+  @PostLoad
+  public void handleDelta(final Object entity) {
+    SalesOrderHeader so = (SalesOrderHeader) entity;
+
+    if (so.getCreationDate().getTime().getTime() < ODataJPATombstoneContext.getDeltaTokenUTCTimeStamp()) {
+      return;
+    } else {
+      addToDelta(entity, ENTITY_NAME);
+    }
+  }
+
+  @Override
+  public String generateDeltaToken(final List<Object> deltas, final Query query) {
+    return String.valueOf(System.currentTimeMillis());
+  }
+
+  @Override
+  public Query getQuery(final GetEntitySetUriInfo resultsView, final EntityManager em) {
+    return null;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/14e79efc/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderHeader.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderHeader.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderHeader.java
index 74a39c8..f54bbe7 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderHeader.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderHeader.java
@@ -20,15 +20,14 @@ package org.apache.olingo.odata2.jpa.processor.ref.model;
 
 import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.TimeZone;
 
 import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.EntityListeners;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
@@ -40,6 +39,7 @@ import javax.persistence.TemporalType;
 
 @Entity
 @Table(name = "T_SALESORDERHEADER")
+@EntityListeners(org.apache.olingo.odata2.jpa.processor.ref.listeners.SalesOrderTombstoneListener.class)
 public class SalesOrderHeader {
 
   public SalesOrderHeader() {}
@@ -116,26 +116,17 @@ public class SalesOrderHeader {
     this.soId = soId;
   }
 
-  public Date getCreationDate() {
+  public Calendar getCreationDate() {
     if (creationDate == null) {
       return null;
     }
-    long dbTime = creationDate.getTime().getTime();
-    Date originalDate = new Date(dbTime + TimeZone.getDefault().getOffset(dbTime));
-    return originalDate;
+
+    return creationDate;
   }
 
   public void setCreationDate(final Calendar creationDate) {
-    long originalTime;
-    if (creationDate != null) {
-      originalTime = creationDate.getTime().getTime();
-    } else {
-      originalTime = Calendar.getInstance(TimeZone.getDefault()).getTime().getTime();
-    }
-    Date newDate = new Date(originalTime - TimeZone.getDefault().getOffset(originalTime));
-    Calendar newCalendar = Calendar.getInstance();
-    newCalendar.setTime(newDate);
-    this.creationDate = newCalendar;
+
+    this.creationDate = creationDate;
   }
 
   public String getCurrencyCode() {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/14e79efc/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderItem.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderItem.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderItem.java
index 412287b..44bf6c2 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderItem.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/SalesOrderItem.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata2.jpa.processor.ref.model;
 import javax.persistence.Column;
 import javax.persistence.EmbeddedId;
 import javax.persistence.Entity;
+import javax.persistence.EntityListeners;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
@@ -28,6 +29,7 @@ import javax.persistence.Transient;
 
 @Entity
 @Table(name = "T_SALESORDERITEM")
+@EntityListeners(org.apache.olingo.odata2.jpa.processor.ref.listeners.SalesOrderItemTombstoneListener.class)
 public class SalesOrderItem {
 
   public SalesOrderItem() {}


[30/50] [abbrv] git commit: [OLINGO-331] Set release version 2.0.0

Posted by mi...@apache.org.
[OLINGO-331] Set release version 2.0.0


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/ae37027d
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/ae37027d
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/ae37027d

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: ae37027df73593578f1d2ae0fe2c68b9992e1538
Parents: 5bd5a22
Author: Michael Bolz <mi...@apache.org>
Authored: Fri Jul 11 13:34:32 2014 +0200
Committer: Michael Bolz <mi...@apache.org>
Committed: Fri Jul 11 13:34:32 2014 +0200

----------------------------------------------------------------------
 odata2-annotation-processor/annotation-processor-api/pom.xml     | 2 +-
 odata2-annotation-processor/annotation-processor-core/pom.xml    | 2 +-
 odata2-annotation-processor/annotation-processor-ref/pom.xml     | 2 +-
 odata2-annotation-processor/annotation-processor-web/pom.xml     | 2 +-
 odata2-annotation-processor/pom.xml                              | 2 +-
 odata2-dist/janos/pom.xml                                        | 2 +-
 odata2-dist/javadoc/pom.xml                                      | 2 +-
 odata2-dist/jpa/pom.xml                                          | 2 +-
 odata2-dist/lib/pom.xml                                          | 2 +-
 odata2-dist/pom.xml                                              | 2 +-
 odata2-dist/ref/pom.xml                                          | 2 +-
 odata2-jpa-processor/jpa-api/pom.xml                             | 2 +-
 odata2-jpa-processor/jpa-core/pom.xml                            | 2 +-
 odata2-jpa-processor/jpa-ref/pom.xml                             | 2 +-
 odata2-jpa-processor/jpa-web/pom.xml                             | 2 +-
 odata2-jpa-processor/pom.xml                                     | 2 +-
 odata2-lib/odata-annotation/pom.xml                              | 2 +-
 odata2-lib/odata-api/pom.xml                                     | 2 +-
 odata2-lib/odata-core/pom.xml                                    | 2 +-
 odata2-lib/odata-fit/pom.xml                                     | 2 +-
 odata2-lib/odata-ref/pom.xml                                     | 2 +-
 odata2-lib/odata-testutil/pom.xml                                | 2 +-
 odata2-lib/odata-web/pom.xml                                     | 2 +-
 odata2-lib/pom.xml                                               | 2 +-
 odata2-sample/cars-annotation-archetype/pom.xml                  | 4 ++--
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/cars-jpa-archetype/pom.xml                         | 2 +-
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/cars-service-archetype/pom.xml                     | 4 ++--
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/pom.xml                                            | 4 ++--
 pom.xml                                                          | 2 +-
 32 files changed, 35 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-annotation-processor/annotation-processor-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-api/pom.xml b/odata2-annotation-processor/annotation-processor-api/pom.xml
index bbbfb94..1b39e30 100644
--- a/odata2-annotation-processor/annotation-processor-api/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-api/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0-RC01</version>
+    <version>2.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-annotation-processor/annotation-processor-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/pom.xml b/odata2-annotation-processor/annotation-processor-core/pom.xml
index ae5a115..d367282 100644
--- a/odata2-annotation-processor/annotation-processor-core/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0-RC01</version>
+    <version>2.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-annotation-processor/annotation-processor-ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-ref/pom.xml b/odata2-annotation-processor/annotation-processor-ref/pom.xml
index f631752..8e05f59 100644
--- a/odata2-annotation-processor/annotation-processor-ref/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-ref/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0-RC01</version>
+    <version>2.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-annotation-processor/annotation-processor-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-web/pom.xml b/odata2-annotation-processor/annotation-processor-web/pom.xml
index 94f087f..17d85bc 100644
--- a/odata2-annotation-processor/annotation-processor-web/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-web/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0-RC01</version>
+    <version>2.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-annotation-processor/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/pom.xml b/odata2-annotation-processor/pom.xml
index c3192e2..a3f3bfd 100644
--- a/odata2-annotation-processor/pom.xml
+++ b/odata2-annotation-processor/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-dist/janos/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/janos/pom.xml b/odata2-dist/janos/pom.xml
index 7dda7fd..220ac80 100644
--- a/odata2-dist/janos/pom.xml
+++ b/odata2-dist/janos/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-dist/javadoc/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/javadoc/pom.xml b/odata2-dist/javadoc/pom.xml
index 13555cd..eb9487d 100644
--- a/odata2-dist/javadoc/pom.xml
+++ b/odata2-dist/javadoc/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-dist/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/jpa/pom.xml b/odata2-dist/jpa/pom.xml
index a9ff0a7..7a40638 100644
--- a/odata2-dist/jpa/pom.xml
+++ b/odata2-dist/jpa/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-dist/lib/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/lib/pom.xml b/odata2-dist/lib/pom.xml
index 2bfa985..60b3bea 100644
--- a/odata2-dist/lib/pom.xml
+++ b/odata2-dist/lib/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-dist/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/pom.xml b/odata2-dist/pom.xml
index 561568b..dcf28d1 100644
--- a/odata2-dist/pom.xml
+++ b/odata2-dist/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-dist/ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/ref/pom.xml b/odata2-dist/ref/pom.xml
index 341e8e6..2c3de83 100644
--- a/odata2-dist/ref/pom.xml
+++ b/odata2-dist/ref/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-jpa-processor/jpa-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/pom.xml b/odata2-jpa-processor/jpa-api/pom.xml
index af3f742..7903559 100644
--- a/odata2-jpa-processor/jpa-api/pom.xml
+++ b/odata2-jpa-processor/jpa-api/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0-RC01</version>
+		<version>2.0.0</version>
 		<relativePath>../</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-jpa-processor/jpa-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/pom.xml b/odata2-jpa-processor/jpa-core/pom.xml
index f5c2079..fc7cff1 100644
--- a/odata2-jpa-processor/jpa-core/pom.xml
+++ b/odata2-jpa-processor/jpa-core/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0-RC01</version>
+		<version>2.0.0</version>
 		<relativePath>../</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/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 65d748e..f67db2a 100644
--- a/odata2-jpa-processor/jpa-ref/pom.xml
+++ b/odata2-jpa-processor/jpa-ref/pom.xml
@@ -17,7 +17,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0-RC01</version>
+		<version>2.0.0</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-jpa-processor/jpa-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/pom.xml b/odata2-jpa-processor/jpa-web/pom.xml
index b86b714..5c326e7 100644
--- a/odata2-jpa-processor/jpa-web/pom.xml
+++ b/odata2-jpa-processor/jpa-web/pom.xml
@@ -21,7 +21,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0-RC01</version>
+		<version>2.0.0</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-jpa-processor/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/pom.xml b/odata2-jpa-processor/pom.xml
index ce51038..962b752 100644
--- a/odata2-jpa-processor/pom.xml
+++ b/odata2-jpa-processor/pom.xml
@@ -18,7 +18,7 @@
     <parent>
       <groupId>org.apache.olingo</groupId>
       <artifactId>olingo-odata2-parent</artifactId>
-      <version>2.0.0-RC01</version>
+      <version>2.0.0</version>
       <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-lib/odata-annotation/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-annotation/pom.xml b/odata2-lib/odata-annotation/pom.xml
index 4876156..ec7edd5 100644
--- a/odata2-lib/odata-annotation/pom.xml
+++ b/odata2-lib/odata-annotation/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-lib</artifactId>
-    <version>2.0.0-RC01</version>
+    <version>2.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-lib/odata-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/pom.xml b/odata2-lib/odata-api/pom.xml
index d898e7e..d315de5 100644
--- a/odata2-lib/odata-api/pom.xml
+++ b/odata2-lib/odata-api/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-    <version>2.0.0-RC01</version>
+    <version>2.0.0</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-lib/odata-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/pom.xml b/odata2-lib/odata-core/pom.xml
index 1264824..0bf859b 100644
--- a/odata2-lib/odata-core/pom.xml
+++ b/odata2-lib/odata-core/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.0.0-RC01</version>
+		<version>2.0.0</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-lib/odata-fit/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/pom.xml b/odata2-lib/odata-fit/pom.xml
index be47df2..f4b9086 100644
--- a/odata2-lib/odata-fit/pom.xml
+++ b/odata2-lib/odata-fit/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.0.0-RC01</version>
+		<version>2.0.0</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-lib/odata-ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-ref/pom.xml b/odata2-lib/odata-ref/pom.xml
index df81077..1280ef4 100644
--- a/odata2-lib/odata-ref/pom.xml
+++ b/odata2-lib/odata-ref/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.0.0-RC01</version>
+		<version>2.0.0</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-lib/odata-testutil/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-testutil/pom.xml b/odata2-lib/odata-testutil/pom.xml
index cf9b4f4..292bfbb 100644
--- a/odata2-lib/odata-testutil/pom.xml
+++ b/odata2-lib/odata-testutil/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-lib</artifactId>
-    <version>2.0.0-RC01</version>
+    <version>2.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-lib/odata-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-web/pom.xml b/odata2-lib/odata-web/pom.xml
index 7d0e181..dc3f69d 100644
--- a/odata2-lib/odata-web/pom.xml
+++ b/odata2-lib/odata-web/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-lib</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-lib/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/pom.xml b/odata2-lib/pom.xml
index 84c8486..88c2fb8 100644
--- a/odata2-lib/pom.xml
+++ b/odata2-lib/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-sample/cars-annotation-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/pom.xml b/odata2-sample/cars-annotation-archetype/pom.xml
index 960abe5..aed56e4 100644
--- a/odata2-sample/cars-annotation-archetype/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/pom.xml
@@ -16,13 +16,13 @@
   <groupId>org.apache.olingo</groupId>
   <artifactId>olingo-odata2-sample-cars-annotation-archetype</artifactId>
   <name>${project.artifactId}</name>
-  <version>2.0.0-RC01</version>
+  <version>2.0.0</version>
   <packaging>maven-archetype</packaging>
 
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-sample</artifactId>
-    <version>2.0.0-RC01</version>
+    <version>2.0.0</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
index 24a0a30..6ae10dd 100644
--- a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
@@ -32,7 +32,7 @@
     <version.servlet-api>2.5</version.servlet-api>
     <version.jaxrs-api>2.0-m10</version.jaxrs-api>
     <version.slf4j>1.7.1</version.slf4j>
-    <version.olingo>2.0.0-RC01</version.olingo>
+    <version.olingo>2.0.0</version.olingo>
   </properties>
 
   <build>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-sample/cars-jpa-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/pom.xml b/odata2-sample/cars-jpa-archetype/pom.xml
index f6df4db..ed63eb3 100644
--- a/odata2-sample/cars-jpa-archetype/pom.xml
+++ b/odata2-sample/cars-jpa-archetype/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-sample</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 	

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
index 2692568..fc307b7 100644
--- a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
@@ -20,7 +20,7 @@
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<version.cxf>2.7.6</version.cxf>
-		<version.olingo>2.0.0-RC01</version.olingo>
+		<version.olingo>2.0.0</version.olingo>
 		<version.eclipselink>2.5.1</version.eclipselink>
 		<version.javax.persistence>2.0.5</version.javax.persistence>
 	</properties>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-sample/cars-service-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/pom.xml b/odata2-sample/cars-service-archetype/pom.xml
index d87f102..31fcce5 100644
--- a/odata2-sample/cars-service-archetype/pom.xml
+++ b/odata2-sample/cars-service-archetype/pom.xml
@@ -24,14 +24,14 @@
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-sample-cars-service-archetype</artifactId>
     <name>${project.artifactId}</name>
-    <version>2.0.0-RC01</version>
+    <version>2.0.0</version>
 
     <packaging>maven-archetype</packaging>
 
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-sample</artifactId>
-        <version>2.0.0-RC01</version>
+        <version>2.0.0</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
index eda2ebe..bff8d75 100644
--- a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
@@ -20,7 +20,7 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<version.cxf>2.7.6</version.cxf>
 		<version.slf4j>1.7.1</version.slf4j>
-		<version.olingo>2.0.0-RC01</version.olingo>
+		<version.olingo>2.0.0</version.olingo>
 	</properties>
 
 	<build>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/odata2-sample/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/pom.xml b/odata2-sample/pom.xml
index 580c74e..afa0d71 100644
--- a/odata2-sample/pom.xml
+++ b/odata2-sample/pom.xml
@@ -15,7 +15,7 @@
     <parent>
       <groupId>org.apache.olingo</groupId>
       <artifactId>olingo-odata2-parent</artifactId>
-      <version>2.0.0-RC01</version>
+      <version>2.0.0</version>
       <relativePath>..</relativePath>
     </parent>
 
@@ -24,4 +24,4 @@
         <module>cars-annotation-archetype</module>
 		<module>cars-jpa-archetype</module>
   </modules>
-</project>
\ No newline at end of file
+</project>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ae37027d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index bb3f8bf..16723ad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
 
 	<groupId>org.apache.olingo</groupId>
 	<artifactId>olingo-odata2-parent</artifactId>
-	<version>2.0.0-RC01</version>
+	<version>2.0.0</version>
 	<packaging>pom</packaging>
 
 	<name>${project.artifactId}</name>


[22/50] [abbrv] git commit: [OLINGO-329] Support for java.sql.Timestamp

Posted by mi...@apache.org.
[OLINGO-329] Support for java.sql.Timestamp


Signed-off-by: Chandan V A <ch...@sap.com>

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/9b6e92a6
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/9b6e92a6
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/9b6e92a6

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 9b6e92a682ac75b656e9b218150ef2ee4e9089fe
Parents: 1309343
Author: Chandan V A <ch...@sap.com>
Authored: Sat Jun 28 19:04:04 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sat Jun 28 19:04:04 2014 +0530

----------------------------------------------------------------------
 .../jpa/processor/core/access/data/JPAEntity.java       |  5 +++++
 .../processor/core/access/model/JPATypeConvertor.java   |  4 +++-
 .../olingo/odata2/jpa/processor/ref/model/Customer.java | 12 ++++++++++++
 .../src/main/resources/SQL_Insert_Customer.properties   | 10 +++++-----
 4 files changed, 25 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9b6e92a6/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
index ec05d6b..3c42288 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntity.java
@@ -23,7 +23,9 @@ import java.lang.reflect.Method;
 import java.sql.Blob;
 import java.sql.Clob;
 import java.sql.SQLException;
+import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -349,6 +351,9 @@ public class JPAEntity {
         } else {
           method.invoke(entity, onJPAWriteContent.getJPAClob(((String) entityPropertyValue).toCharArray()));
         }
+      } else if (parameterType.equals(Timestamp.class)) {
+        Timestamp ts = new Timestamp(((Calendar) entityPropertyValue).getTimeInMillis());
+        method.invoke(entity, ts);
       } else {
         method.invoke(entity, entityPropertyValue);
       }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9b6e92a6/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
index 063b297..9548d63 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPATypeConvertor.java
@@ -22,6 +22,7 @@ import java.lang.reflect.AnnotatedElement;
 import java.math.BigDecimal;
 import java.sql.Blob;
 import java.sql.Clob;
+import java.sql.Timestamp;
 import java.util.Calendar;
 import java.sql.Date;
 import java.util.UUID;
@@ -81,7 +82,8 @@ public class JPATypeConvertor {
       return EdmSimpleTypeKind.Byte;
     } else if (jpaType.equals(Boolean.class) || jpaType.equals(boolean.class)) {
       return EdmSimpleTypeKind.Boolean;
-    } else if ((jpaType.equals(Date.class)) || (jpaType.equals(Calendar.class))) {
+    } else if ((jpaType.equals(Date.class)) || (jpaType.equals(Calendar.class)) ||
+        jpaType.equals(Timestamp.class)) {
       try {
         if ((currentAttribute != null)
             && (determineTemporalType(currentAttribute)

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9b6e92a6/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
index 0e51e48..d95c91e 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/model/Customer.java
@@ -18,6 +18,7 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.jpa.processor.ref.model;
 
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -43,6 +44,9 @@ public class Customer {
   @Embedded
   private Address address;
 
+  @Column(name = "CREATED_AT")
+  private Timestamp createdAt;
+
   @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL)
   private List<SalesOrderHeader> orders = new ArrayList<SalesOrderHeader>();
 
@@ -78,4 +82,12 @@ public class Customer {
     this.address = address;
   }
 
+  public Timestamp getCreatedAt() {
+    return createdAt;
+  }
+
+  public void setCreatedAt(Timestamp createdAt) {
+    this.createdAt = createdAt;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9b6e92a6/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Customer.properties
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Customer.properties b/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Customer.properties
index e718a01..fe52d68 100644
--- a/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Customer.properties
+++ b/odata2-jpa-processor/jpa-web/src/main/resources/SQL_Insert_Customer.properties
@@ -16,8 +16,8 @@
 #        specific language governing permissions and limitations
 #        under the License.
 #-------------------------------------------------------------------------------
-query_1 = INSERT INTO T_CUSTOMER (ID , NAME, HOUSE_NUMBER , STREET_NAME, CITY, COUNTRY, PINCODE) VALUES(100,'Bob Bryan',7,'5 cross Street', 'London', 'UK',  'E7');
-query_2 = INSERT INTO T_CUSTOMER (ID , NAME, HOUSE_NUMBER , STREET_NAME, CITY, COUNTRY, PINCODE) VALUES(200,'Mike Bryan',7,'8 cross Street', 'New York', 'USA',  '10011');
-query_3 = INSERT INTO T_CUSTOMER (ID , NAME, HOUSE_NUMBER , STREET_NAME, CITY, COUNTRY, PINCODE) VALUES(201,'Steve Roger',7,'9 cross Street', 'Mumbai', 'India', '200101');
-query_4 = INSERT INTO T_CUSTOMER (ID , NAME, HOUSE_NUMBER , STREET_NAME, CITY, COUNTRY, PINCODE) VALUES(101,'Pac Man',7,'25 cross Street', 'Frankfurt', 'Germany',  '60001');
-query_5 = INSERT INTO T_CUSTOMER (ID , NAME, HOUSE_NUMBER , STREET_NAME, CITY, COUNTRY, PINCODE) VALUES(202,'Bolt Man',7,'25 cross Street', 'Toronto', 'Canada',  'NE');
\ No newline at end of file
+query_1 = INSERT INTO T_CUSTOMER (ID , NAME, HOUSE_NUMBER , STREET_NAME, CITY, COUNTRY, PINCODE,CREATED_AT) VALUES(100,'Bob Bryan',7,'5 cross Street', 'London', 'UK',  'E7','2012-11-01 00:01:00');
+query_2 = INSERT INTO T_CUSTOMER (ID , NAME, HOUSE_NUMBER , STREET_NAME, CITY, COUNTRY, PINCODE,CREATED_AT) VALUES(200,'Mike Bryan',7,'8 cross Street', 'New York', 'USA',  '10011','2012-11-01 00:01:00');
+query_3 = INSERT INTO T_CUSTOMER (ID , NAME, HOUSE_NUMBER , STREET_NAME, CITY, COUNTRY, PINCODE,CREATED_AT) VALUES(201,'Steve Roger',7,'9 cross Street', 'Mumbai', 'India', '200101','2012-11-01 00:01:00');
+query_4 = INSERT INTO T_CUSTOMER (ID , NAME, HOUSE_NUMBER , STREET_NAME, CITY, COUNTRY, PINCODE,CREATED_AT) VALUES(101,'Pac Man',7,'25 cross Street', 'Frankfurt', 'Germany',  '60001','2012-11-01 00:01:00');
+query_5 = INSERT INTO T_CUSTOMER (ID , NAME, HOUSE_NUMBER , STREET_NAME, CITY, COUNTRY, PINCODE,CREATED_AT) VALUES(202,'Bolt Man',7,'25 cross Street', 'Toronto', 'Canada',  'NE','2012-11-01 00:01:00');
\ No newline at end of file


[10/50] [abbrv] git commit: [OLINGO-325] Remove unused code - EdmTypeConvertor.java

Posted by mi...@apache.org.
[OLINGO-325] Remove unused code - EdmTypeConvertor.java


Signed-off-by: Chandan V A <ch...@sap.com>

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/0e99c017
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/0e99c017
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/0e99c017

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 0e99c01705e12d74f7be9b046b7cccb7e761bf15
Parents: 93590ee
Author: Chandan V A <ch...@sap.com>
Authored: Sun Jun 15 15:36:51 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sun Jun 15 15:36:51 2014 +0530

----------------------------------------------------------------------
 .../core/access/model/EdmTypeConvertor.java     | 69 --------------------
 1 file changed, 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/0e99c017/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/EdmTypeConvertor.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/EdmTypeConvertor.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/EdmTypeConvertor.java
deleted file mode 100644
index 771aae6..0000000
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/EdmTypeConvertor.java
+++ /dev/null
@@ -1,69 +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.model;
-
-import java.math.BigDecimal;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.UUID;
-
-import org.apache.olingo.odata2.api.edm.EdmSimpleType;
-import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
-import org.apache.olingo.odata2.api.edm.EdmType;
-import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPAModelException;
-import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;
-
-public class EdmTypeConvertor {
-
-  public static Class<?> convertToJavaType(final EdmType edmType) throws ODataJPAModelException,
-      ODataJPARuntimeException {
-    if (edmType instanceof EdmSimpleType) {
-      EdmSimpleType edmSimpleType = (EdmSimpleType) edmType;
-      if (edmSimpleType == EdmSimpleTypeKind.String.getEdmSimpleTypeInstance()) {
-        return String.class;
-      } else if (edmSimpleType == EdmSimpleTypeKind.Int64.getEdmSimpleTypeInstance()) {
-        return Long.TYPE;
-      } else if (edmSimpleType == EdmSimpleTypeKind.Int16.getEdmSimpleTypeInstance()) {
-        return Short.TYPE;
-      } else if (edmSimpleType == EdmSimpleTypeKind.Int32.getEdmSimpleTypeInstance()) {
-        return Integer.TYPE;
-      } else if (edmSimpleType == EdmSimpleTypeKind.Double.getEdmSimpleTypeInstance()) {
-        return Double.TYPE;
-      } else if (edmSimpleType == EdmSimpleTypeKind.Single.getEdmSimpleTypeInstance()) {
-        return Float.TYPE;
-      } else if (edmSimpleType == EdmSimpleTypeKind.Decimal.getEdmSimpleTypeInstance()) {
-        return BigDecimal.class;
-      } else if (edmSimpleType == EdmSimpleTypeKind.Binary.getEdmSimpleTypeInstance()) {
-        return byte[].class;
-      } else if (edmSimpleType == EdmSimpleTypeKind.Byte.getEdmSimpleTypeInstance()) {
-        return Byte.TYPE;
-      } else if (edmSimpleType == EdmSimpleTypeKind.Boolean.getEdmSimpleTypeInstance()) {
-        return Boolean.TYPE;
-      } else if (edmSimpleType == EdmSimpleTypeKind.DateTime.getEdmSimpleTypeInstance()) {
-        return Date.class;
-      } else if (edmSimpleType == EdmSimpleTypeKind.DateTimeOffset.getEdmSimpleTypeInstance()) {
-        return Calendar.class;
-      } else if (edmSimpleType == EdmSimpleTypeKind.Guid.getEdmSimpleTypeInstance()) {
-        return UUID.class;
-      }
-    }
-    throw ODataJPAModelException.throwException(ODataJPAModelException.TYPE_NOT_SUPPORTED
-        .addContent(edmType.toString()), null);
-  }
-}


[05/50] [abbrv] git commit: [OLINGO-307] Fixed location header for redirect

Posted by mi...@apache.org.
[OLINGO-307] Fixed location header for redirect


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/01db5f1e
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/01db5f1e
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/01db5f1e

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 01db5f1ede706f0fc21f287bbe663fa51141621b
Parents: f99f8a3
Author: Michael Bolz <mi...@apache.org>
Authored: Thu Jun 5 08:59:12 2014 +0200
Committer: Michael Bolz <mi...@apache.org>
Committed: Thu Jun 5 08:59:12 2014 +0200

----------------------------------------------------------------------
 .../odata2/core/servlet/ODataServlet.java       |  19 +++-
 .../odata2/core/servlet/ODataServletTest.java   | 114 +++++++++++++++++++
 2 files changed, 130 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/01db5f1e/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
index ef5be4f..a5bedab 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/ODataServlet.java
@@ -154,8 +154,7 @@ public class ODataServlet extends HttpServlet {
     return true;
   }
 
-  private void
-      handleRequest(final HttpServletRequest req, final ODataHttpMethod method, final HttpServletResponse resp)
+  private void handleRequest(final HttpServletRequest req, final ODataHttpMethod method, final HttpServletResponse resp)
           throws IOException {
     try {
       if (req.getHeader(HttpHeaders.ACCEPT) != null && req.getHeader(HttpHeaders.ACCEPT).isEmpty()) {
@@ -197,7 +196,7 @@ public class ODataServlet extends HttpServlet {
         HTTP_METHOD_HEAD.equals(method) ||
         HTTP_METHOD_OPTIONS.equals(method)) {
       ODataResponse odataResponse = ODataResponse.status(HttpStatusCodes.TEMPORARY_REDIRECT)
-          .header(HttpHeaders.LOCATION, "/")
+          .header(HttpHeaders.LOCATION, createLocation(req))
           .build();
       createResponse(resp, odataResponse);
     } else {
@@ -206,6 +205,20 @@ public class ODataServlet extends HttpServlet {
 
   }
 
+  private String createLocation(HttpServletRequest req) {
+    StringBuilder location = new StringBuilder();
+    String contextPath = req.getContextPath();
+    if(contextPath != null) {
+      location.append(contextPath);
+    }
+    String servletPath = req.getServletPath();
+    if(servletPath != null) {
+      location.append(servletPath);
+    }
+    location.append("/");
+    return location.toString();
+  }
+
   private void createResponse(final HttpServletResponse resp, final ODataResponse response) throws IOException {
     resp.setStatus(response.getStatus().getStatusCode());
     resp.setContentType(response.getContentHeader());

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/01db5f1e/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/ODataServletTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/ODataServletTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/ODataServletTest.java
new file mode 100644
index 0000000..4a6327e
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/ODataServletTest.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * 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.core.servlet;
+
+import org.apache.olingo.odata2.api.ODataServiceFactory;
+import org.apache.olingo.odata2.api.commons.HttpHeaders;
+import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
+import org.apache.olingo.odata2.core.rest.ODataServiceFactoryImpl;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import javax.servlet.GenericServlet;
+import javax.servlet.ServletConfig;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.Field;
+
+/**
+ *
+ */
+public class ODataServletTest {
+
+  private HttpServletRequest reqMock;
+  private HttpServletResponse respMock;
+  private ServletConfig configMock;
+
+  public ODataServletTest() {
+    this.reqMock = Mockito.mock(HttpServletRequest.class);
+    this.respMock = Mockito.mock(HttpServletResponse.class);
+    this.configMock = Mockito.mock(ServletConfig.class);
+  }
+
+  @Test
+  public void handleRedirect() throws Exception {
+    ODataServlet servlet = new ODataServlet();
+    prepareServlet(servlet);
+    prepareRequest(reqMock);
+    servlet.service(reqMock, respMock);
+
+    Mockito.verify(respMock).setStatus(HttpStatusCodes.TEMPORARY_REDIRECT.getStatusCode());
+    Mockito.verify(respMock).setHeader(HttpHeaders.LOCATION, "/context-path/servlet-path/");
+  }
+
+  @Test
+  public void handleRedirectWoServletPath() throws Exception {
+    ODataServlet servlet = new ODataServlet();
+    prepareServlet(servlet);
+    prepareRequest(reqMock, "/context-path", null);
+    servlet.service(reqMock, respMock);
+
+    Mockito.verify(respMock).setStatus(HttpStatusCodes.TEMPORARY_REDIRECT.getStatusCode());
+    Mockito.verify(respMock).setHeader(HttpHeaders.LOCATION, "/context-path/");
+  }
+
+  @Test
+  public void handleRedirectWoContextPath() throws Exception {
+    ODataServlet servlet = new ODataServlet();
+    prepareServlet(servlet);
+    prepareRequest(reqMock, null, "/servlet-path");
+    servlet.service(reqMock, respMock);
+
+    Mockito.verify(respMock).setStatus(HttpStatusCodes.TEMPORARY_REDIRECT.getStatusCode());
+    Mockito.verify(respMock).setHeader(HttpHeaders.LOCATION, "/servlet-path/");
+  }
+
+  @Test
+  public void handleRedirectWoPath() throws Exception {
+    ODataServlet servlet = new ODataServlet();
+    prepareServlet(servlet);
+    prepareRequest(reqMock, null, null);
+    servlet.service(reqMock, respMock);
+
+    Mockito.verify(respMock).setStatus(HttpStatusCodes.TEMPORARY_REDIRECT.getStatusCode());
+    Mockito.verify(respMock).setHeader(HttpHeaders.LOCATION, "/");
+  }
+
+  private void prepareRequest(HttpServletRequest req, String contextPath, String servletPath) {
+    Mockito.when(req.getMethod()).thenReturn("GET");
+    Mockito.when(req.getContextPath()).thenReturn(contextPath);
+    Mockito.when(req.getServletPath()).thenReturn(servletPath);
+  }
+
+  private void prepareRequest(HttpServletRequest req) {
+    prepareRequest(req, "/context-path", "/servlet-path");
+  }
+
+  private void prepareServlet(GenericServlet servlet) throws Exception {
+    //    private transient ServletConfig config;
+    Field configField = GenericServlet.class.getDeclaredField("config");
+    configField.setAccessible(true);
+    configField.set(servlet, configMock);
+
+    String factoryClassName = ODataServiceFactoryImpl.class.getName();
+    Mockito.when(configMock.getInitParameter(ODataServiceFactory.FACTORY_LABEL)).thenReturn(factoryClassName);
+  }
+
+
+}


[15/50] [abbrv] git commit: [OLINGO-310] Omit D wrapper in Json payload if needed

Posted by mi...@apache.org.
[OLINGO-310] Omit D wrapper in Json payload if needed


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/ebc5c79a
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/ebc5c79a
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/ebc5c79a

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: ebc5c79a52c27a68fc4a27adce98d2751c9da3ce
Parents: 242d961
Author: Christian Amend <ch...@apache.org>
Authored: Mon Jun 23 09:59:37 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Wed Jun 25 14:37:31 2014 +0200

----------------------------------------------------------------------
 .../api/ep/EntityProviderWriteProperties.java   | 12 +++++++
 .../ep/producer/JsonEntryEntityProducer.java    |  4 +--
 .../ep/ODataEntityProviderPropertiesTest.java   |  4 +++
 .../producer/JsonEntryEntityProducerTest.java   | 18 +++++++++++
 .../ep/producer/JsonFeedEntityProducerTest.java | 33 ++++++++++++++++++++
 5 files changed, 69 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ebc5c79a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
index 822fc84..df99f21 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import org.apache.olingo.odata2.api.ODataCallback;
 import org.apache.olingo.odata2.api.commons.InlineCount;
+import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties.ODataEntityProviderPropertiesBuilder;
 import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
 
 /**
@@ -44,9 +45,14 @@ public class EntityProviderWriteProperties {
   private URI selfLink;
   private boolean includeSimplePropertyType;
   private Map<String, Map<String, Object>> additionalLinks;
+  private boolean omitJsonWrapper;
 
   private EntityProviderWriteProperties() {}
 
+  public final boolean isOmitJsonWrapper() {
+    return omitJsonWrapper;
+  }
+
   /**
    * Returns if type information of simple properties should be in the payload.
    * @return true if information should be in the payload.
@@ -239,6 +245,12 @@ public class EntityProviderWriteProperties {
       this.properties.selfLink = properties.getSelfLink();
       this.properties.includeSimplePropertyType = properties.includeSimplePropertyType;
       this.properties.additionalLinks = properties.additionalLinks;
+      this.properties.omitJsonWrapper = properties.omitJsonWrapper;
+      return this;
+    }
+
+    public ODataEntityProviderPropertiesBuilder omitJsonWrapper(boolean omitJsonWrapper) {
+      properties.omitJsonWrapper = omitJsonWrapper;
       return this;
     }
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ebc5c79a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
index 8ad5d42..1f3693b 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
@@ -70,7 +70,7 @@ public class JsonEntryEntityProducer {
 
     try {
       jsonStreamWriter = new JsonStreamWriter(writer);
-      if (isRootElement) {
+      if (isRootElement && !properties.isOmitJsonWrapper()) {
         jsonStreamWriter.beginObject().name(FormatJson.D);
       }
 
@@ -84,7 +84,7 @@ public class JsonEntryEntityProducer {
 
       jsonStreamWriter.endObject();
 
-      if (isRootElement) {
+      if (isRootElement && !properties.isOmitJsonWrapper()) {
         jsonStreamWriter.endObject();
       }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ebc5c79a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
index 3b0d5ab..51f39a8 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ODataEntityProviderPropertiesTest.java
@@ -74,6 +74,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
         .selfLink(selfLink)
         .includeSimplePropertyType(true)
         .additionalLinks(links)
+        .omitJsonWrapper(true)
         .build();
 
     assertEquals("Wrong amount of callbacks.", 1, properties.getCallbacks().size());
@@ -87,6 +88,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
     assertEquals("Wrong nextLink", "http://localhost", properties.getNextLink());
     assertTrue("Simple property types should be true", properties.isIncludeSimplePropertyType());
     assertEquals(Collections.emptyMap(), properties.getAdditionalLinks().get("aNavigationProperty"));
+    assertTrue("Json Wrapper should be omitted", properties.isOmitJsonWrapper());
   }
 
   @Test
@@ -118,6 +120,7 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
         .selfLink(selfLink)
         .includeSimplePropertyType(true)
         .additionalLinks(links)
+        .omitJsonWrapper(true)
         .build();
 
     //
@@ -136,5 +139,6 @@ public class ODataEntityProviderPropertiesTest extends BaseTest {
     assertEquals("Wrong nextLink", "http://localhost", fromProperties.getNextLink());
     assertTrue("Simple property types should be true", fromProperties.isIncludeSimplePropertyType());
     assertEquals(Collections.emptyMap(), fromProperties.getAdditionalLinks().get("aNavigationProperty"));
+    assertTrue("Json Wrapper should be omitted", properties.isOmitJsonWrapper());
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ebc5c79a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
index 8efd99a..942edf5 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
@@ -87,6 +87,24 @@ public class JsonEntryEntityProducerTest extends BaseTest {
         json);
   }
 
+  @Test
+  public void omitJsonWrapper() throws Exception {
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Teams");
+    Map<String, Object> teamData = new HashMap<String, Object>();
+    teamData.put("Id", "1");
+    teamData.put("isScrumTeam", true);
+
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).build();
+    final ODataResponse response = new JsonEntityProvider().writeEntry(entitySet, teamData, properties);
+    final String json = verifyResponse(response);
+    assertEquals("{\"__metadata\":{\"id\":\"" + BASE_URI + "Teams('1')\","
+        + "\"uri\":\"" + BASE_URI + "Teams('1')\",\"type\":\"RefScenario.Team\"},"
+        + "\"Id\":\"1\",\"Name\":null,\"isScrumTeam\":true,"
+        + "\"nt_Employees\":{\"__deferred\":{\"uri\":\"" + BASE_URI + "Teams('1')/nt_Employees\"}}}",
+        json);
+  }
+
   @Test(expected = EntityProviderException.class)
   public void entryWithNullData() throws Exception {
     final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Teams");

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/ebc5c79a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducerTest.java
index a2195ae..418dc8a 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonFeedEntityProducerTest.java
@@ -79,6 +79,39 @@ public class JsonFeedEntityProducerTest extends BaseTest {
   }
 
   @Test
+  public void omitJsonWrapperMustHaveNoEffect() throws Exception {
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Teams");
+    Map<String, Object> team1Data = new HashMap<String, Object>();
+    team1Data.put("Id", "1");
+    team1Data.put("isScrumTeam", true);
+    Map<String, Object> team2Data = new HashMap<String, Object>();
+    team2Data.put("Id", "2");
+    team2Data.put("isScrumTeam", false);
+    List<Map<String, Object>> teamsData = new ArrayList<Map<String, Object>>();
+    teamsData.add(team1Data);
+    teamsData.add(team2Data);
+
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).build();
+    final ODataResponse response = new JsonEntityProvider().writeFeed(entitySet, teamsData, properties);
+    assertNotNull(response);
+    assertNotNull(response.getEntity());
+    assertNull("EntitypProvider must not set content header", response.getContentHeader());
+
+    final String json = StringHelper.inputStreamToString((InputStream) response.getEntity());
+    assertNotNull(json);
+    assertEquals("{\"d\":{\"results\":[{\"__metadata\":{\"id\":\"" + BASE_URI + "Teams('1')\","
+        + "\"uri\":\"" + BASE_URI + "Teams('1')\",\"type\":\"RefScenario.Team\"},"
+        + "\"Id\":\"1\",\"Name\":null,\"isScrumTeam\":true,"
+        + "\"nt_Employees\":{\"__deferred\":{\"uri\":\"" + BASE_URI + "Teams('1')/nt_Employees\"}}},"
+        + "{\"__metadata\":{\"id\":\"" + BASE_URI + "Teams('2')\","
+        + "\"uri\":\"" + BASE_URI + "Teams('2')\",\"type\":\"RefScenario.Team\"},"
+        + "\"Id\":\"2\",\"Name\":null,\"isScrumTeam\":false,"
+        + "\"nt_Employees\":{\"__deferred\":{\"uri\":\"" + BASE_URI + "Teams('2')/nt_Employees\"}}}]}}",
+        json);
+  }
+
+  @Test
   public void inlineCount() throws Exception {
     final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Buildings");
     final ODataResponse response = new JsonEntityProvider().writeFeed(entitySet, new ArrayList<Map<String, Object>>(),


[32/50] [abbrv] git commit: [OLINGO-372] Allow null for operators in / expressions

Posted by mi...@apache.org.
[OLINGO-372] Allow null for operators in / expressions


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/8e814509
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/8e814509
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/8e814509

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 8e814509f488a1beaa60d652029258de8708c8cd
Parents: bebce0b
Author: Sven Kobler <sv...@sap.com>
Authored: Wed Jul 16 10:26:02 2014 +0200
Committer: Sven Kobler <sv...@sap.com>
Committed: Wed Jul 16 10:26:02 2014 +0200

----------------------------------------------------------------------
 .../core/uri/expression/FilterParserImpl.java   |  88 ++++++++-
 .../uri/expression/ParameterSetCombination.java |   2 +-
 .../uri/expression/TestAbapCompatibility.java   | 187 +++++++++++++++++++
 .../odata2/core/uri/expression/TestParser.java  |   5 +-
 4 files changed, 278 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/8e814509/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java
index e9f37b5..47be745 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/FilterParserImpl.java
@@ -672,6 +672,7 @@ public class FilterParserImpl implements FilterParser {
     EdmSimpleType datetimeoffset = EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.DateTimeOffset);
     EdmSimpleType guid = EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.Guid);
     EdmSimpleType binary = EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.Binary);
+    EdmSimpleType null_ = EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.Null);
 
     // ---Memeber member access---
     lAvailableBinaryOperators.put("/", new InfoBinaryOperator(BinaryOperator.PROPERTY_ACCESS, "Primary", 100,
@@ -686,8 +687,26 @@ public class FilterParserImpl implements FilterParser {
     combination.add(new ParameterSet(int64, int64, int64));
     combination.add(new ParameterSet(single, single, single));
     combination.add(new ParameterSet(double_, double_, double_));
-
     combination.add(new ParameterSet(decimal, decimal, decimal));
+        
+    combination.add(new ParameterSet(sbyte, sbyte, null_));
+    combination.add(new ParameterSet(sbyte, null_, sbyte));
+    combination.add(new ParameterSet(byte_, byte_, null_));
+    combination.add(new ParameterSet(byte_, null_, byte_));
+    
+    combination.add(new ParameterSet(int16, int16, null_));
+    combination.add(new ParameterSet(int16, null_, int16));
+    combination.add(new ParameterSet(int32, int32, null_));
+    combination.add(new ParameterSet(int32, null_, int32));
+    combination.add(new ParameterSet(int64, int64, null_));
+    combination.add(new ParameterSet(int64, null_, int64));
+    
+    combination.add(new ParameterSet(single, single, null_));
+    combination.add(new ParameterSet(single, null_, single));
+    combination.add(new ParameterSet(double_, double_, null_));
+    combination.add(new ParameterSet(double_, null_, double_));
+    combination.add(new ParameterSet(decimal, decimal, null_));
+    combination.add(new ParameterSet(decimal, null_, decimal));
 
     lAvailableBinaryOperators.put(BinaryOperator.MUL.toUriLiteral(), new InfoBinaryOperator(BinaryOperator.MUL,
         "Multiplicative", 60, combination));
@@ -706,6 +725,25 @@ public class FilterParserImpl implements FilterParser {
     combination.add(new ParameterSet(single, single, single));
     combination.add(new ParameterSet(double_, double_, double_));
     combination.add(new ParameterSet(decimal, decimal, decimal));
+    
+    combination.add(new ParameterSet(sbyte, sbyte, null_));
+    combination.add(new ParameterSet(sbyte, null_, sbyte));
+    combination.add(new ParameterSet(byte_, byte_, null_));
+    combination.add(new ParameterSet(byte_, null_, byte_));
+    
+    combination.add(new ParameterSet(int16, int16, null_));
+    combination.add(new ParameterSet(int16, null_, int16));
+    combination.add(new ParameterSet(int32, int32, null_));
+    combination.add(new ParameterSet(int32, null_, int32));
+    combination.add(new ParameterSet(int64, int64, null_));
+    combination.add(new ParameterSet(int64, null_, int64));
+    
+    combination.add(new ParameterSet(single, single, null_));
+    combination.add(new ParameterSet(single, null_, single));
+    combination.add(new ParameterSet(double_, double_, null_));
+    combination.add(new ParameterSet(double_, null_, double_));
+    combination.add(new ParameterSet(decimal, decimal, null_));
+    combination.add(new ParameterSet(decimal, null_, decimal));
 
     lAvailableBinaryOperators.put(BinaryOperator.ADD.toUriLiteral(), new InfoBinaryOperator(BinaryOperator.ADD,
         "Additive", 50, combination));
@@ -728,6 +766,44 @@ public class FilterParserImpl implements FilterParser {
     combination.add(new ParameterSet(boolean_, double_, double_));
     combination.add(new ParameterSet(boolean_, decimal, decimal));
     combination.add(new ParameterSet(boolean_, binary, binary));
+    
+    combination.add(new ParameterSet(boolean_, string, null_));
+    combination.add(new ParameterSet(boolean_, null_, string));
+    
+    combination.add(new ParameterSet(boolean_, time, null_));
+    combination.add(new ParameterSet(boolean_, null_, time));
+    
+    combination.add(new ParameterSet(boolean_, datetime, null_));
+    combination.add(new ParameterSet(boolean_, null_, datetime));
+    
+    combination.add(new ParameterSet(boolean_, datetimeoffset, null_));
+    combination.add(new ParameterSet(boolean_, null_, datetimeoffset));
+    
+    combination.add(new ParameterSet(boolean_, guid, null_));
+    combination.add(new ParameterSet(boolean_, null_, guid));
+    
+    combination.add(new ParameterSet(boolean_, sbyte, null_));
+    combination.add(new ParameterSet(boolean_, null_, sbyte));
+    combination.add(new ParameterSet(boolean_, byte_, null_));
+    combination.add(new ParameterSet(boolean_, null_, byte_));
+    
+    combination.add(new ParameterSet(boolean_, int16, null_));
+    combination.add(new ParameterSet(boolean_, null_, int16));
+    combination.add(new ParameterSet(boolean_, int32, null_));
+    combination.add(new ParameterSet(boolean_, null_, int32));
+    combination.add(new ParameterSet(boolean_, int64, null_));
+    combination.add(new ParameterSet(boolean_, null_, int64));
+    
+    combination.add(new ParameterSet(boolean_, single, null_));
+    combination.add(new ParameterSet(boolean_, null_, single));
+    combination.add(new ParameterSet(boolean_, double_, null_));
+    combination.add(new ParameterSet(boolean_, null_, double_));
+    combination.add(new ParameterSet(boolean_, decimal, null_));
+    combination.add(new ParameterSet(boolean_, null_, decimal));
+    
+    combination.add(new ParameterSet(boolean_, binary, null_));
+    combination.add(new ParameterSet(boolean_, null_, binary));
+      
 
     lAvailableBinaryOperators.put(BinaryOperator.LT.toUriLiteral(), new InfoBinaryOperator(BinaryOperator.LT,
         "Relational", 40, combination));
@@ -757,6 +833,9 @@ public class FilterParserImpl implements FilterParser {
      * combination.add(new ParameterSet(boolean_, decimal, decimal));
      * combination.add(new ParameterSet(boolean_, binary, binary));
      */
+    
+    combination.add(new ParameterSet(boolean_, boolean_, null_));
+    combination.add(new ParameterSet(boolean_, null_, boolean_));
 
     lAvailableBinaryOperators.put(BinaryOperator.EQ.toUriLiteral(), new InfoBinaryOperator(BinaryOperator.EQ,
         "Equality", 30, combination));
@@ -766,6 +845,8 @@ public class FilterParserImpl implements FilterParser {
     // "---Conditinal AND---
     combination = new ParameterSetCombination.PSCflex();
     combination.add(new ParameterSet(boolean_, boolean_, boolean_));
+    combination.add(new ParameterSet(boolean_, boolean_, null_));
+    combination.add(new ParameterSet(boolean_, null_, boolean_));
 
     lAvailableBinaryOperators.put(BinaryOperator.AND.toUriLiteral(), new InfoBinaryOperator(BinaryOperator.AND,
         "Conditinal", 20, combination));
@@ -773,6 +854,8 @@ public class FilterParserImpl implements FilterParser {
     // ---Conditinal OR---
     combination = new ParameterSetCombination.PSCflex();
     combination.add(new ParameterSet(boolean_, boolean_, boolean_));
+    combination.add(new ParameterSet(boolean_, boolean_, null_));
+    combination.add(new ParameterSet(boolean_, null_, boolean_));
 
     lAvailableBinaryOperators.put(BinaryOperator.OR.toUriLiteral(), new InfoBinaryOperator(BinaryOperator.OR,
         "Conditinal", 10, combination));
@@ -900,6 +983,8 @@ public class FilterParserImpl implements FilterParser {
     combination.add(new ParameterSet(single, single));
     combination.add(new ParameterSet(double_, double_));
     combination.add(new ParameterSet(decimal, decimal));
+    combination.add(new ParameterSet(null_, null_));
+    
 
     // minus
     lAvailableUnaryOperators.put(UnaryOperator.MINUS.toUriLiteral(), new InfoUnaryOperator(UnaryOperator.MINUS,
@@ -908,6 +993,7 @@ public class FilterParserImpl implements FilterParser {
     // not
     combination = new ParameterSetCombination.PSCflex();
     combination.add(new ParameterSet(boolean_, boolean_));
+    combination.add(new ParameterSet(null_, null_));
     lAvailableUnaryOperators.put(UnaryOperator.NOT.toUriLiteral(), new InfoUnaryOperator(UnaryOperator.NOT, "not",
         combination));
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/8e814509/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/ParameterSetCombination.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/ParameterSetCombination.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/ParameterSetCombination.java
index ecc94b0..f3446d3 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/ParameterSetCombination.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/uri/expression/ParameterSetCombination.java
@@ -89,7 +89,7 @@ public interface ParameterSetCombination {
         }
       }
 
-      // first check for parameter combination with promotion
+      // second check for parameter combination with promotion
       for (ParameterSet parameterSet : combinations) {
         boolean s = parameterSet.equals(actualParameterTypes, true);
         if (s) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/8e814509/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestAbapCompatibility.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestAbapCompatibility.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestAbapCompatibility.java
index 4952a32..0b9c17c 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestAbapCompatibility.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestAbapCompatibility.java
@@ -18,6 +18,7 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.core.uri.expression;
 
+import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
 import org.apache.olingo.odata2.core.edm.Bit;
 import org.apache.olingo.odata2.core.edm.EdmBinary;
 import org.apache.olingo.odata2.core.edm.EdmBoolean;
@@ -32,6 +33,7 @@ import org.apache.olingo.odata2.core.edm.EdmInt32;
 import org.apache.olingo.odata2.core.edm.EdmInt64;
 import org.apache.olingo.odata2.core.edm.EdmNull;
 import org.apache.olingo.odata2.core.edm.EdmSByte;
+import org.apache.olingo.odata2.core.edm.EdmSimpleTypeFacadeImpl;
 import org.apache.olingo.odata2.core.edm.EdmSingle;
 import org.apache.olingo.odata2.core.edm.EdmString;
 import org.apache.olingo.odata2.core.edm.EdmTime;
@@ -47,6 +49,191 @@ import org.junit.Test;
 public class TestAbapCompatibility extends TestBase {
 
   @Test
+  public void nullTests() {
+
+    // unary negate/not
+
+    GetPTF("  - null").aSerialized("{- null}").aEdmType(
+        EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.Null));
+    GetPTF("not null").aSerialized("{not null}").aEdmType(
+        EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.Null));
+
+    // binary add/sub
+    GetPTF("-1   add null").aSerialized("{-1 add null}").aEdmType(
+        EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.SByte));
+    GetPTF("null add   -1").aSerialized("{null add -1}").aEdmType(
+        EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.SByte));
+
+    GetPTF("130  add null").aSerialized("{130 add null}").aEdmType(EdmByte.getInstance());
+    GetPTF("null add  130").aSerialized("{null add 130}").aEdmType(EdmByte.getInstance());
+
+    GetPTF("12345 add  null").aSerialized("{12345 add null}").aEdmType(EdmInt16.getInstance());
+    GetPTF("null  add 12345").aSerialized("{null add 12345}").aEdmType(EdmInt16.getInstance());
+
+    GetPTF("1234512345  add       null").aSerialized("{1234512345 add null}").aEdmType(EdmInt32.getInstance());
+    GetPTF("null        add 1234512345").aSerialized("{null add 1234512345}").aEdmType(EdmInt32.getInstance());
+
+    GetPTF("12345L add   null").aSerialized("{12345L add null}").aEdmType(EdmInt64.getInstance());
+    GetPTF("null   add 12345L").aSerialized("{null add 12345L}").aEdmType(EdmInt64.getInstance());
+
+    GetPTF("1.1F add null").aSerialized("{1.1F add null}").aEdmType(EdmSingle.getInstance());
+    GetPTF("null add 1.1F").aSerialized("{null add 1.1F}").aEdmType(EdmSingle.getInstance());
+
+    GetPTF("1.1D add null").aSerialized("{1.1D add null}").aEdmType(EdmDouble.getInstance());
+    GetPTF("null add 1.1D").aSerialized("{null add 1.1D}").aEdmType(EdmDouble.getInstance());
+
+    GetPTF("1.1M add null").aSerialized("{1.1M add null}").aEdmType(EdmDecimal.getInstance());
+    GetPTF("null add 1.1M").aSerialized("{null add 1.1M}").aEdmType(EdmDecimal.getInstance());
+
+    // binary mul/div/mod
+
+    GetPTF("-1   mul null").aSerialized("{-1 mul null}").aEdmType(
+        EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.SByte));
+    GetPTF("null mul   -1").aSerialized("{null mul -1}").aEdmType(
+        EdmSimpleTypeFacadeImpl.getEdmSimpleType(EdmSimpleTypeKind.SByte));
+
+    GetPTF("130  mul null").aSerialized("{130 mul null}").aEdmType(EdmByte.getInstance());
+    GetPTF("null mul  130").aSerialized("{null mul 130}").aEdmType(EdmByte.getInstance());
+
+    GetPTF("12345 mul  null").aSerialized("{12345 mul null}").aEdmType(EdmInt16.getInstance());
+    GetPTF("null  mul 12345").aSerialized("{null mul 12345}").aEdmType(EdmInt16.getInstance());
+
+    GetPTF("1234512345  mul       null").aSerialized("{1234512345 mul null}").aEdmType(EdmInt32.getInstance());
+    GetPTF("null        mul 1234512345").aSerialized("{null mul 1234512345}").aEdmType(EdmInt32.getInstance());
+
+    GetPTF("12345L mul   null").aSerialized("{12345L mul null}").aEdmType(EdmInt64.getInstance());
+    GetPTF("null   mul 12345L").aSerialized("{null mul 12345L}").aEdmType(EdmInt64.getInstance());
+
+    GetPTF("1.1F mul null").aSerialized("{1.1F mul null}").aEdmType(EdmSingle.getInstance());
+    GetPTF("null mul 1.1F").aSerialized("{null mul 1.1F}").aEdmType(EdmSingle.getInstance());
+
+    GetPTF("1.1D mul null").aSerialized("{1.1D mul null}").aEdmType(EdmDouble.getInstance());
+    GetPTF("null mul 1.1D").aSerialized("{null mul 1.1D}").aEdmType(EdmDouble.getInstance());
+
+    GetPTF("1.1M mul null").aSerialized("{1.1M mul null}").aEdmType(EdmDecimal.getInstance());
+    GetPTF("null mul 1.1M").aSerialized("{null mul 1.1M}").aEdmType(EdmDecimal.getInstance());
+
+    // relational gt/ge/lt/le
+
+    GetPTF("'TEST' gt null").aSerialized("{'TEST' gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null   gt 'TEST'").aSerialized("{null gt 'TEST'}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("time'PT19H02M01S' gt              null")
+        .aSerialized("{time'PT19H02M01S' gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null              gt time'PT19H02M01S'")
+        .aSerialized("{null gt time'PT19H02M01S'}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("datetime'2011-07-31T23:30:59' gt null")
+        .aSerialized("{datetime'2011-07-31T23:30:59' gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null                          gt datetime'2011-07-31T23:30:59'").aSerialized(
+        "{null gt datetime'2011-07-31T23:30:59'}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("datetimeoffset'2002-10-10T12:00:00-05:00' gt null")
+        .aSerialized("{datetimeoffset'2002-10-10T12:00:00-05:00' gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null  gt datetimeoffset'2002-10-10T12:00:00-05:00'")
+        .aSerialized("{null gt datetimeoffset'2002-10-10T12:00:00-05:00'}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("guid'12345678-1234-1234-1234-123456789012' gt null")
+        .aSerialized("{guid'12345678-1234-1234-1234-123456789012' gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null gt guid'12345678-1234-1234-1234-123456789012'")
+        .aSerialized("{null gt guid'12345678-1234-1234-1234-123456789012'}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("-1   gt null").aSerialized("{-1 gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null gt   -1").aSerialized("{null gt -1}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("130  gt null").aSerialized("{130 gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null gt  130").aSerialized("{null gt 130}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("12345 gt  null").aSerialized("{12345 gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null  gt 12345").aSerialized("{null gt 12345}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("1234512345  gt       null").aSerialized("{1234512345 gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null        gt 1234512345").aSerialized("{null gt 1234512345}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("12345L gt   null").aSerialized("{12345L gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null   gt 12345L").aSerialized("{null gt 12345L}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("1.1F gt null").aSerialized("{1.1F gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null gt 1.1F").aSerialized("{null gt 1.1F}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("1.1D gt null").aSerialized("{1.1D gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null gt 1.1D").aSerialized("{null gt 1.1D}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("1.1M gt null").aSerialized("{1.1M gt null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null gt 1.1M").aSerialized("{null gt 1.1M}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("X'1234567890ABCDEF' gt null").aSerialized("{X'1234567890ABCDEF' gt null}").aEdmType(
+        EdmBoolean.getInstance());
+    GetPTF("null gt X'1234567890ABCDEF'").aSerialized("{null gt X'1234567890ABCDEF'}").aEdmType(
+        EdmBoolean.getInstance());
+
+    // equlity eq/ne
+
+    GetPTF("'TEST' eq null").aSerialized("{'TEST' eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null   eq 'TEST'").aSerialized("{null eq 'TEST'}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("time'PT19H02M01S'   eq               null").aSerialized("{time'PT19H02M01S' eq null}").aEdmType(
+        EdmBoolean.getInstance());
+    GetPTF("null                eq  time'PT19H02M01S'").aSerialized("{null eq time'PT19H02M01S'}").aEdmType(
+        EdmBoolean.getInstance());
+
+    GetPTF("datetime'2011-07-31T23:30:59'   eq                           null").aSerialized(
+        "{datetime'2011-07-31T23:30:59' eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null                            eq  datetime'2011-07-31T23:30:59'").aSerialized(
+        "{null eq datetime'2011-07-31T23:30:59'}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("datetimeoffset'2002-10-10T12:00:00-05:00' eq null").aSerialized(
+        "{datetimeoffset'2002-10-10T12:00:00-05:00' eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null eq datetimeoffset'2002-10-10T12:00:00-05:00'").aSerialized(
+        "{null eq datetimeoffset'2002-10-10T12:00:00-05:00'}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("guid'12345678-1234-1234-1234-123456789012' eq null").aSerialized(
+        "{guid'12345678-1234-1234-1234-123456789012' eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null eq guid'12345678-1234-1234-1234-123456789012'").aSerialized(
+        "{null eq guid'12345678-1234-1234-1234-123456789012'}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("-1   eq null").aSerialized("{-1 eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null eq   -1").aSerialized("{null eq -1}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("130  eq null").aSerialized("{130 eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null eq  130").aSerialized("{null eq 130}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("12345 eq  null").aSerialized("{12345 eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null  eq 12345").aSerialized("{null eq 12345}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("1234512345  eq       null").aSerialized("{1234512345 eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null        eq 1234512345").aSerialized("{null eq 1234512345}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("12345L eq   null").aSerialized("{12345L eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null   eq 12345L").aSerialized("{null eq 12345L}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("1.1F eq null").aSerialized("{1.1F eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null eq 1.1F").aSerialized("{null eq 1.1F}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("1.1D eq null").aSerialized("{1.1D eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null eq 1.1D").aSerialized("{null eq 1.1D}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("1.1M eq null").aSerialized("{1.1M eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null eq 1.1M").aSerialized("{null eq 1.1M}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("X'1234567890ABCDEF' eq null").aSerialized("{X'1234567890ABCDEF' eq null}").aEdmType(
+        EdmBoolean.getInstance());
+    GetPTF("null eq X'1234567890ABCDEF'").aSerialized("{null eq X'1234567890ABCDEF'}").aEdmType(
+        EdmBoolean.getInstance());
+
+    GetPTF("true eq null").aSerialized("{true eq null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null eq true").aSerialized("{null eq true}").aEdmType(EdmBoolean.getInstance());
+
+    // logical and/or
+    GetPTF("true and null").aSerialized("{true and null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null and true").aSerialized("{null and true}").aEdmType(EdmBoolean.getInstance());
+
+    GetPTF("true or null").aSerialized("{true or null}").aEdmType(EdmBoolean.getInstance());
+    GetPTF("null or true").aSerialized("{null or true}").aEdmType(EdmBoolean.getInstance());
+
+  }
+
+  @Test
   public void abapTestParameterPromotion() // copy of ABAP method test_parameter_promotion
   {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/8e814509/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
index fda21b3..ef73dc8 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
@@ -44,6 +44,7 @@ import org.apache.olingo.odata2.core.edm.EdmGuid;
 import org.apache.olingo.odata2.core.edm.EdmInt16;
 import org.apache.olingo.odata2.core.edm.EdmInt32;
 import org.apache.olingo.odata2.core.edm.EdmInt64;
+import org.apache.olingo.odata2.core.edm.EdmNull;
 import org.apache.olingo.odata2.core.edm.EdmSByte;
 import org.apache.olingo.odata2.core.edm.EdmSingle;
 import org.apache.olingo.odata2.core.edm.EdmString;
@@ -126,8 +127,8 @@ public class TestParser extends TestBase {
     GetPTF("concat('a','b')").aEdmType(EdmString.getInstance());
     GetPTF("concat('a','b','c')").aEdmType(EdmString.getInstance());
   }
-
-  @Test
+  
+   @Test
   public void testProperties() {
     // GetPTF("sven").aSerialized("sven").aKind(ExpressionKind.PROPERTY);
     GetPTF("sven1 add sven2").aSerialized("{sven1 add sven2}").aKind(ExpressionKind.BINARY).root().left().aKind(


[46/50] [abbrv] git commit: [OLINGO-379] Normalize file endings (for OSX)

Posted by mi...@apache.org.
[OLINGO-379] Normalize file endings (for OSX)


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/7092ad31
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/7092ad31
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/7092ad31

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 7092ad317a81c70154459518073f33d6d78aa2f2
Parents: 868e7e8
Author: Michael Bolz <mi...@sap.com>
Authored: Wed Aug 13 10:21:01 2014 +0200
Committer: Michael Bolz <mi...@sap.com>
Committed: Wed Aug 13 10:21:01 2014 +0200

----------------------------------------------------------------------
 odata2-sample/cars-annotation-archetype/pom.xml | 140 ++---
 .../main/resources/archetype-resources/pom.xml  | 296 +++++-----
 .../META-INF/maven/archetype-metadata.xml       |  80 +--
 .../src/main/java/model/Key.java                | 190 +++----
 .../java/service/ODataJPACarServiceFactory.java | 182 +++---
 .../src/main/resources/META-INF/persistence.xml |  78 +--
 .../src/main/webapp/index.html                  | 178 +++---
 odata2-sample/cars-service-archetype/pom.xml    | 158 +++---
 .../main/resources/archetype-resources/pom.xml  | 190 +++----
 .../src/main/java/CarEdmProvider.java           | 556 +++++++++----------
 .../src/main/java/CarODataSingleProcessor.java  | 302 +++++-----
 .../src/main/java/CarServiceFactory.java        |  78 +--
 12 files changed, 1214 insertions(+), 1214 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-annotation-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/pom.xml b/odata2-sample/cars-annotation-archetype/pom.xml
index 27b86a6..d5f79f1 100644
--- a/odata2-sample/cars-annotation-archetype/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/pom.xml
@@ -1,70 +1,70 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>org.apache.olingo</groupId>
-  <artifactId>olingo-odata2-sample-cars-annotation-archetype</artifactId>
-  <name>${project.artifactId}</name>
-  <version>2.0.1-SNAPSHOT</version>
-  <packaging>maven-archetype</packaging>
-
-  <parent>
-    <groupId>org.apache.olingo</groupId>
-    <artifactId>olingo-odata2-sample</artifactId>
-    <version>2.0.1-SNAPSHOT</version>
-    <relativePath>..</relativePath>
-  </parent>
-
-  <build>
-    <extensions>
-      <extension>
-        <groupId>org.apache.maven.archetype</groupId>
-        <artifactId>archetype-packaging</artifactId>
-        <version>2.2</version>
-      </extension>
-    </extensions>
-
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-archetype-plugin</artifactId>
-          <version>2.2</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-archetype-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>integration-test</id>
-            <goals>
-              <goal>integration-test</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-eclipse-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.olingo</groupId>
+  <artifactId>olingo-odata2-sample-cars-annotation-archetype</artifactId>
+  <name>${project.artifactId}</name>
+  <version>2.0.1-SNAPSHOT</version>
+  <packaging>maven-archetype</packaging>
+
+  <parent>
+    <groupId>org.apache.olingo</groupId>
+    <artifactId>olingo-odata2-sample</artifactId>
+    <version>2.0.1-SNAPSHOT</version>
+    <relativePath>..</relativePath>
+  </parent>
+
+  <build>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.archetype</groupId>
+        <artifactId>archetype-packaging</artifactId>
+        <version>2.2</version>
+      </extension>
+    </extensions>
+
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-archetype-plugin</artifactId>
+          <version>2.2</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-archetype-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>integration-test</id>
+            <goals>
+              <goal>integration-test</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-eclipse-plugin</artifactId>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
index 1acbca5..98c79d6 100644
--- a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
@@ -1,148 +1,148 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>${groupId}</groupId>
-  <artifactId>${artifactId}</artifactId>
-  <version>${version}</version>
-  <name>${project.artifactId}</name>
-
-  <packaging>war</packaging>
-
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <!-- Plugin Versions -->
-    <version.compiler-plugin>2.3.2</version.compiler-plugin>
-    <version.deploy-plugin>2.8.1</version.deploy-plugin>
-    <version.eclipse-plugin>2.9</version.eclipse-plugin>
-    <version.jetty-plugin>8.1.14.v20131031</version.jetty-plugin>
-    <!-- Dependency Versions -->
-    <version.cxf>2.7.6</version.cxf>
-    <version.servlet-api>2.5</version.servlet-api>
-    <version.jaxrs-api>2.0-m10</version.jaxrs-api>
-    <version.slf4j>1.7.1</version.slf4j>
-    <version.olingo>2.0.1-SNAPSHOT</version.olingo>
-  </properties>
-
-  <build>
-    <finalName>${project.artifactId}</finalName>
-    <defaultGoal>package jetty:run</defaultGoal>
-    <resources>
-      <resource>
-        <directory>src/main/version</directory>
-        <filtering>true</filtering>
-        <targetPath>../${project.build.finalName}/gen</targetPath>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-        <filtering>true</filtering>
-      </resource>
-      <resource>
-        <directory>target/maven-shared-archive-resources</directory>
-      </resource>
-    </resources>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>${version.compiler-plugin}</version>
-        <configuration>
-          <source>1.6</source>
-          <target>1.6</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <version>${version.deploy-plugin}</version>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-eclipse-plugin</artifactId>
-        <version>${version.eclipse-plugin}</version>
-        <configuration>
-          <addGroupIdToProjectName>true</addGroupIdToProjectName>
-          <addVersionToProjectName>true</addVersionToProjectName>
-          <wtpversion>2.0</wtpversion>
-          <downloadSources>true</downloadSources>
-          <downloadJavadocs>true</downloadJavadocs>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.mortbay.jetty</groupId>
-        <artifactId>jetty-maven-plugin</artifactId>
-        <version>${version.jetty-plugin}</version>
-      </plugin>
-    </plugins>
-  </build>
-
-  <dependencies>
-    <!-- Apache Olingo Library dependencies -->
-    <dependency>
-      <groupId>org.apache.olingo</groupId>
-      <artifactId>olingo-odata2-api</artifactId>
-      <version>${version.olingo}</version>
-    </dependency>
-    <dependency>
-      <artifactId>olingo-odata2-api-annotation</artifactId>
-      <groupId>org.apache.olingo</groupId>
-      <type>jar</type>
-      <version>${version.olingo}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.olingo</groupId>
-      <artifactId>olingo-odata2-core</artifactId>
-      <version>${version.olingo}</version>
-    </dependency>
-    <!-- Apache Olingo Annotation Processor Extension dependencies -->
-    <dependency>
-      <groupId>org.apache.olingo</groupId>
-      <artifactId>olingo-odata2-annotation-processor-api</artifactId>
-      <version>${version.olingo}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.olingo</groupId>
-      <artifactId>olingo-odata2-annotation-processor-core</artifactId>
-      <version>${version.olingo}</version>
-    </dependency>
-    <!-- Additional dependencies -->
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-      <version>${version.slf4j}</version>
-    </dependency>
-    <!-- Servlet/REST dependencies -->
-    <dependency>
-      <!-- required because of auto detection of web facet 2.5 -->
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <version>${version.servlet-api}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.ws.rs</groupId>
-      <artifactId>javax.ws.rs-api</artifactId>
-      <version>${version.jaxrs-api}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.cxf</groupId>
-      <artifactId>cxf-rt-frontend-jaxrs</artifactId>
-      <version>${version.cxf}</version>
-    </dependency>
-  </dependencies>
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>${groupId}</groupId>
+  <artifactId>${artifactId}</artifactId>
+  <version>${version}</version>
+  <name>${project.artifactId}</name>
+
+  <packaging>war</packaging>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <!-- Plugin Versions -->
+    <version.compiler-plugin>2.3.2</version.compiler-plugin>
+    <version.deploy-plugin>2.8.1</version.deploy-plugin>
+    <version.eclipse-plugin>2.9</version.eclipse-plugin>
+    <version.jetty-plugin>8.1.14.v20131031</version.jetty-plugin>
+    <!-- Dependency Versions -->
+    <version.cxf>2.7.6</version.cxf>
+    <version.servlet-api>2.5</version.servlet-api>
+    <version.jaxrs-api>2.0-m10</version.jaxrs-api>
+    <version.slf4j>1.7.1</version.slf4j>
+    <version.olingo>2.0.1-SNAPSHOT</version.olingo>
+  </properties>
+
+  <build>
+    <finalName>${project.artifactId}</finalName>
+    <defaultGoal>package jetty:run</defaultGoal>
+    <resources>
+      <resource>
+        <directory>src/main/version</directory>
+        <filtering>true</filtering>
+        <targetPath>../${project.build.finalName}/gen</targetPath>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+        <filtering>true</filtering>
+      </resource>
+      <resource>
+        <directory>target/maven-shared-archive-resources</directory>
+      </resource>
+    </resources>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>${version.compiler-plugin}</version>
+        <configuration>
+          <source>1.6</source>
+          <target>1.6</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-deploy-plugin</artifactId>
+        <version>${version.deploy-plugin}</version>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-eclipse-plugin</artifactId>
+        <version>${version.eclipse-plugin}</version>
+        <configuration>
+          <addGroupIdToProjectName>true</addGroupIdToProjectName>
+          <addVersionToProjectName>true</addVersionToProjectName>
+          <wtpversion>2.0</wtpversion>
+          <downloadSources>true</downloadSources>
+          <downloadJavadocs>true</downloadJavadocs>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.mortbay.jetty</groupId>
+        <artifactId>jetty-maven-plugin</artifactId>
+        <version>${version.jetty-plugin}</version>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <!-- Apache Olingo Library dependencies -->
+    <dependency>
+      <groupId>org.apache.olingo</groupId>
+      <artifactId>olingo-odata2-api</artifactId>
+      <version>${version.olingo}</version>
+    </dependency>
+    <dependency>
+      <artifactId>olingo-odata2-api-annotation</artifactId>
+      <groupId>org.apache.olingo</groupId>
+      <type>jar</type>
+      <version>${version.olingo}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.olingo</groupId>
+      <artifactId>olingo-odata2-core</artifactId>
+      <version>${version.olingo}</version>
+    </dependency>
+    <!-- Apache Olingo Annotation Processor Extension dependencies -->
+    <dependency>
+      <groupId>org.apache.olingo</groupId>
+      <artifactId>olingo-odata2-annotation-processor-api</artifactId>
+      <version>${version.olingo}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.olingo</groupId>
+      <artifactId>olingo-odata2-annotation-processor-core</artifactId>
+      <version>${version.olingo}</version>
+    </dependency>
+    <!-- Additional dependencies -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-log4j12</artifactId>
+      <version>${version.slf4j}</version>
+    </dependency>
+    <!-- Servlet/REST dependencies -->
+    <dependency>
+      <!-- required because of auto detection of web facet 2.5 -->
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <version>${version.servlet-api}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>javax.ws.rs</groupId>
+      <artifactId>javax.ws.rs-api</artifactId>
+      <version>${version.jaxrs-api}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cxf</groupId>
+      <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+      <version>${version.cxf}</version>
+    </dependency>
+  </dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-jpa-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml b/odata2-sample/cars-jpa-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
index c7a1d29..c45b09e 100644
--- a/odata2-sample/cars-jpa-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/odata2-sample/cars-jpa-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="olingo-odata2-sample-cars-service-incubating"
-    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <fileSets>
-    <fileSet filtered="true" packaged="true" encoding="UTF-8">
-      <directory>src/main/java</directory>
-      <includes>
-        <include>**/*.java</include>
-      </includes>
-    </fileSet>
-    <fileSet filtered="true" encoding="UTF-8">
-      <directory>src/main/webapp</directory>
-      <includes>
-        <include>**/*.xml</include>
-        <include>**/*.html</include>
-      </includes>
-    </fileSet>
-    <fileSet filtered="true" encoding="UTF-8">
-      <directory>src/main/resources</directory>
-      <includes>
-        <include>**/*.xml</include>
-      </includes>
-    </fileSet>
-    <fileSet filtered="true" encoding="UTF-8">
-      <directory></directory>
-      <includes>
-        <include>.classpath</include>
-        <include>.project</include>
-      </includes>
-    </fileSet>
-  </fileSets>
-</archetype-descriptor>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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. -->
+<archetype-descriptor xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="olingo-odata2-sample-cars-service-incubating"
+    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <fileSets>
+    <fileSet filtered="true" packaged="true" encoding="UTF-8">
+      <directory>src/main/java</directory>
+      <includes>
+        <include>**/*.java</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="true" encoding="UTF-8">
+      <directory>src/main/webapp</directory>
+      <includes>
+        <include>**/*.xml</include>
+        <include>**/*.html</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="true" encoding="UTF-8">
+      <directory>src/main/resources</directory>
+      <includes>
+        <include>**/*.xml</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="true" encoding="UTF-8">
+      <directory></directory>
+      <includes>
+        <include>.classpath</include>
+        <include>.project</include>
+      </includes>
+    </fileSet>
+  </fileSets>
+</archetype-descriptor>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/java/model/Key.java
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/java/model/Key.java b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/java/model/Key.java
index 8b93c20..91e890d 100644
--- a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/java/model/Key.java
+++ b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/java/model/Key.java
@@ -1,96 +1,96 @@
-/*******************************************************************************
- * 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.
- ******************************************************************************/
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-package ${package}.model;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
-
-@Embeddable
-public class Key implements Serializable {
-
-	private static final long serialVersionUID = -623040896539742071L;
-
-	@Column(name = "ID")
-	private int id;
-
-	@Column(name = "IDL")
-	private long idL;
-
-	public Key() {
-
-	}
-
-	public Key(int id, long idL) {
-		super();
-		this.id = id;
-		this.idL = idL;
-	}
-
-	public int getId() {
-		return id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public long getIdL() {
-		return idL;
-	}
-
-	public void setIdL(long idL) {
-		this.idL = idL;
-	}
-
-	@Override
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result + (int) (id ^ (id >>> 32));
-		result = prime * result + (int) (idL ^ (idL >>> 32));
-		return result;
-	}
-
-	@Override
-	public boolean equals(final Object obj) {
-		if (this == obj) {
-			return true;
-		}
-		if (obj == null) {
-			return false;
-		}
-		if (getClass() != obj.getClass()) {
-			return false;
-		}
-		Key other = (Key) obj;
-		if (id != other.id) {
-			return false;
-		}
-		if (idL != other.idL) {
-			return false;
-		}
-		return true;
-	}
-
+/*******************************************************************************
+ * 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.
+ ******************************************************************************/
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Embeddable;
+
+@Embeddable
+public class Key implements Serializable {
+
+	private static final long serialVersionUID = -623040896539742071L;
+
+	@Column(name = "ID")
+	private int id;
+
+	@Column(name = "IDL")
+	private long idL;
+
+	public Key() {
+
+	}
+
+	public Key(int id, long idL) {
+		super();
+		this.id = id;
+		this.idL = idL;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public long getIdL() {
+		return idL;
+	}
+
+	public void setIdL(long idL) {
+		this.idL = idL;
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + (int) (id ^ (id >>> 32));
+		result = prime * result + (int) (idL ^ (idL >>> 32));
+		return result;
+	}
+
+	@Override
+	public boolean equals(final Object obj) {
+		if (this == obj) {
+			return true;
+		}
+		if (obj == null) {
+			return false;
+		}
+		if (getClass() != obj.getClass()) {
+			return false;
+		}
+		Key other = (Key) obj;
+		if (id != other.id) {
+			return false;
+		}
+		if (idL != other.idL) {
+			return false;
+		}
+		return true;
+	}
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/java/service/ODataJPACarServiceFactory.java
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/java/service/ODataJPACarServiceFactory.java b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/java/service/ODataJPACarServiceFactory.java
index bdd153c..ecf628f 100644
--- a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/java/service/ODataJPACarServiceFactory.java
+++ b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/java/service/ODataJPACarServiceFactory.java
@@ -1,91 +1,91 @@
-/*******************************************************************************
- * 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.
- ******************************************************************************/
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-package ${package}.service;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Persistence;
-
-import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext;
-import org.apache.olingo.odata2.jpa.processor.api.ODataJPAServiceFactory;
-import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;
-
-import ${package}.model.Address;
-import ${package}.model.Car;
-import ${package}.model.Driver;
-import ${package}.model.Key;
-import ${package}.model.Manufacturer;
-
-public class ODataJPACarServiceFactory extends ODataJPAServiceFactory {
-
-	private static final String PUNIT_NAME = "MyFormula";
-	private static final int PAGE_SIZE = 5;
-
-	/** Load Sample Data **/
-	static {
-
-		List<Car> cars = new ArrayList<Car>();
-		Calendar mfDate = Calendar.getInstance();
-		mfDate.set(2013, 02, 01);
-		Address address = new Address("S1", "C1", "Z1", "CN");
-
-		Manufacturer mf = new Manufacturer(1, "SuperCar", mfDate, address, cars);
-
-		Calendar bDate = Calendar.getInstance();
-		mfDate.set(1980, 02, 19);
-		Driver driver = new Driver(1L, "Speeder", "Super", "Bolt", null, bDate);
-
-		Key key = new Key(1, 2);
-		Calendar carDate = Calendar.getInstance();
-		carDate.set(2014, 02, 20);
-		Car car = new Car(key, "M1", 20000.0, 2014, carDate.getTime(), mf,
-				driver);
-		cars.add(car);
-		driver.setCar(car);
-
-		EntityManager em = Persistence.createEntityManagerFactory(PUNIT_NAME)
-				.createEntityManager();
-		em.getTransaction().begin();
-		em.persist(mf);
-		em.persist(driver);
-		em.persist(car);
-		em.getTransaction().commit();
-
-	}
-
-	@Override
-	public ODataJPAContext initializeODataJPAContext()
-			throws ODataJPARuntimeException {
-		ODataJPAContext oDataJPAContext = getODataJPAContext();
-		oDataJPAContext.setEntityManagerFactory(Persistence
-				.createEntityManagerFactory(PUNIT_NAME));
-		oDataJPAContext.setPersistenceUnitName(PUNIT_NAME);
-
-		oDataJPAContext.setPageSize(PAGE_SIZE);
-		setDetailErrors(true);
-
-		return oDataJPAContext;
-	}
-}
+/*******************************************************************************
+ * 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.
+ ******************************************************************************/
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.service;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Persistence;
+
+import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext;
+import org.apache.olingo.odata2.jpa.processor.api.ODataJPAServiceFactory;
+import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPARuntimeException;
+
+import ${package}.model.Address;
+import ${package}.model.Car;
+import ${package}.model.Driver;
+import ${package}.model.Key;
+import ${package}.model.Manufacturer;
+
+public class ODataJPACarServiceFactory extends ODataJPAServiceFactory {
+
+	private static final String PUNIT_NAME = "MyFormula";
+	private static final int PAGE_SIZE = 5;
+
+	/** Load Sample Data **/
+	static {
+
+		List<Car> cars = new ArrayList<Car>();
+		Calendar mfDate = Calendar.getInstance();
+		mfDate.set(2013, 02, 01);
+		Address address = new Address("S1", "C1", "Z1", "CN");
+
+		Manufacturer mf = new Manufacturer(1, "SuperCar", mfDate, address, cars);
+
+		Calendar bDate = Calendar.getInstance();
+		mfDate.set(1980, 02, 19);
+		Driver driver = new Driver(1L, "Speeder", "Super", "Bolt", null, bDate);
+
+		Key key = new Key(1, 2);
+		Calendar carDate = Calendar.getInstance();
+		carDate.set(2014, 02, 20);
+		Car car = new Car(key, "M1", 20000.0, 2014, carDate.getTime(), mf,
+				driver);
+		cars.add(car);
+		driver.setCar(car);
+
+		EntityManager em = Persistence.createEntityManagerFactory(PUNIT_NAME)
+				.createEntityManager();
+		em.getTransaction().begin();
+		em.persist(mf);
+		em.persist(driver);
+		em.persist(car);
+		em.getTransaction().commit();
+
+	}
+
+	@Override
+	public ODataJPAContext initializeODataJPAContext()
+			throws ODataJPARuntimeException {
+		ODataJPAContext oDataJPAContext = getODataJPAContext();
+		oDataJPAContext.setEntityManagerFactory(Persistence
+				.createEntityManagerFactory(PUNIT_NAME));
+		oDataJPAContext.setPersistenceUnitName(PUNIT_NAME);
+
+		oDataJPAContext.setPageSize(PAGE_SIZE);
+		setDetailErrors(true);
+
+		return oDataJPAContext;
+	}
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml
index dd20900..73321e4 100644
--- a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml
+++ b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/resources/META-INF/persistence.xml
@@ -1,39 +1,39 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 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. -->
-<persistence version="2.0"
-	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
-	<persistence-unit name="MyFormula"
-		transaction-type="RESOURCE_LOCAL">
-		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
-		<class>${package}.model.Driver</class>
-		<class>${package}.model.Car</class>
-		<class>${package}.model.Manufacturer</class>
-		<properties>
-			<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" />
-			<property name="javax.persistence.jdbc.url"
-				value="jdbc:hsqldb:mem:org.apache.olingo.jpa.sample" />
-			<property name="javax.persistence.jdbc.user" value="sa" />
-			<property name="javax.persistence.jdbc.password" value="" />
-			<property name="eclipselink.target-database"
-				value="org.eclipse.persistence.platform.database.HSQLPlatform" />
-			<property name="eclipselink.logging.level" value="ALL" />
-			<property name="eclipselink.orm.throw.exceptions" value="true" />
-			<property name="eclipselink.ddl-generation" value="create-tables" />
-			<property name="eclipselink.ddl-generation.output-mode"
-				value="database" />
-		</properties>
-	</persistence-unit>
-</persistence>
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 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. -->
+<persistence version="2.0"
+	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+	<persistence-unit name="MyFormula"
+		transaction-type="RESOURCE_LOCAL">
+		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+		<class>${package}.model.Driver</class>
+		<class>${package}.model.Car</class>
+		<class>${package}.model.Manufacturer</class>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" />
+			<property name="javax.persistence.jdbc.url"
+				value="jdbc:hsqldb:mem:org.apache.olingo.jpa.sample" />
+			<property name="javax.persistence.jdbc.user" value="sa" />
+			<property name="javax.persistence.jdbc.password" value="" />
+			<property name="eclipselink.target-database"
+				value="org.eclipse.persistence.platform.database.HSQLPlatform" />
+			<property name="eclipselink.logging.level" value="ALL" />
+			<property name="eclipselink.orm.throw.exceptions" value="true" />
+			<property name="eclipselink.ddl-generation" value="create-tables" />
+			<property name="eclipselink.ddl-generation.output-mode"
+				value="database" />
+		</properties>
+	</persistence-unit>
+</persistence>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/webapp/index.html b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/webapp/index.html
index 40076bc..238460d 100644
--- a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/webapp/index.html
+++ b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/src/main/webapp/index.html
@@ -1,89 +1,89 @@
-<!--
-
- 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.
-
--->
-<!DOCTYPE html>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<title>Apache Olingo - OData2 Library</title>
-<style type="text/css">
-body { font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;
-       color: blue; background-color: #ffffff; }
-a { color: blue; text-decoration: none; }
-a:focus { outline: thin dotted #4076cb; outline-offset: -1px; }
-a:hover, a:active { outline: 0; }
-a:hover { color: #404a7e; text-decoration: underline; }
-h1, h2, h3, h4, h5, h6 { margin: 9px 0; font-family: inherit; font-weight: bold;
-                         line-height: 1; color: blue; }
-h1 { font-size: 36px; line-height: 40px; }
-h2 { font-size: 30px; line-height: 40px; }
-h3 { font-size: 24px; line-height: 40px; }
-h4 { font-size: 18px; line-height: 20px; }
-h5 { font-size: 14px; line-height: 20px; }
-h6 { font-size: 12px; line-height: 20px; }
-.logo { float: right; }
-ul { padding: 0; margin: 0 0 9px 25px; }
-ul ul { margin-bottom: 0; }
-li { line-height: 18px; }
-hr { margin: 18px 0;
-     border: 0; border-top: 1px solid #cccccc; border-bottom: 1px solid #ffffff; }
-table { border-collapse: collapse; border-spacing: 10px; }
-th, td { border: 1px solid; padding: 20px; }
-.code { font-family: "Courier New", monospace; font-size: 13px; line-height: 18px; }
-</style>
-</head>
-<body>
-    <h1>Apache Olingo - OData2 Library</h1>
-    <hr />
-    <h2>Cars OData JPA Service</h2>
-    <table>
-        <tr>
-            <td valign="top">
-                <h3>Service Document and Metadata</h3>
-                <ul>
-                    <li><a href="MyFormula.svc?_wadl" target="_blank">wadl</a></li>
-                    <li><a href="MyFormula.svc/" target="_blank">service document</a></li>
-                    <li><a href="MyFormula.svc/$metadata" target="_blank">metadata</a></li>
-                </ul>
-                <h3>EntitySets</h3>
-                <ul>
-                    <li><a href="MyFormula.svc/Manufacturers" target="_blank">Manufacturers</a></li>
-                    <li><a href="MyFormula.svc/Manufacturers?$expand=CarDetails" target="_blank">Manufacturers?$expand=CarDetails</a></li>
-                    <li><a href="MyFormula.svc/Cars" target="_blank">Cars</a></li>
-                    <li><a href="MyFormula.svc/Cars?$expand=DriverDetails" target="_blank">Cars?$expand=DriverDetails</a></li>
-                    <li><a href="MyFormula.svc/Drivers" target="_blank">Drivers</a></li>
-                    <li><a href="MyFormula.svc/Drivers?$expand=CarDetails" target="_blank">Drivers/$expand=CarDetails</a></li>
-                    <li><a href="MyFormula.svc/Drivers/?$orderby=Lastname" target="_blank">Drivers?$orderby=Lastname</a></li>
-                </ul>
-                <h3>Entities</h3>
-                <ul>
-                    <li><a href="MyFormula.svc/Manufacturers(1)" target="_blank">Manufacturers(1)</a></li>
-                    <li><a href="MyFormula.svc/Manufacturers(1)/CarDetails" target="_blank">Manufacturers(1)/CarDetails</a></li>
-                    <li><a href="MyFormula.svc/Cars(Id=1,IdL=2)" target="_blank">Cars(Id=1,IdL=2)</a></li>
-                    <li><a href="MyFormula.svc/Cars(Id=1,IdL=2)/DriverDetails" target="_blank">Cars(Id=1,IdL=2)/DriverDetails</a></li>
-                    <li><a href="MyFormula.svc/Cars(Id=1,IdL=2)?$expand=ManufacturerDetails" target="_blank">Cars(Id=1,IdL=2)?$expand=ManufacturerDetails</a></li>
-                    <li><a href="MyFormula.svc/Drivers(1)" target="_blank">Drivers(1)</a></li>
-                    <li><a href="MyFormula.svc/Drivers(1)/CarDetails" target="_blank">Drivers(1)/CarDetails</a></li>
-                </ul>
-            </td>
-        </tr>
-    </table>
-</body>
-</html>
+<!--
+
+ 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.
+
+-->
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Apache Olingo - OData2 Library</title>
+<style type="text/css">
+body { font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;
+       color: blue; background-color: #ffffff; }
+a { color: blue; text-decoration: none; }
+a:focus { outline: thin dotted #4076cb; outline-offset: -1px; }
+a:hover, a:active { outline: 0; }
+a:hover { color: #404a7e; text-decoration: underline; }
+h1, h2, h3, h4, h5, h6 { margin: 9px 0; font-family: inherit; font-weight: bold;
+                         line-height: 1; color: blue; }
+h1 { font-size: 36px; line-height: 40px; }
+h2 { font-size: 30px; line-height: 40px; }
+h3 { font-size: 24px; line-height: 40px; }
+h4 { font-size: 18px; line-height: 20px; }
+h5 { font-size: 14px; line-height: 20px; }
+h6 { font-size: 12px; line-height: 20px; }
+.logo { float: right; }
+ul { padding: 0; margin: 0 0 9px 25px; }
+ul ul { margin-bottom: 0; }
+li { line-height: 18px; }
+hr { margin: 18px 0;
+     border: 0; border-top: 1px solid #cccccc; border-bottom: 1px solid #ffffff; }
+table { border-collapse: collapse; border-spacing: 10px; }
+th, td { border: 1px solid; padding: 20px; }
+.code { font-family: "Courier New", monospace; font-size: 13px; line-height: 18px; }
+</style>
+</head>
+<body>
+    <h1>Apache Olingo - OData2 Library</h1>
+    <hr />
+    <h2>Cars OData JPA Service</h2>
+    <table>
+        <tr>
+            <td valign="top">
+                <h3>Service Document and Metadata</h3>
+                <ul>
+                    <li><a href="MyFormula.svc?_wadl" target="_blank">wadl</a></li>
+                    <li><a href="MyFormula.svc/" target="_blank">service document</a></li>
+                    <li><a href="MyFormula.svc/$metadata" target="_blank">metadata</a></li>
+                </ul>
+                <h3>EntitySets</h3>
+                <ul>
+                    <li><a href="MyFormula.svc/Manufacturers" target="_blank">Manufacturers</a></li>
+                    <li><a href="MyFormula.svc/Manufacturers?$expand=CarDetails" target="_blank">Manufacturers?$expand=CarDetails</a></li>
+                    <li><a href="MyFormula.svc/Cars" target="_blank">Cars</a></li>
+                    <li><a href="MyFormula.svc/Cars?$expand=DriverDetails" target="_blank">Cars?$expand=DriverDetails</a></li>
+                    <li><a href="MyFormula.svc/Drivers" target="_blank">Drivers</a></li>
+                    <li><a href="MyFormula.svc/Drivers?$expand=CarDetails" target="_blank">Drivers/$expand=CarDetails</a></li>
+                    <li><a href="MyFormula.svc/Drivers/?$orderby=Lastname" target="_blank">Drivers?$orderby=Lastname</a></li>
+                </ul>
+                <h3>Entities</h3>
+                <ul>
+                    <li><a href="MyFormula.svc/Manufacturers(1)" target="_blank">Manufacturers(1)</a></li>
+                    <li><a href="MyFormula.svc/Manufacturers(1)/CarDetails" target="_blank">Manufacturers(1)/CarDetails</a></li>
+                    <li><a href="MyFormula.svc/Cars(Id=1,IdL=2)" target="_blank">Cars(Id=1,IdL=2)</a></li>
+                    <li><a href="MyFormula.svc/Cars(Id=1,IdL=2)/DriverDetails" target="_blank">Cars(Id=1,IdL=2)/DriverDetails</a></li>
+                    <li><a href="MyFormula.svc/Cars(Id=1,IdL=2)?$expand=ManufacturerDetails" target="_blank">Cars(Id=1,IdL=2)?$expand=ManufacturerDetails</a></li>
+                    <li><a href="MyFormula.svc/Drivers(1)" target="_blank">Drivers(1)</a></li>
+                    <li><a href="MyFormula.svc/Drivers(1)/CarDetails" target="_blank">Drivers(1)/CarDetails</a></li>
+                </ul>
+            </td>
+        </tr>
+    </table>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-service-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/pom.xml b/odata2-sample/cars-service-archetype/pom.xml
index 569be90..8e2a7f2 100644
--- a/odata2-sample/cars-service-archetype/pom.xml
+++ b/odata2-sample/cars-service-archetype/pom.xml
@@ -1,79 +1,79 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>org.apache.olingo</groupId>
-    <artifactId>olingo-odata2-sample-cars-service-archetype</artifactId>
-    <name>${project.artifactId}</name>
-    <version>2.0.1-SNAPSHOT</version>
-
-    <packaging>maven-archetype</packaging>
-
-    <parent>
-        <groupId>org.apache.olingo</groupId>
-        <artifactId>olingo-odata2-sample</artifactId>
-        <version>2.0.1-SNAPSHOT</version>
-        <relativePath>..</relativePath>
-    </parent>
-
-    <build>
-        <extensions>
-            <extension>
-                <groupId>org.apache.maven.archetype</groupId>
-                <artifactId>archetype-packaging</artifactId>
-                <version>2.2</version>
-            </extension>
-        </extensions>
-
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-archetype-plugin</artifactId>
-                    <version>2.2</version>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-archetype-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>integration-test</id>
-                        <goals>
-                            <goal>integration-test</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-eclipse-plugin</artifactId>
-                <configuration>
-                    <skip>true</skip>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.apache.olingo</groupId>
+    <artifactId>olingo-odata2-sample-cars-service-archetype</artifactId>
+    <name>${project.artifactId}</name>
+    <version>2.0.1-SNAPSHOT</version>
+
+    <packaging>maven-archetype</packaging>
+
+    <parent>
+        <groupId>org.apache.olingo</groupId>
+        <artifactId>olingo-odata2-sample</artifactId>
+        <version>2.0.1-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+    <build>
+        <extensions>
+            <extension>
+                <groupId>org.apache.maven.archetype</groupId>
+                <artifactId>archetype-packaging</artifactId>
+                <version>2.2</version>
+            </extension>
+        </extensions>
+
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-archetype-plugin</artifactId>
+                    <version>2.2</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-archetype-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>integration-test</id>
+                        <goals>
+                            <goal>integration-test</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-eclipse-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7092ad31/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
index 4400759..2bcb9b4 100644
--- a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
@@ -1,101 +1,101 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- 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. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-
-	<groupId>${groupId}</groupId>
-	<artifactId>${artifactId}</artifactId>
-	<name>${project.artifactId}</name>
-	<version>${version}</version>
-
-	<packaging>war</packaging>
-
-	<properties>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<version.cxf>2.7.6</version.cxf>
-		<version.slf4j>1.7.1</version.slf4j>
-		<version.olingo>2.0.1-SNAPSHOT</version.olingo>
-	</properties>
-
-	<build>
-		<finalName>${project.artifactId}</finalName>
-
-		<pluginManagement>
-			<plugins>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-compiler-plugin</artifactId>
-					<version>2.3.2</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-war-plugin</artifactId>
-					<version>2.4</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-eclipse-plugin</artifactId>
-					<version>2.9</version>
-				</plugin>
-			</plugins>
-		</pluginManagement>
-
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-eclipse-plugin</artifactId>
-				<configuration>
-					<addGroupIdToProjectName>true</addGroupIdToProjectName>
-					<addVersionToProjectName>true</addVersionToProjectName>
-					<wtpversion>2.0</wtpversion>
-					<downloadSources>true</downloadSources>
-					<downloadJavadocs>true</downloadJavadocs>
-				</configuration>
-			</plugin>
-		</plugins>
-
-	</build>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.olingo</groupId>
-			<artifactId>olingo-odata2-core</artifactId>
-			<version>${version.olingo}</version>
-		</dependency>
-		<dependency>
-			<groupId>javax.servlet</groupId>
-			<artifactId>servlet-api</artifactId>
-			<version>2.5</version>
-			<scope>provided</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.cxf</groupId>
-			<artifactId>cxf-rt-frontend-jaxrs</artifactId>
-			<version>${version.cxf}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-api</artifactId>
-			<version>${version.slf4j}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.slf4j</groupId>
-			<artifactId>slf4j-log4j12</artifactId>
-			<version>${version.slf4j}</version>
-		</dependency>
-	</dependencies>
-</project>
+    the License. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>${groupId}</groupId>
+	<artifactId>${artifactId}</artifactId>
+	<name>${project.artifactId}</name>
+	<version>${version}</version>
+
+	<packaging>war</packaging>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<version.cxf>2.7.6</version.cxf>
+		<version.slf4j>1.7.1</version.slf4j>
+		<version.olingo>2.0.1-SNAPSHOT</version.olingo>
+	</properties>
+
+	<build>
+		<finalName>${project.artifactId}</finalName>
+
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-compiler-plugin</artifactId>
+					<version>2.3.2</version>
+				</plugin>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-war-plugin</artifactId>
+					<version>2.4</version>
+				</plugin>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-eclipse-plugin</artifactId>
+					<version>2.9</version>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.6</source>
+					<target>1.6</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-eclipse-plugin</artifactId>
+				<configuration>
+					<addGroupIdToProjectName>true</addGroupIdToProjectName>
+					<addVersionToProjectName>true</addVersionToProjectName>
+					<wtpversion>2.0</wtpversion>
+					<downloadSources>true</downloadSources>
+					<downloadJavadocs>true</downloadJavadocs>
+				</configuration>
+			</plugin>
+		</plugins>
+
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.olingo</groupId>
+			<artifactId>olingo-odata2-core</artifactId>
+			<version>${version.olingo}</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.5</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.cxf</groupId>
+			<artifactId>cxf-rt-frontend-jaxrs</artifactId>
+			<version>${version.cxf}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<version>${version.slf4j}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-log4j12</artifactId>
+			<version>${version.slf4j}</version>
+		</dependency>
+	</dependencies>
+</project>


[41/50] [abbrv] git commit: [OLINGO-354] Deserialization of all types of FunctionImports

Posted by mi...@apache.org.
[OLINGO-354] Deserialization of all types of FunctionImports


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/6fd6f064
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/6fd6f064
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/6fd6f064

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 6fd6f064d5d8ed97cd914b1378e988655270533a
Parents: f414699
Author: Michael Bolz <mi...@apache.org>
Authored: Tue Aug 5 15:14:09 2014 +0200
Committer: Michael Bolz <mi...@apache.org>
Committed: Tue Aug 5 19:41:00 2014 +0200

----------------------------------------------------------------------
 .../olingo/odata2/api/ep/EntityProvider.java    |  34 +++++
 .../odata2/core/ep/AtomEntityProvider.java      |  18 +++
 .../core/ep/ContentTypeBasedEntityProvider.java |   3 +
 .../odata2/core/ep/JsonEntityProvider.java      |  18 +++
 .../odata2/core/ep/ProviderFacadeImpl.java      |   6 +
 .../core/ep/consumer/JsonEntityConsumer.java    |  39 ++++-
 .../core/ep/consumer/JsonPropertyConsumer.java  | 126 +++++++++++----
 .../core/ep/consumer/XmlEntityConsumer.java     |  39 ++++-
 .../core/ep/consumer/XmlEntryConsumer.java      |   2 +-
 .../core/ep/consumer/XmlPropertyConsumer.java   |  63 ++++++--
 .../odata2/core/ep/ProviderFacadeImplTest.java  |  10 ++
 .../ep/consumer/JsonPropertyConsumerTest.java   | 120 ++++++++++++++-
 .../ep/consumer/XmlPropertyConsumerTest.java    | 153 ++++++++++++++-----
 .../odata2/core/uri/expression/TestParser.java  |   1 -
 .../odata2/fit/ref/FunctionImportJsonTest.java  | 106 +++++++++++--
 .../odata2/fit/ref/FunctionImportXmlTest.java   |  34 ++++-
 16 files changed, 664 insertions(+), 108 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProvider.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProvider.java
index f989d4a..361a94e 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProvider.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProvider.java
@@ -313,6 +313,22 @@ public final class EntityProvider {
         throws EntityProviderException;
 
     /**
+     * Reads (de-serializes) function-import data from <code>content</code> (as {@link InputStream}) in specified format
+     * (given as <code>contentType</code>) based on <code>entity data model</code> (given as {@link EdmFunctionImport})
+     * and provide this data as {@link Object}.
+     * 
+     * @param contentType format of content in the given input stream.
+     * @param functionImport entity data model for Function Import to be read
+     * @param content data in form of an {@link InputStream} which contains the data in specified format
+     * @param properties additional properties necessary for reading content from {@link InputStream} into {@link Map}.
+     * Must not be null.
+     * @return data as {@link Object}
+     * @throws EntityProviderException if reading of data (de-serialization) fails
+     */
+    Object readFunctionImport(final String contentType, final EdmFunctionImport functionImport,
+        final InputStream content, final EntityProviderReadProperties properties) throws EntityProviderException;
+
+    /**
      * Read (de-serialize) a link from <code>content</code> (as {@link InputStream}) in specified format (given as
      * <code>contentType</code>)
      * based on <code>entity data model</code> (given as {@link EdmEntitySet}) and provide the link as {@link String}.
@@ -754,6 +770,24 @@ public final class EntityProvider {
   }
 
   /**
+   * Reads (de-serializes) function-import data from <code>content</code> (as {@link InputStream}) in specified format
+   * (given as <code>contentType</code>) based on <code>entity data model</code> (given as {@link EdmFunctionImport})
+   * and provide this data as {@link Object}.
+   * 
+   * @param contentType format of content in the given input stream.
+   * @param functionImport entity data model for Function Import to be read
+   * @param content data in form of an {@link InputStream} which contains the data in specified format
+   * @param properties additional properties necessary for reading content from {@link InputStream} into {@link Map}.
+   * Must not be null.
+   * @return data as {@link Object}
+   * @throws EntityProviderException if reading of data (de-serialization) fails
+   */
+  public static Object readFunctionImport(final String contentType, final EdmFunctionImport functionImport,
+      final InputStream content, final EntityProviderReadProperties properties) throws EntityProviderException {
+    return createEntityProvider().readFunctionImport(contentType, functionImport, content, properties);
+  }
+
+  /**
    * Read (de-serialize) a link from <code>content</code> (as {@link InputStream}) in specified format (given as
    * <code>contentType</code>)
    * based on <code>entity data model</code> (given as {@link EdmEntitySet}) and provide the link as {@link String}.

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
index 441dace..e788403 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/AtomEntityProvider.java
@@ -409,4 +409,22 @@ public class AtomEntityProvider implements ContentTypeBasedEntityProvider {
     XmlErrorDocumentConsumer xmlErrorDocumentConsumer = new XmlErrorDocumentConsumer();
     return xmlErrorDocumentConsumer.readError(errorDocument);
   }
+
+  @Override
+  public Object readFunctionImport(final EdmFunctionImport functionImport, InputStream content,
+      final EntityProviderReadProperties properties) throws EntityProviderException {
+    try {
+      if (functionImport.getReturnType().getType().getKind() == EdmTypeKind.ENTITY) {
+        return new XmlEntityConsumer().readEntry(functionImport.getEntitySet(), content, properties);
+      } else {
+        final EntityPropertyInfo info = EntityInfoAggregator.create(functionImport);
+        return functionImport.getReturnType().getMultiplicity() == EdmMultiplicity.MANY ?
+          new XmlEntityConsumer().readCollection(info, content, properties) :
+          new XmlEntityConsumer().readProperty(info, content, properties).get(info.getName());
+      }
+    } catch (final EdmException e) {
+      throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
+          .addContent(e.getClass().getSimpleName()), e);
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ContentTypeBasedEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ContentTypeBasedEntityProvider.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ContentTypeBasedEntityProvider.java
index b988039..249931d 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ContentTypeBasedEntityProvider.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ContentTypeBasedEntityProvider.java
@@ -87,4 +87,7 @@ public interface ContentTypeBasedEntityProvider {
       throws EntityProviderException;
 
   ODataErrorContext readErrorDocument(InputStream errorDocument) throws EntityProviderException;
+
+  Object readFunctionImport(EdmFunctionImport functionImport, InputStream content,
+      EntityProviderReadProperties properties) throws EntityProviderException;
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
index def8c6a..bbece4f 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/JsonEntityProvider.java
@@ -322,6 +322,24 @@ public class JsonEntityProvider implements ContentTypeBasedEntityProvider {
   }
 
   @Override
+  public Object readFunctionImport(final EdmFunctionImport functionImport, final InputStream content,
+      final EntityProviderReadProperties properties) throws EntityProviderException {
+    try {
+      if (functionImport.getReturnType().getType().getKind() == EdmTypeKind.ENTITY) {
+        return new JsonEntityConsumer().readEntry(functionImport.getEntitySet(), content, properties);
+      } else {
+        final EntityPropertyInfo info = EntityInfoAggregator.create(functionImport);
+        return functionImport.getReturnType().getMultiplicity() == EdmMultiplicity.MANY ?
+          new JsonEntityConsumer().readCollection(info, content, properties) :
+          new JsonEntityConsumer().readProperty(info, content, properties).get(info.getName());
+      }
+    } catch (final EdmException e) {
+      throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
+          .addContent(e.getClass().getSimpleName()), e);
+    }
+  }
+
+  @Override
   public String readLink(final EdmEntitySet entitySet, final InputStream content) throws EntityProviderException {
     return new JsonEntityConsumer().readLink(entitySet, content);
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
index 803c97c..c76109b 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImpl.java
@@ -192,6 +192,12 @@ public class ProviderFacadeImpl implements EntityProviderInterface {
   }
 
   @Override
+  public Object readFunctionImport(final String contentType, final EdmFunctionImport functionImport,
+      final InputStream content, final EntityProviderReadProperties properties) throws EntityProviderException {
+    return create(contentType).readFunctionImport(functionImport, content, properties);
+  }
+
+  @Override
   public List<String> readLinks(final String contentType, final EdmEntitySet entitySet, final InputStream content)
       throws EntityProviderException {
     return create(contentType).readLinks(entitySet, content);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntityConsumer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntityConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntityConsumer.java
index efbcbb9..2faa530 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntityConsumer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonEntityConsumer.java
@@ -33,6 +33,7 @@ import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
 import org.apache.olingo.odata2.api.ep.feed.ODataDeltaFeed;
 import org.apache.olingo.odata2.api.ep.feed.ODataFeed;
 import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
 
 import com.google.gson.stream.JsonReader;
 
@@ -115,14 +116,20 @@ public class JsonEntityConsumer {
     }
   }
 
-  public Map<String, Object> readProperty(final EdmProperty property, final InputStream content,
+
+  public Map<String, Object> readProperty(final EdmProperty edmProperty, InputStream content,
+      final EntityProviderReadProperties properties) throws EntityProviderException {
+    return readProperty(EntityInfoAggregator.create(edmProperty), content, properties);
+  }
+
+  public Map<String, Object> readProperty(final EntityPropertyInfo propertyInfo, final InputStream content,
       final EntityProviderReadProperties readProperties) throws EntityProviderException {
     JsonReader reader = null;
     EntityProviderException cachedException = null;
 
     try {
       reader = createJsonReader(content);
-      return new JsonPropertyConsumer().readPropertyStandalone(reader, property, readProperties);
+      return new JsonPropertyConsumer().readPropertyStandalone(reader, propertyInfo, readProperties);
     } catch (final UnsupportedEncodingException e) {
       cachedException =
           new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
@@ -144,6 +151,34 @@ public class JsonEntityConsumer {
     }
   }
 
+  public List<?> readCollection(final EntityPropertyInfo info, InputStream content,
+      final EntityProviderReadProperties properties) throws EntityProviderException {
+    JsonReader reader = null;
+    EntityProviderException cachedException = null;
+
+    try {
+      reader = createJsonReader(content);
+      return new JsonPropertyConsumer().readCollection(reader, info, properties);
+    } catch (final UnsupportedEncodingException e) {
+      cachedException = new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
+          .addContent(e.getClass().getSimpleName()), e);
+      throw cachedException;
+    } finally {// NOPMD (suppress DoNotThrowExceptionInFinally)
+      if (reader != null) {
+        try {
+          reader.close();
+        } catch (final IOException e) {
+          if (cachedException != null) {
+            throw cachedException;
+          } else {
+            throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
+                .addContent(e.getClass().getSimpleName()), e);
+          }
+        }
+      }
+    }
+  }
+
   public String readLink(final EdmEntitySet entitySet, final Object content) throws EntityProviderException {
     JsonReader reader = null;
     EntityProviderException cachedException = null;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonPropertyConsumer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonPropertyConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonPropertyConsumer.java
index 1d0cd96..7589aa5 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonPropertyConsumer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/JsonPropertyConsumer.java
@@ -19,7 +19,9 @@
 package org.apache.olingo.odata2.core.ep.consumer;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.olingo.odata2.api.edm.Edm;
@@ -44,22 +46,26 @@ import com.google.gson.stream.JsonToken;
  */
 public class JsonPropertyConsumer {
 
-  public Map<String, Object> readPropertyStandalone(final JsonReader reader, final EdmProperty property,
+  public Map<String, Object> readPropertyStandalone(JsonReader reader, final EdmProperty edmProperty,
       final EntityProviderReadProperties readProperties) throws EntityProviderException {
-    try {
-      EntityPropertyInfo entityPropertyInfo = EntityInfoAggregator.create(property);
-      Map<String, Object> typeMappings = readProperties == null ? null : readProperties.getTypeMappings();
-      Map<String, Object> result = new HashMap<String, Object>();
+    return readPropertyStandalone(reader, EntityInfoAggregator.create(edmProperty), readProperties);
+  }
 
+  public Map<String, Object> readPropertyStandalone(final JsonReader reader, final EntityPropertyInfo propertyInfo,
+      final EntityProviderReadProperties readProperties) throws EntityProviderException {
+    Map<String, Object> typeMappings = readProperties == null ? null : readProperties.getTypeMappings();
+    Map<String, Object> result = new HashMap<String, Object>();
+
+    try {
       reader.beginObject();
       String nextName = reader.nextName();
       if (FormatJson.D.equals(nextName)) {
         reader.beginObject();
         nextName = reader.nextName();
-        handleName(reader, typeMappings, entityPropertyInfo, readProperties, result, nextName);
+        handleName(reader, typeMappings, propertyInfo, readProperties, result, nextName);
         reader.endObject();
       } else {
-        handleName(reader, typeMappings, entityPropertyInfo, readProperties, result, nextName);
+        handleName(reader, typeMappings, propertyInfo, readProperties, result, nextName);
       }
       reader.endObject();
 
@@ -78,17 +84,80 @@ public class JsonPropertyConsumer {
     }
   }
 
+  public List<?> readCollection(JsonReader reader, final EntityPropertyInfo propertyInfo,
+        final EntityProviderReadProperties readProperties) throws EntityProviderException {
+    final Object typeMapping = readProperties == null ? null :
+      readProperties.getTypeMappings().get(propertyInfo.getName());
+    List<Object> result = new ArrayList<Object>();
+    String name = null;
+    boolean wrapped = false;
+    boolean version2 = false;
+
+    try {
+      if (reader.peek() == JsonToken.BEGIN_OBJECT) {
+        reader.beginObject();
+        name = reader.nextName();
+        if (FormatJson.D.equals(name)) {
+          wrapped = true;
+          if (reader.peek() == JsonToken.BEGIN_OBJECT) {
+            reader.beginObject();
+            name = reader.nextName();
+          } else {
+            name = null;
+          }
+        }
+      }
+      if (name != null) {
+        version2 = true;
+        if (FormatJson.METADATA.equals(name)) {
+          readAndCheckTypeInfo(reader,
+              "Collection(" + propertyInfo.getType().getNamespace() + Edm.DELIMITER
+              + propertyInfo.getType().getName() + ")");
+          name = reader.nextName();
+        }
+        if (!FormatJson.RESULTS.equals(name)) {
+          throw new EntityProviderException(EntityProviderException.INVALID_PARENT_TAG
+              .addContent(FormatJson.RESULTS, name));
+        }
+      }
+      reader.beginArray();
+      while (reader.hasNext()) {
+        result.add(readPropertyValue(reader, propertyInfo, typeMapping, readProperties));
+      }
+      reader.endArray();
+      if (version2) {
+        reader.endObject();
+      }
+      if (wrapped) {
+        reader.endObject();
+      }
+
+      if (reader.peek() != JsonToken.END_DOCUMENT) {
+        throw new EntityProviderException(EntityProviderException.END_DOCUMENT_EXPECTED
+            .addContent(reader.peek().toString()));
+      }
+
+      return result;
+    } catch (final EdmException e) {
+      throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
+          .addContent(e.getClass().getSimpleName()), e);
+    } catch (final IOException e) {
+      throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
+          .addContent(e.getClass().getSimpleName()), e);
+    } catch (final IllegalStateException e) {
+      throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
+          .addContent(e.getClass().getSimpleName()), e);
+    }
+  }
+
   private void handleName(final JsonReader reader, final Map<String, Object> typeMappings,
       final EntityPropertyInfo entityPropertyInfo, final EntityProviderReadProperties readProperties,
       final Map<String, Object> result, final String nextName) throws EntityProviderException {
     if (!entityPropertyInfo.getName().equals(nextName)) {
       throw new EntityProviderException(EntityProviderException.ILLEGAL_ARGUMENT.addContent(nextName));
     }
-    Object mapping = null;
-    if (typeMappings != null) {
-      mapping = typeMappings.get(nextName);
-    }
-    Object propertyValue = readPropertyValue(reader, entityPropertyInfo, mapping, readProperties);
+    final Object mapping = typeMappings == null ? null : typeMappings.get(nextName);
+    final Object propertyValue = readPropertyValue(reader, entityPropertyInfo, mapping, readProperties);
     result.put(nextName, propertyValue);
   }
 
@@ -196,22 +265,10 @@ public class JsonPropertyConsumer {
     }
 
     while (reader.hasNext()) {
-      String childName = reader.nextName();
+      final String childName = reader.nextName();
       if (FormatJson.METADATA.equals(childName)) {
-        reader.beginObject();
-        childName = reader.nextName();
-        if (!FormatJson.TYPE.equals(childName)) {
-          throw new EntityProviderException(EntityProviderException.MISSING_ATTRIBUTE.addContent(FormatJson.TYPE)
-              .addContent(FormatJson.METADATA));
-        }
-        String actualTypeName = reader.nextString();
-        String expectedTypeName =
-            complexPropertyInfo.getType().getNamespace() + Edm.DELIMITER + complexPropertyInfo.getType().getName();
-        if (!expectedTypeName.equals(actualTypeName)) {
-          throw new EntityProviderException(EntityProviderException.INVALID_ENTITYTYPE.addContent(expectedTypeName)
-              .addContent(actualTypeName));
-        }
-        reader.endObject();
+        readAndCheckTypeInfo(reader,
+            complexPropertyInfo.getType().getNamespace() + Edm.DELIMITER + complexPropertyInfo.getType().getName());
       } else {
         EntityPropertyInfo childPropertyInfo = complexPropertyInfo.getPropertyInfo(childName);
         if (childPropertyInfo == null) {
@@ -227,4 +284,19 @@ public class JsonPropertyConsumer {
     reader.endObject();
     return data;
   }
+
+  protected void readAndCheckTypeInfo(final JsonReader reader, String expectedTypeName)
+          throws IOException, EntityProviderException {
+    reader.beginObject();
+    if (!FormatJson.TYPE.equals(reader.nextName())) {
+      throw new EntityProviderException(EntityProviderException.MISSING_ATTRIBUTE.addContent(FormatJson.TYPE)
+          .addContent(FormatJson.METADATA));
+    }
+    final String actualTypeName = reader.nextString();
+    if (!expectedTypeName.equals(actualTypeName)) {
+      throw new EntityProviderException(EntityProviderException.INVALID_ENTITYTYPE.addContent(expectedTypeName)
+          .addContent(actualTypeName));
+    }
+    reader.endObject();
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumer.java
index acbc77f..378cf98 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntityConsumer.java
@@ -36,6 +36,7 @@ import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
 import org.apache.olingo.odata2.api.ep.feed.ODataDeltaFeed;
 import org.apache.olingo.odata2.core.commons.XmlHelper;
 import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
 
 /**
  * Xml entity (content type dependent) consumer for reading input (from <code>content</code>).
@@ -109,14 +110,16 @@ public class XmlEntityConsumer {
 
   public Map<String, Object> readProperty(final EdmProperty edmProperty, final InputStream content,
       final EntityProviderReadProperties properties) throws EntityProviderException {
+    return readProperty(EntityInfoAggregator.create(edmProperty), content, properties);
+  }
+
+  public Map<String, Object> readProperty(final EntityPropertyInfo propertyInfo, final InputStream content,
+      final EntityProviderReadProperties readProperties) throws EntityProviderException {
     XMLStreamReader reader = null;
     EntityProviderException cachedException = null;
-    XmlPropertyConsumer xec = new XmlPropertyConsumer();
-
     try {
       reader = XmlHelper.createStreamReader(content);
-      return xec.readProperty(reader, edmProperty, properties.getMergeSemantic(), properties.getTypeMappings(),
-          properties);
+      return new XmlPropertyConsumer().readProperty(reader, propertyInfo, readProperties);
     } catch (EntityProviderException e) {
       cachedException = e;
       throw cachedException;
@@ -160,6 +163,33 @@ public class XmlEntityConsumer {
     }
   }
 
+
+  public Object readCollection(final EntityPropertyInfo info, InputStream content,
+      final EntityProviderReadProperties properties) throws EntityProviderException {
+    XMLStreamReader reader = null;
+    EntityProviderException cachedException = null;
+    try {
+      reader = XmlHelper.createStreamReader(content);
+      return new XmlPropertyConsumer().readCollection(reader, info, properties);
+    } catch (final EntityProviderException e) {
+      cachedException = e;
+      throw cachedException;
+    } finally {// NOPMD (suppress DoNotThrowExceptionInFinally)
+      if (reader != null) {
+        try {
+          reader.close();
+        } catch (final XMLStreamException e) {
+          if (cachedException != null) {
+            throw cachedException;
+          } else {
+            throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
+                .addContent(e.getClass().getSimpleName()), e);
+          }
+        }
+      }
+    }
+  }
+
   public String readLink(final EdmEntitySet entitySet, final Object content) throws EntityProviderException {
     XMLStreamReader reader = null;
     EntityProviderException cachedException = null;
@@ -213,5 +243,4 @@ public class XmlEntityConsumer {
       }
     }
   }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java
index 4bc9173..a9d8ae1 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlEntryConsumer.java
@@ -588,7 +588,7 @@ public class XmlEntryConsumer {
             throw new EntityProviderException(EntityProviderException.DOUBLE_PROPERTY.addContent(closeTag));
           }
           property = getValidatedPropertyInfo(entitySet, closeTag);
-          final Object value = xpc.readStartedElement(reader, property, typeMappings, readProperties);
+          final Object value = xpc.readStartedElement(reader, closeTag, property, typeMappings, readProperties);
           properties.put(closeTag, value);
           closeTag = null;
         }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumer.java
index 3887333..8a052cb 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumer.java
@@ -18,7 +18,10 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.core.ep.consumer;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.xml.stream.XMLStreamConstants;
@@ -49,26 +52,27 @@ public class XmlPropertyConsumer {
   protected static final String FALSE = "false";
 
   public Map<String, Object> readProperty(final XMLStreamReader reader, final EdmProperty property,
-      final boolean merge, final EntityProviderReadProperties readProperties) throws EntityProviderException {
-    return readProperty(reader, property, merge, null, readProperties);
+      final EntityProviderReadProperties readProperties) throws EntityProviderException {
+    return readProperty(reader, EntityInfoAggregator.create(property), readProperties);
   }
 
-  public Map<String, Object> readProperty(final XMLStreamReader reader, final EdmProperty property,
-      final boolean merge, final Map<String, Object> typeMappings, final EntityProviderReadProperties readProperties)
-      throws EntityProviderException {
-    EntityPropertyInfo eia = EntityInfoAggregator.create(property);
-
+  public Map<String, Object> readProperty(final XMLStreamReader reader, final EntityPropertyInfo propertyInfo,
+      final EntityProviderReadProperties readProperties) throws EntityProviderException {
+    final EntityTypeMapping typeMappings =
+        EntityTypeMapping.create(readProperties == null ? Collections.<String, Object> emptyMap() :
+          readProperties.getTypeMappings());
+    final boolean merge = readProperties != null && readProperties.getMergeSemantic();
     try {
       reader.next();
 
-      Object value = readStartedElement(reader, eia, EntityTypeMapping.create(typeMappings), readProperties);
+      Object value = readStartedElement(reader, propertyInfo.getName(), propertyInfo, typeMappings, readProperties);
 
-      if (eia.isComplex() && merge) {
-        mergeWithDefaultValues(value, eia);
+      if (propertyInfo.isComplex() && merge) {
+        mergeWithDefaultValues(value, propertyInfo);
       }
 
       Map<String, Object> result = new HashMap<String, Object>();
-      result.put(eia.getName(), value);
+      result.put(propertyInfo.getName(), value);
       return result;
     } catch (XMLStreamException e) {
       throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
@@ -110,10 +114,39 @@ public class XmlPropertyConsumer {
     }
   }
 
-  protected Object readStartedElement(final XMLStreamReader reader, final EntityPropertyInfo propertyInfo,
+  public List<?> readCollection(XMLStreamReader reader, final EntityPropertyInfo info,
+      final EntityProviderReadProperties properties) throws EntityProviderException {
+    final String collectionName = info.getName();
+    final EntityTypeMapping typeMappings = EntityTypeMapping.create(
+        properties == null || !properties.getTypeMappings().containsKey(collectionName) ?
+            Collections.<String, Object> emptyMap() :
+            Collections.<String, Object> singletonMap(FormatXml.D_ELEMENT,
+                properties.getTypeMappings().get(collectionName)));
+    List<Object> result = new ArrayList<Object>();
+    try {
+      reader.nextTag();
+      reader.require(XMLStreamConstants.START_ELEMENT, Edm.NAMESPACE_D_2007_08, collectionName);
+      reader.nextTag();
+      while (reader.isStartElement()) {
+        result.add(readStartedElement(reader, FormatXml.D_ELEMENT, info, typeMappings, properties));
+        reader.nextTag();
+      }
+      reader.require(XMLStreamConstants.END_ELEMENT, Edm.NAMESPACE_D_2007_08, collectionName);
+      reader.next();
+      reader.require(XMLStreamConstants.END_DOCUMENT, null, null);
+      return result;
+    } catch (final XMLStreamException e) {
+      throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
+          .addContent(e.getClass().getSimpleName()), e);
+    } catch (final EdmException e) {
+      throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED
+          .addContent(e.getClass().getSimpleName()), e);
+    }
+  }
+
+  protected Object readStartedElement(XMLStreamReader reader, final String name, final EntityPropertyInfo propertyInfo,
       final EntityTypeMapping typeMappings, final EntityProviderReadProperties readProperties)
       throws EntityProviderException, EdmException {
-    final String name = propertyInfo.getName();
     Object result = null;
 
     try {
@@ -149,8 +182,8 @@ public class XmlPropertyConsumer {
           if (childProperty == null) {
             throw new EntityProviderException(EntityProviderException.INVALID_PROPERTY.addContent(childName));
           }
-          final Object value = readStartedElement(reader, childProperty, typeMappings.getEntityTypeMapping(name),
-              readProperties);
+          final Object value = readStartedElement(reader, childName, childProperty,
+              typeMappings.getEntityTypeMapping(name), readProperties);
           name2Value.put(childName, value);
           reader.nextTag();
         }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImplTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImplTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImplTest.java
index e5236d4..40e5e0b 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImplTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/ProviderFacadeImplTest.java
@@ -217,6 +217,16 @@ public class ProviderFacadeImplTest extends AbstractConsumerTest {
   }
 
   @Test
+  public void readFunctionImport() throws Exception {
+    final EdmFunctionImport functionImport = MockFacade.getMockEdm().getDefaultEntityContainer()
+        .getFunctionImport("MaximalAge");
+    InputStream content = new ByteArrayInputStream("{\"d\":{\"MaximalAge\":42}}".getBytes("UTF-8"));
+    final Object result = new ProviderFacadeImpl().readFunctionImport(HttpContentType.APPLICATION_JSON,
+        functionImport, content, EntityProviderReadProperties.init().build());
+    assertEquals((short) 42, result);
+  }
+
+  @Test
   public void readLink() throws Exception {
     final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms");
     InputStream content = new ByteArrayInputStream("{\"d\":{\"uri\":\"http://somelink\"}}".getBytes("UTF-8"));

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonPropertyConsumerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonPropertyConsumerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonPropertyConsumerTest.java
index cc5ec25..36b1cca 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonPropertyConsumerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/JsonPropertyConsumerTest.java
@@ -32,7 +32,9 @@ import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.Calendar;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
@@ -665,10 +667,6 @@ public class JsonPropertyConsumerTest extends BaseTest {
     return resultMap;
   }
 
-  private InputStream createContentAsStream(final String json) throws UnsupportedEncodingException {
-    return new ByteArrayInputStream(json.getBytes("UTF-8"));
-  }
-
   @Test(expected = EntityProviderException.class)
   public void invalidDoubleClosingBrackets() throws Exception {
     String simplePropertyJson = "{\"d\":{\"Name\":\"Team 1\"}}}";
@@ -691,4 +689,118 @@ public class JsonPropertyConsumerTest extends BaseTest {
     new JsonPropertyConsumer().readPropertyStandalone(reader, edmProperty, null);
   }
 
+  @Test
+  public void collectionEmpty() throws Exception {
+    final EntityPropertyInfo info = EntityInfoAggregator.create(
+        MockFacade.getMockEdm().getDefaultEntityContainer().getFunctionImport("AllUsedRoomIds"));
+    List<?> collection = new JsonPropertyConsumer().readCollection(prepareReader("[]"), info, null);
+    assertNotNull(collection);
+    assertTrue(collection.isEmpty());
+
+    collection = new JsonPropertyConsumer().readCollection(prepareReader("{\"d\":[]}"), info, null);
+    assertNotNull(collection);
+    assertTrue(collection.isEmpty());
+
+    collection = new JsonPropertyConsumer().readCollection(prepareReader("{\"results\":[]}"), info, null);
+    assertNotNull(collection);
+    assertTrue(collection.isEmpty());
+
+    collection = new JsonPropertyConsumer().readCollection(prepareReader("{\"d\":{\"results\":[]}}"), info, null);
+    assertNotNull(collection);
+    assertTrue(collection.isEmpty());
+  }
+
+  @Test
+  public void collectionSimple() throws Exception {
+    final EntityPropertyInfo info = EntityInfoAggregator.create(
+        MockFacade.getMockEdm().getDefaultEntityContainer().getFunctionImport("AllUsedRoomIds"));
+    List<?> collection = new JsonPropertyConsumer().readCollection(prepareReader("[\"1\",\"42\"]"), info, null);
+    assertNotNull(collection);
+    assertEquals(Arrays.asList("1", "42"), collection);
+  }
+
+  @Test
+  public void collectionSimpleWithMetadata() throws Exception {
+    final EntityPropertyInfo info = EntityInfoAggregator.create(
+        MockFacade.getMockEdm().getDefaultEntityContainer().getFunctionImport("AllUsedRoomIds"));
+    List<?> collection = new JsonPropertyConsumer().readCollection(prepareReader(
+        "{\"__metadata\":{\"type\":\"Collection(Edm.String)\"},\"results\":[\"1\",\"42\"]}"),
+        info, null);
+    assertNotNull(collection);
+    assertEquals(Arrays.asList("1", "42"), collection);
+  }
+
+  @Test
+  public void collectionSimpleWithMapping() throws Exception {
+    final EntityPropertyInfo info = EntityInfoAggregator.create(
+        MockFacade.getMockEdm().getDefaultEntityContainer().getFunctionImport("AllUsedRoomIds"));
+    EntityProviderReadProperties readProperties = mock(EntityProviderReadProperties.class);
+    when(readProperties.getTypeMappings()).thenReturn(
+        Collections.<String, Object> singletonMap("AllUsedRoomIds", String.class));
+    List<?> collection = new JsonPropertyConsumer().readCollection(prepareReader("[\"1\",\"42\"]"), info,
+        readProperties);
+    assertNotNull(collection);
+    assertEquals(Arrays.asList("1", "42"), collection);
+  }
+
+  @Test
+  public void collectionComplex() throws Exception {
+    final EntityPropertyInfo info = EntityInfoAggregator.create(
+        MockFacade.getMockEdm().getDefaultEntityContainer().getFunctionImport("AllLocations"));
+    EntityProviderReadProperties readProperties = mock(EntityProviderReadProperties.class);
+    final Map<String, Object> mappings = Collections.<String, Object> singletonMap("Location",
+        Collections.<String, Object> singletonMap("City",
+            Collections.<String, Object> singletonMap("PostalCode", String.class)));
+    when(readProperties.getTypeMappings()).thenReturn(mappings);
+    List<?> collection = new JsonPropertyConsumer().readCollection(prepareReader(
+        "{\"__metadata\":{\"type\":\"Collection(RefScenario.c_Location)\"},"
+            + "\"results\":["
+            + "{\"City\":{\"PostalCode\":\"69124\",\"CityName\":\"Heidelberg\"},\"Country\":\"Germany\"},"
+            + "{\"City\":{\"PostalCode\":\"69190\",\"CityName\":\"Walldorf\"},\"Country\":\"Germany\"}]}"),
+        info, readProperties);
+    assertNotNull(collection);
+    assertEquals(2, collection.size());
+    @SuppressWarnings("unchecked")
+    final Map<String, Object> secondLocation = (Map<String, Object>) collection.get(1);
+    assertEquals("Germany", secondLocation.get("Country"));
+  }
+
+  @Test(expected = EntityProviderException.class)
+  public void collectionUnfinished() throws Exception {
+    final EntityPropertyInfo info = EntityInfoAggregator.create(
+        MockFacade.getMockEdm().getDefaultEntityContainer().getFunctionImport("AllUsedRoomIds"));
+    new JsonPropertyConsumer().readCollection(prepareReader("[\"1\""), info, null);
+  }
+
+  @Test(expected = EntityProviderException.class)
+  public void collectionWithoutClosing() throws Exception {
+    final EntityPropertyInfo info = EntityInfoAggregator.create(
+        MockFacade.getMockEdm().getDefaultEntityContainer().getFunctionImport("AllUsedRoomIds"));
+    new JsonPropertyConsumer().readCollection(prepareReader("{\"results\":[]"), info, null);
+  }
+
+  @Test(expected = EntityProviderException.class)
+  public void collectionWithWrongTag() throws Exception {
+    final EntityPropertyInfo info = EntityInfoAggregator.create(
+        MockFacade.getMockEdm().getDefaultEntityContainer().getFunctionImport("AllUsedRoomIds"));
+    new JsonPropertyConsumer().readCollection(prepareReader("{\"something\":[]}"), info, null);
+  }
+
+  @Test(expected = EntityProviderException.class)
+  public void collectionWithWrongInnerTag() throws Exception {
+    final EntityPropertyInfo info = EntityInfoAggregator.create(
+        MockFacade.getMockEdm().getDefaultEntityContainer().getFunctionImport("AllUsedRoomIds"));
+    new JsonPropertyConsumer().readCollection(prepareReader("{\"d\":{\"something\":[]}}"), info, null);
+  }
+
+  @Test(expected = EntityProviderException.class)
+  public void collectionWithTrailing() throws Exception {
+    final EntityPropertyInfo info = EntityInfoAggregator.create(
+        MockFacade.getMockEdm().getDefaultEntityContainer().getFunctionImport("AllUsedRoomIds"));
+    new JsonPropertyConsumer().readCollection(prepareReader("{\"results\":[],\"a\":0}"), info, null);
+  }
+
+  private InputStream createContentAsStream(final String json) throws UnsupportedEncodingException {
+    return new ByteArrayInputStream(json.getBytes("UTF-8"));
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumerTest.java
index c33b4ea..1b3bc8c 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlPropertyConsumerTest.java
@@ -26,8 +26,11 @@ import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.util.Arrays;
 import java.util.Calendar;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.xml.stream.XMLStreamReader;
@@ -40,6 +43,7 @@ import org.apache.olingo.odata2.api.edm.EdmSimpleTypeException;
 import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
 import org.apache.olingo.odata2.api.ep.EntityProviderException;
 import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
+import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
 import org.apache.olingo.odata2.testutil.mock.MockFacade;
 import org.junit.Test;
 
@@ -59,7 +63,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Age");
 
-    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, null);
 
     assertEquals(Integer.valueOf(67), resultMap.get("Age"));
   }
@@ -71,9 +75,9 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Age");
 
-    Map<String, Object> typeMappings = createTypeMappings("Age", Long.class);
-    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, typeMappings,
-        null);
+    EntityProviderReadProperties readProperties = mock(EntityProviderReadProperties.class);
+    when(readProperties.getTypeMappings()).thenReturn(createTypeMappings("Age", Long.class));
+    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, readProperties);
 
     assertEquals(Long.valueOf(67), resultMap.get("Age"));
   }
@@ -85,9 +89,9 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Age");
 
-    Map<String, Object> typeMappings = null;
-    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, typeMappings,
-        null);
+    EntityProviderReadProperties readProperties = mock(EntityProviderReadProperties.class);
+    when(readProperties.getTypeMappings()).thenReturn(null);
+    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, readProperties);
 
     assertEquals(Integer.valueOf(67), resultMap.get("Age"));
   }
@@ -99,9 +103,9 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Age");
 
-    Map<String, Object> typeMappings = new HashMap<String, Object>();
-    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, typeMappings,
-        null);
+    EntityProviderReadProperties readProperties = mock(EntityProviderReadProperties.class);
+    when(readProperties.getTypeMappings()).thenReturn(new HashMap<String, Object>());
+    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, readProperties);
 
     assertEquals(Integer.valueOf(67), resultMap.get("Age"));
   }
@@ -113,7 +117,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("EmployeeName");
 
-    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, null);
 
     assertEquals("Max Mustermann", resultMap.get("EmployeeName"));
   }
@@ -125,7 +129,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("EmployeeName");
 
-    final Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    final Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, null);
 
     assertTrue(resultMap.containsKey("EmployeeName"));
     assertEquals("", resultMap.get("EmployeeName"));
@@ -139,7 +143,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("EntryDate");
 
-    final Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    final Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, null);
 
     assertTrue(resultMap.containsKey("EntryDate"));
     assertNull(resultMap.get("EntryDate"));
@@ -153,7 +157,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("EntryDate");
 
-    final Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    final Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, null);
 
     assertEquals(86400000L, ((Calendar) resultMap.get("EntryDate")).getTimeInMillis());
   }
@@ -165,7 +169,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Age");
 
-    new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    new XmlPropertyConsumer().readProperty(reader, property, null);
   }
 
   @Test(expected = EntityProviderException.class)
@@ -176,7 +180,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Age");
 
-    new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    new XmlPropertyConsumer().readProperty(reader, property, null);
   }
 
   @Test(expected = EntityProviderException.class)
@@ -190,7 +194,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     when(facets.isNullable()).thenReturn(false);
     when(property.getFacets()).thenReturn(facets);
 
-    new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    new XmlPropertyConsumer().readProperty(reader, property, null);
   }
 
   @Test(expected = EntityProviderException.class)
@@ -202,7 +206,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     when(facets.getMaxLength()).thenReturn(10);
     when(property.getFacets()).thenReturn(facets);
 
-    new XmlPropertyConsumer().readProperty(createReaderForTest(xml, true), property, false, null);
+    new XmlPropertyConsumer().readProperty(createReaderForTest(xml, true), property, null);
   }
 
   @Test
@@ -216,7 +220,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EntityProviderReadProperties readProperties = mock(EntityProviderReadProperties.class);
 
     final Map<String, Object> resultMap = new XmlPropertyConsumer()
-        .readProperty(createReaderForTest(xml, true), property, false, readProperties);
+        .readProperty(createReaderForTest(xml, true), property, readProperties);
     assertTrue(resultMap.containsKey("Name"));
     assertEquals("TooLongName", resultMap.get("Name"));
   }
@@ -237,7 +241,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, null);
 
     Map<String, Object> locationMap = (Map<String, Object>) resultMap.get("Location");
     assertEquals("Germany", locationMap.get("Country"));
@@ -265,7 +269,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, null);
 
     Map<String, Object> locationMap = (Map<String, Object>) resultMap.get("Location");
     assertEquals("Germany", locationMap.get("Country"));
@@ -289,10 +293,13 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
+    EntityProviderReadProperties readProperties = mock(EntityProviderReadProperties.class);
+    when(readProperties.getTypeMappings()).thenReturn(
+        createTypeMappings("Location",
+            createTypeMappings("City",
+                createTypeMappings("PostalCode", Integer.class))));
     try {
-      Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false,
-          createTypeMappings("Location", createTypeMappings("City", createTypeMappings("PostalCode", Integer.class))),
-          null);
+      Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, readProperties);
       assertNotNull(resultMap);
     } catch (EntityProviderException e) {
       assertTrue(e.getCause() instanceof EdmSimpleTypeException);
@@ -322,12 +329,13 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     when(postalCodeProperty.getType()).thenReturn(EdmSimpleTypeKind.Int32.getEdmSimpleTypeInstance());
 
     // Execute test
-    Map<String, Object> typeMappings =
+    EntityProviderReadProperties readProperties = mock(EntityProviderReadProperties.class);
+    when(readProperties.getTypeMappings()).thenReturn(
         createTypeMappings("Location",
             createTypeMappings("City",
-                createTypeMappings("CityName", String.class, "PostalCode", Long.class)));
+                createTypeMappings("CityName", String.class, "PostalCode", Long.class))));
     Map<String, Object> resultMap =
-        new XmlPropertyConsumer().readProperty(reader, locationComplexProperty, false, typeMappings, null);
+        new XmlPropertyConsumer().readProperty(reader, locationComplexProperty, readProperties);
 
     // verify
     Map<String, Object> locationMap = (Map<String, Object>) resultMap.get("Location");
@@ -354,7 +362,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    Object prop = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    Object prop = new XmlPropertyConsumer().readProperty(reader, property, null);
     Map<String, Object> resultMap = (Map<String, Object>) prop;
 
     Map<String, Object> locationMap = (Map<String, Object>) resultMap.get("Location");
@@ -379,7 +387,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    new XmlPropertyConsumer().readProperty(reader, property, null);
   }
 
   @Test(expected = EntityProviderException.class)
@@ -397,7 +405,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    new XmlPropertyConsumer().readProperty(reader, property, null);
   }
 
   @Test(expected = EntityProviderException.class)
@@ -415,7 +423,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    new XmlPropertyConsumer().readProperty(reader, property, null);
   }
 
   @Test(expected = EntityProviderException.class)
@@ -433,7 +441,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    new XmlPropertyConsumer().readProperty(reader, property, null);
   }
 
   @Test
@@ -452,7 +460,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, null);
 
     Map<String, Object> locationMap = (Map<String, Object>) resultMap.get("Location");
     assertEquals("Germany", locationMap.get("Country"));
@@ -469,7 +477,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    final Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    final Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, null);
 
     assertTrue(resultMap.containsKey("Location"));
     assertNull(resultMap.get("Location"));
@@ -486,7 +494,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     when(facets.isNullable()).thenReturn(false);
     when(property.getFacets()).thenReturn(facets);
 
-    new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    new XmlPropertyConsumer().readProperty(reader, property, null);
   }
 
   @Test
@@ -501,7 +509,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EntityProviderReadProperties readProperties = mock(EntityProviderReadProperties.class);
 
     final Map<String, Object> resultMap = new XmlPropertyConsumer()
-        .readProperty(createReaderForTest(xml, true), property, false, readProperties);
+        .readProperty(createReaderForTest(xml, true), property, readProperties);
     assertFalse(resultMap.isEmpty());
     assertNull(resultMap.get("Location"));
   }
@@ -516,7 +524,7 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    new XmlPropertyConsumer().readProperty(reader, property, null);
   }
 
   @Test
@@ -526,11 +534,80 @@ public class XmlPropertyConsumerTest extends AbstractXmlConsumerTest {
     final EdmProperty property =
         (EdmProperty) MockFacade.getMockEdm().getEntityType("RefScenario", "Employee").getProperty("Location");
 
-    final Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, false, null);
+    final Map<String, Object> resultMap = new XmlPropertyConsumer().readProperty(reader, property, null);
 
     assertNotNull(resultMap.get("Location"));
     @SuppressWarnings("unchecked")
     final Map<String, Object> innerMap = (Map<String, Object>) resultMap.get("Location");
     assertTrue(innerMap.isEmpty());
   }
+
+  @Test
+  public void collectionSimpleType() throws Exception {
+    final String xml = "<AllUsedRoomIds xmlns=\"" + Edm.NAMESPACE_D_2007_08 + "\">"
+        + "<element>1</element>"
+        + "<element m:null=\"true\" xmlns:m=\"" + Edm.NAMESPACE_M_2007_08 + "\" />"
+        + "<element></element>"
+        + "</AllUsedRoomIds>";
+    @SuppressWarnings("unchecked")
+    final List<String> result = (List<String>) new XmlPropertyConsumer().readCollection(createReaderForTest(xml, true),
+        EntityInfoAggregator.create(MockFacade.getMockEdm().getDefaultEntityContainer()
+            .getFunctionImport("AllUsedRoomIds")),
+        EntityProviderReadProperties.init().build());
+    assertNotNull(result);
+    assertEquals(Arrays.asList("1", null, ""), result);
+  }
+
+  @Test(expected = EntityProviderException.class)
+  public void collectionSimpleTypeWrong() throws Exception {
+    final String xml = "<AllUsedRoomIds xmlns=\"" + Edm.NAMESPACE_D_2007_08 + "\">"
+        + "<m:element xmlns:m=\"" + Edm.NAMESPACE_M_2007_08 + "\" />"
+        + "</AllUsedRoomIds>";
+    new XmlPropertyConsumer().readCollection(createReaderForTest(xml, true),
+        EntityInfoAggregator.create(MockFacade.getMockEdm().getDefaultEntityContainer()
+            .getFunctionImport("AllUsedRoomIds")), null);
+  }
+
+  @Test(expected = EntityProviderException.class)
+  public void collectionSimpleTypeWrongMapping() throws Exception {
+    final String xml = "<AllUsedRoomIds xmlns=\"" + Edm.NAMESPACE_D_2007_08 + "\">"
+        + "<element>1</element></AllUsedRoomIds>";
+    new XmlPropertyConsumer().readCollection(createReaderForTest(xml, true),
+        EntityInfoAggregator.create(MockFacade.getMockEdm().getDefaultEntityContainer()
+            .getFunctionImport("AllUsedRoomIds")),
+        EntityProviderReadProperties.init().addTypeMappings(
+            Collections.<String, Object> singletonMap("AllUsedRoomIds", Integer.class)).build());
+  }
+
+  @Test(expected = EntityProviderException.class)
+  public void collectionSimpleTypeWrongXml() throws Exception {
+    final String xml = "<AllUsedRoomIds xmlns=\"" + Edm.NAMESPACE_D_2007_08 + "\"><element>1</element>";
+    new XmlPropertyConsumer().readCollection(createReaderForTest(xml, true),
+        EntityInfoAggregator.create(MockFacade.getMockEdm().getDefaultEntityContainer()
+            .getFunctionImport("AllUsedRoomIds")), null);
+  }
+
+  @Test
+  public void collectionComplexType() throws Exception {
+    final String xml = "<d:AllLocations xmlns:d=\"" + Edm.NAMESPACE_D_2007_08 + "\">"
+        + "<d:element><d:City><d:PostalCode>69124</d:PostalCode><d:CityName>Heidelberg</d:CityName></d:City>"
+        + "<d:Country>Germany</d:Country></d:element>"
+        + "<d:element m:type=\"RefScenario.c_Location\" xmlns:m=\"" + Edm.NAMESPACE_M_2007_08 + "\">"
+        + "<d:City m:type=\"RefScenario.c_City\"><d:PostalCode>69190</d:PostalCode><d:CityName>Walldorf</d:CityName>"
+        + "</d:City><d:Country>Germany</d:Country></d:element>"
+        + "</d:AllLocations>";
+    @SuppressWarnings("unchecked")
+    final List<?> result = (List<String>) new XmlPropertyConsumer().readCollection(createReaderForTest(xml, true),
+        EntityInfoAggregator.create(MockFacade.getMockEdm().getDefaultEntityContainer()
+            .getFunctionImport("AllLocations")),
+        EntityProviderReadProperties.init().build());
+    assertNotNull(result);
+    assertEquals(2, result.size());
+    @SuppressWarnings("unchecked")
+    final Map<String, Object> secondLocation = (Map<String, Object>) result.get(1);
+    assertEquals("Germany", secondLocation.get("Country"));
+    @SuppressWarnings("unchecked")
+    final Map<String, Object> secondCity = (Map<String, Object>) secondLocation.get("City");
+    assertEquals("Walldorf", secondCity.get("CityName"));
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
index ef73dc8..229edeb 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/uri/expression/TestParser.java
@@ -44,7 +44,6 @@ import org.apache.olingo.odata2.core.edm.EdmGuid;
 import org.apache.olingo.odata2.core.edm.EdmInt16;
 import org.apache.olingo.odata2.core.edm.EdmInt32;
 import org.apache.olingo.odata2.core.edm.EdmInt64;
-import org.apache.olingo.odata2.core.edm.EdmNull;
 import org.apache.olingo.odata2.core.edm.EdmSByte;
 import org.apache.olingo.odata2.core.edm.EdmSingle;
 import org.apache.olingo.odata2.core.edm.EdmString;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/FunctionImportJsonTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/FunctionImportJsonTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/FunctionImportJsonTest.java
index 937f64f..b17663e 100644
--- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/FunctionImportJsonTest.java
+++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/FunctionImportJsonTest.java
@@ -19,11 +19,22 @@
 package org.apache.olingo.odata2.fit.ref;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.http.HttpResponse;
 import org.apache.olingo.odata2.api.commons.HttpContentType;
 import org.apache.olingo.odata2.api.commons.HttpHeaders;
+import org.apache.olingo.odata2.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata2.api.ep.EntityProvider;
+import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
+import org.apache.olingo.odata2.api.ep.entry.ODataEntry;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
 import org.apache.olingo.odata2.testutil.server.ServletType;
 import org.junit.Test;
 
@@ -37,15 +48,27 @@ public class FunctionImportJsonTest extends AbstractRefTest {
     super(servletType);
   }
 
+  private EdmEntityContainer getEntityContainer() throws Exception {
+    final HttpResponse response = callUri("$metadata"); 
+    final EdmEntityContainer entityContainer = EntityProvider.readMetadata(response.getEntity().getContent(), false)
+        .getDefaultEntityContainer();
+    getBody(response);
+    return entityContainer;
+  }
+
   @Test
-  public void functionImports() throws Exception {
-    HttpResponse response = callUri("EmployeeSearch?q='nat'&$format=json");
+  public void entityCollection() throws Exception {
+    final HttpResponse response = callUri("EmployeeSearch?q='nat'&$format=json");
     checkMediaType(response, HttpContentType.APPLICATION_JSON);
     final String body = getBody(response);
     assertEquals(getBody(callUri("Employees?$filter=substringof('nat',EmployeeName)&$format=json")), body);
+  }
 
-    response = callUri("AllLocations?$format=json");
+  @Test
+  public void complexTypeCollection() throws Exception {
+    final HttpResponse response = callUri("AllLocations?$format=json");
     checkMediaType(response, HttpContentType.APPLICATION_JSON);
+    final String body = getBody(response);
     assertEquals("{\"d\":{\"__metadata\":{\"type\":\"Collection(RefScenario.c_Location)\"},"
         + "\"results\":[{\"__metadata\":{\"type\":\"RefScenario.c_Location\"},"
         + "\"City\":{\"__metadata\":{\"type\":\"RefScenario.c_City\"},"
@@ -53,34 +76,91 @@ public class FunctionImportJsonTest extends AbstractRefTest {
         + "{\"__metadata\":{\"type\":\"RefScenario.c_Location\"},"
         + "\"City\":{\"__metadata\":{\"type\":\"RefScenario.c_City\"},"
         + "\"PostalCode\":\"69190\",\"CityName\":\"Walldorf\"},\"Country\":\"Germany\"}]}}",
-        getBody(response));
+        body);
+    final Object result = EntityProvider.readFunctionImport(HttpContentType.APPLICATION_JSON,
+        getEntityContainer().getFunctionImport("AllLocations"), StringHelper.encapsulate(body),
+        EntityProviderReadProperties.init().build());
+    assertNotNull(result);
+    final List<?> collection = (List<?>) result;
+    @SuppressWarnings("unchecked")
+    final Map<String, Object> secondLocation = (Map<String, Object>) collection.get(1);
+    @SuppressWarnings("unchecked")
+    final Map<String, Object> secondCity = (Map<String, Object>) secondLocation.get("City");
+    assertEquals(CITY_2_NAME, secondCity.get("CityName"));
+  }
 
-    response = callUri("AllUsedRoomIds?$format=json");
+  @Test
+  public void simpleTypeCollection() throws Exception {
+    final HttpResponse response = callUri("AllUsedRoomIds?$format=json");
     checkMediaType(response, HttpContentType.APPLICATION_JSON);
+    final String body = getBody(response);
     assertEquals("{\"d\":{\"__metadata\":{\"type\":\"Collection(Edm.String)\"},"
         + "\"results\":[\"1\",\"2\",\"3\"]}}",
-        getBody(response));
+        body);
+    final Object result = EntityProvider.readFunctionImport(HttpContentType.APPLICATION_JSON,
+        getEntityContainer().getFunctionImport("AllUsedRoomIds"), StringHelper.encapsulate(body),
+        EntityProviderReadProperties.init().build());
+    assertNotNull(result);
+    assertEquals(Arrays.asList("1", "2", "3"), result);
+  }
 
-    response = callUri("MaximalAge?$format=json");
+  @Test
+  public void simpleType() throws Exception {
+    final HttpResponse response = callUri("MaximalAge?$format=json");
     checkMediaType(response, HttpContentType.APPLICATION_JSON);
-    assertEquals("{\"d\":{\"MaximalAge\":56}}", getBody(response));
+    final String body = getBody(response);
+    assertEquals("{\"d\":{\"MaximalAge\":56}}", body);
+    final Object result = EntityProvider.readFunctionImport(HttpContentType.APPLICATION_JSON,
+        getEntityContainer().getFunctionImport("MaximalAge"), StringHelper.encapsulate(body),
+        EntityProviderReadProperties.init().build());
+    assertNotNull(result);
+    assertEquals(Short.valueOf(EMPLOYEE_3_AGE), result);
+  }
 
-    response = callUri("MostCommonLocation?$format=json");
+  @SuppressWarnings("unchecked")
+  @Test
+  public void complexType() throws Exception {
+    final HttpResponse response = callUri("MostCommonLocation?$format=json");
     checkMediaType(response, HttpContentType.APPLICATION_JSON);
+    final String body = getBody(response);
     assertEquals("{\"d\":{\"MostCommonLocation\":"
         + "{\"__metadata\":{\"type\":\"RefScenario.c_Location\"},"
         + "\"City\":{\"__metadata\":{\"type\":\"RefScenario.c_City\"},"
         + "\"PostalCode\":\"69190\",\"CityName\":\"" + CITY_2_NAME + "\"},"
         + "\"Country\":\"Germany\"}}}",
-        getBody(response));
+        body);
+    final Object result = EntityProvider.readFunctionImport(HttpContentType.APPLICATION_JSON,
+        getEntityContainer().getFunctionImport("MostCommonLocation"), StringHelper.encapsulate(body),
+        EntityProviderReadProperties.init().build());
+    assertNotNull(result);
+    Map<String, Object> resultMap = (Map<String, Object>) result;
+    assertNotNull(resultMap);
+    assertFalse(resultMap.isEmpty());
+    resultMap = (Map<String, Object>) resultMap.get("City");
+    assertNotNull(resultMap);
+    assertFalse(resultMap.isEmpty());
+    assertEquals(CITY_2_NAME, resultMap.get("CityName"));
+  }
 
-    response = callUri("ManagerPhoto?Id='1'&$format=json");
+  @Test
+  public void binary() throws Exception {
+    final HttpResponse response = callUri("ManagerPhoto?Id='1'&$format=json");
     checkMediaType(response, HttpContentType.APPLICATION_JSON);
     assertTrue(getBody(response).startsWith("{\"d\":{\"ManagerPhoto\":\"iVBORw0KGgoAAAAN"));
+  }
 
+  @Test
+  public void entity() throws Exception {
     final String expected = getBody(callUri("Employees('3')?$format=json"));
-    response = callUri("OldestEmployee", HttpHeaders.ACCEPT, HttpContentType.APPLICATION_JSON);
+    final HttpResponse response = callUri("OldestEmployee", HttpHeaders.ACCEPT, HttpContentType.APPLICATION_JSON);
     checkMediaType(response, HttpContentType.APPLICATION_JSON);
-    assertEquals(expected, getBody(response));
+    final String body = getBody(response);
+    assertEquals(expected, body);
+    final Object result = EntityProvider.readFunctionImport(HttpContentType.APPLICATION_JSON,
+        getEntityContainer().getFunctionImport("OldestEmployee"), StringHelper.encapsulate(body),
+        EntityProviderReadProperties.init().build());
+    assertNotNull(result);
+    final ODataEntry entry = (ODataEntry) result;
+    assertEquals("3", entry.getProperties().get("EmployeeId"));
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/6fd6f064/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/FunctionImportXmlTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/FunctionImportXmlTest.java b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/FunctionImportXmlTest.java
index bdf62e5..fdf43e5 100644
--- a/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/FunctionImportXmlTest.java
+++ b/odata2-lib/odata-fit/src/test/java/org/apache/olingo/odata2/fit/ref/FunctionImportXmlTest.java
@@ -25,12 +25,21 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
 import junit.framework.Assert;
 
 import org.apache.http.HttpResponse;
 import org.apache.olingo.odata2.api.commons.HttpContentType;
 import org.apache.olingo.odata2.api.commons.HttpHeaders;
+import org.apache.olingo.odata2.api.edm.EdmEntityContainer;
+import org.apache.olingo.odata2.api.ep.EntityProvider;
+import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
 import org.apache.olingo.odata2.core.commons.ContentType;
+import org.apache.olingo.odata2.testutil.helper.StringHelper;
 import org.apache.olingo.odata2.testutil.server.ServletType;
 import org.junit.Test;
 
@@ -55,11 +64,32 @@ public class FunctionImportXmlTest extends AbstractRefXmlTest {
 
     response = callUri("AllLocations", HttpHeaders.ACCEPT, HttpContentType.APPLICATION_XML);
     checkMediaType(response, HttpContentType.APPLICATION_XML_UTF8);
-    assertXpathExists("/d:AllLocations/d:element/d:City[d:CityName=\"" + CITY_2_NAME + "\"]", getBody(response));
+    String body = getBody(response);
+    assertXpathExists("/d:AllLocations/d:element/d:City[d:CityName=\"" + CITY_2_NAME + "\"]", body);
+    final HttpResponse metadataResponse = callUri("$metadata"); 
+    final EdmEntityContainer entityContainer = EntityProvider.readMetadata(metadataResponse.getEntity().getContent(),
+        false).getDefaultEntityContainer();
+    getBody(metadataResponse);
+    Object result = EntityProvider.readFunctionImport(HttpContentType.APPLICATION_XML,
+        entityContainer.getFunctionImport("AllLocations"), StringHelper.encapsulate(body),
+        EntityProviderReadProperties.init().build());
+    assertNotNull(result);
+    final List<?> collection = (List<?>) result;
+    @SuppressWarnings("unchecked")
+    final Map<String, Object> secondLocation = (Map<String, Object>) collection.get(1);
+    @SuppressWarnings("unchecked")
+    final Map<String, Object> secondCity = (Map<String, Object>) secondLocation.get("City");
+    assertEquals(CITY_2_NAME, secondCity.get("CityName"));
 
     response = callUri("AllUsedRoomIds", HttpHeaders.ACCEPT, HttpContentType.APPLICATION_XML);
     checkMediaType(response, HttpContentType.APPLICATION_XML_UTF8);
-    assertXpathExists("/d:AllUsedRoomIds[d:element=\"3\"]", getBody(response));
+    body = getBody(response);
+    assertXpathExists("/d:AllUsedRoomIds[d:element=\"3\"]", body);
+    result = EntityProvider.readFunctionImport(HttpContentType.APPLICATION_XML,
+        entityContainer.getFunctionImport("AllUsedRoomIds"), StringHelper.encapsulate(body),
+        EntityProviderReadProperties.init().build());
+    assertNotNull(result);
+    assertEquals(Arrays.asList("1", "2", "3"), result);
 
     response = callUri("MaximalAge", HttpHeaders.ACCEPT, HttpContentType.APPLICATION_XML);
     checkMediaType(response, HttpContentType.APPLICATION_XML_UTF8);


[36/50] [abbrv] git commit: [OLINGO-379] Assert that unit test issue lies within file and not implementation

Posted by mi...@apache.org.
[OLINGO-379] Assert that unit test issue lies within file and not
implementation


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/3c6d937d
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/3c6d937d
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/3c6d937d

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 3c6d937decf632039c14fc6e08b9e59c331edbb4
Parents: f1b9134
Author: Christian Amend <ch...@apache.org>
Authored: Fri Jul 25 17:11:00 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Fri Jul 25 17:11:00 2014 +0200

----------------------------------------------------------------------
 .../odata2/core/batch/BatchResponseParser.java  | 29 ++------------------
 .../core/batch/BatchResponseParserTest.java     | 21 ++++++++++++--
 2 files changed, 21 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3c6d937d/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
index e44e2e6..239311b 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
@@ -201,9 +201,9 @@ public class BatchResponseParser {
       parseNewLine(scanner);
       String body = parseBody(scanner);
       String contentLengthHeader = getHeaderValue(headers, HttpHeaders.CONTENT_LENGTH);
-      if(contentLengthHeader != null){
+      if (contentLengthHeader != null) {
         int contentLength = Integer.parseInt(contentLengthHeader);
-        if(contentLength < body.length()){
+        if (contentLength < body.length()) {
           body = body.substring(0, contentLength);
         }
       }
@@ -295,31 +295,6 @@ public class BatchResponseParser {
     return responseBody;
   }
 
-  private String parseBody(final Scanner scanner, final int contentLength) {
-    StringBuilder body = null;
-    int length = 0;
-    while (scanner.hasNext() && length < contentLength) {
-      if (!scanner.hasNext(REG_EX_ZERO_OR_MORE_WHITESPACES)) {
-        String nextLine = scanner.next();
-        length += BatchHelper.getBytes(nextLine).length;
-        if (body == null) {
-          body = new StringBuilder(nextLine);
-        } else {
-          body.append(CRLF).append(nextLine);
-        }
-      } else {
-        scanner.next();
-      }
-      currentLineNumber++;
-      if (scanner.hasNext() && scanner.hasNext(REG_EX_BLANK_LINE)) {
-        scanner.next();
-        currentLineNumber++;
-      }
-    }
-    String responseBody = body != null ? body.toString() : null;
-    return responseBody;
-  }
-
   private String getBoundary(final String contentType) throws BatchException {
     Scanner contentTypeScanner = new Scanner(contentType);
     contentTypeScanner.useDelimiter(";\\s?");

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/3c6d937d/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
index 87d8cac..23e4cf3 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata2.core.batch;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -285,9 +286,11 @@ public class BatchResponseParserTest {
 
   @Test
   public void parseWithAdditionalLineEndingAtTheEnd() throws Exception {
-    InputStream stream = getFileAsStream("BatchResponseWithAdditionalLineEnding.batch");
+    String fileString = readFile("BatchResponseWithAdditionalLineEnding.batch");
+    assertTrue(fileString.contains("\r\n--batch_123--"));
+    InputStream stream =new ByteArrayInputStream(fileString.getBytes());
     BatchSingleResponse response =
-        EntityProvider.parseBatchResponse(stream, "multipart/mixed;boundary=batch_123").get(0);
+        EntityProvider.parseBatchResponse(stream , "multipart/mixed;boundary=batch_123").get(0);
     assertEquals("This is the body we need to parse. The trailing line ending is part of the body." + CRLF, response
         .getBody());
 
@@ -330,6 +333,20 @@ public class BatchResponseParserTest {
     assertEquals(body, response.getBody());
   }
 
+  protected String readFile(final String filename) throws IOException {
+    InputStream in = getFileAsStream(filename);
+
+    byte[] tmp = new byte[8192];
+    int count = in.read(tmp);
+    StringBuilder b = new StringBuilder();
+    while (count >= 0) {
+      b.append(new String(tmp, 0, count));
+      count = in.read(tmp);
+    }
+
+    return b.toString();
+  }
+  
   private InputStream getFileAsStream(final String filename) throws IOException {
     InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);
     if (in == null) {


[48/50] [abbrv] git commit: [OLINGO-409] Fix NPE in $expand call

Posted by mi...@apache.org.
[OLINGO-409] Fix NPE in $expand call

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/78f31a8e
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/78f31a8e
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/78f31a8e

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 78f31a8e6cf5cb1db1600ad400d4259ea0f0cb8a
Parents: 7092ad3
Author: Chandan V A <ch...@sap.com>
Authored: Sun Aug 31 08:44:47 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sun Aug 31 08:44:47 2014 +0530

----------------------------------------------------------------------
 .../odata2/jpa/processor/core/access/data/JPAEntityParser.java  | 3 +++
 .../odata2/jpa/processor/core/access/data/JPAProcessorImpl.java | 5 +++--
 .../odata2/jpa/processor/core/callback/JPAExpandCallBack.java   | 4 +++-
 3 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/78f31a8e/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
index 9543bfe..318d05e 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAEntityParser.java
@@ -163,6 +163,9 @@ public final class JPAEntityParser {
     Object result = null;
     String methodName = null;
     HashMap<String, Object> navigationMap = new HashMap<String, Object>();
+    if (jpaEntity == null) {
+      return navigationMap;
+    }
     if (navigationPropertyList != null
         && navigationPropertyList.size() != 0) {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/78f31a8e/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
index e7f041b..8c497d3 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
@@ -131,8 +131,9 @@ public class JPAProcessorImpl implements JPAProcessor {
       return (List<Object>) process((GetFunctionImportUriInfo) uriParserResultView);
     }
     InlineCount inlineCount = uriParserResultView.getInlineCount();
-    Integer top = uriParserResultView.getTop();
-    if (top != null && top.intValue() == 0 && inlineCount != null && inlineCount.equals(InlineCount.ALLPAGES)) {
+    Integer top = uriParserResultView.getTop() == null ? 1 : uriParserResultView.getTop().intValue();
+    boolean hasNoAllPages = inlineCount == null ? true : !inlineCount.equals(InlineCount.ALLPAGES);
+    if (top.intValue() == 0 && hasNoAllPages) {
       return new ArrayList<Object>();
     }
     JPQLContextType contextType = null;

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/78f31a8e/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/callback/JPAExpandCallBack.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/callback/JPAExpandCallBack.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/callback/JPAExpandCallBack.java
index 19bcf77..41cad61 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/callback/JPAExpandCallBack.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/callback/JPAExpandCallBack.java
@@ -87,7 +87,9 @@ public class JPAExpandCallBack implements OnWriteFeedContent, OnWriteEntryConten
         }
         HashMap<String, Object> navigationMap =
             jpaResultParser.parse2EdmNavigationValueMap(inlinedEntry, currentNavPropertyList);
-        edmPropertyValueMap.putAll(navigationMap);
+        if (edmPropertyValueMap != null) {
+          edmPropertyValueMap.putAll(navigationMap);
+        }
         result.setEntryData(edmPropertyValueMap);
       }
       result.setInlineProperties(getInlineEntityProviderProperties(context));


[08/50] [abbrv] git commit: [OLINGO-312] Support for passing Mapping Model as a Input Stream. Implement the method getJPAEdmMappingModelStream method of JPAEdmExtension interface to return a Stream of Mapping Model. The mapping model stream should be a X

Posted by mi...@apache.org.
[OLINGO-312] Support for passing Mapping Model as a Input Stream.
Implement the method getJPAEdmMappingModelStream method of
JPAEdmExtension interface to return a Stream of Mapping Model. The
mapping model stream should be a XML document adhering to
JPAEDMMappingModel.xsd


Signed-off-by: Chandan V A <ch...@sap.com>

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/41d99109
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/41d99109
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/41d99109

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 41d99109b00f03da69072c4cab542db4cea1df1c
Parents: 55dfc12
Author: Chandan V A <ch...@sap.com>
Authored: Sun Jun 15 13:14:15 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sun Jun 15 13:14:15 2014 +0530

----------------------------------------------------------------------
 .../odata2/jpa/processor/api/model/JPAEdmExtension.java  |  9 +++++++++
 .../core/access/model/JPAEdmMappingModelService.java     | 11 ++++++-----
 2 files changed, 15 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/41d99109/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmExtension.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmExtension.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmExtension.java
index 18f43a0..c8c0f8f 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmExtension.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmExtension.java
@@ -18,6 +18,8 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.jpa.processor.api.model;
 
+import java.io.InputStream;
+
 /**
  * The interface provides methods to extend JPA EDM containers.
  * 
@@ -47,4 +49,11 @@ public interface JPAEdmExtension {
    */
   public void extendJPAEdmSchema(JPAEdmSchemaView view);
 
+  /**
+   * Implement this method to provide a stream of Mapping model.
+   * @return
+   * a stream of mapping model XML as per JPAEDMMappingModel.xsd
+   */
+  public InputStream getJPAEdmMappingModelStream();
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/41d99109/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmMappingModelService.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmMappingModelService.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmMappingModelService.java
index dd453ac..4b5d396 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmMappingModelService.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmMappingModelService.java
@@ -38,13 +38,12 @@ public class JPAEdmMappingModelService implements JPAEdmMappingModelAccess {
 
   boolean mappingModelExists = true;
   private JPAEdmMappingModel mappingModel;
+  private InputStream mappingModelStream = null;
   private String mappingModelName;
 
   public JPAEdmMappingModelService(final ODataJPAContext ctx) {
-    mappingModelName = ctx.getJPAEdmMappingModel();
-    if (mappingModelName == null) {
-      mappingModelExists = false;
-    }
+    mappingModelExists = (mappingModelName = ctx.getJPAEdmMappingModel()) == null ?
+        (((mappingModelStream = ctx.getJPAEdmExtension().getJPAEdmMappingModelStream()) == null) ? false : true) : true;
   }
 
   @Override
@@ -194,8 +193,10 @@ public class JPAEdmMappingModelService implements JPAEdmMappingModelAccess {
   }
 
   protected InputStream loadMappingModelInputStream() {
+    if (mappingModelStream != null) {
+      return mappingModelStream;
+    }
     InputStream is = JPAEdmMappingModelService.class.getClassLoader().getResourceAsStream("../../" + mappingModelName);
-
     return is;
 
   }


[18/50] [abbrv] git commit: [OLINGO-330] fixed

Posted by mi...@apache.org.
[OLINGO-330] fixed


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/12a391f9
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/12a391f9
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/12a391f9

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 12a391f93c8116caf7a23b12537df98a6734f20a
Parents: 6ac100f
Author: Stephan Klevenz <sk...@apache.org>
Authored: Fri Jun 27 09:23:45 2014 +0200
Committer: Stephan Klevenz <sk...@apache.org>
Committed: Fri Jun 27 09:23:45 2014 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java  | 1 +
 odata2-lib/odata-core/src/main/resources/i18n_en.properties        | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/12a391f9/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
index e5b5555..36a1f65 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
@@ -269,6 +269,7 @@ public class RestUtil {
       if (index < 0) {
         odataSegments.add(new ODataPathSegmentImpl(segment, null));
       } else {
+        // post condition: we do not allow matrix parameters in OData path segments
         String path = segment.substring(0, index);
         Map<String, List<String>> parameterMap = extractMatrixParameter(segment, index);
         throw new ODataNotFoundException(ODataNotFoundException.MATRIX.addContent(parameterMap.keySet(), path));

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/12a391f9/odata2-lib/odata-core/src/main/resources/i18n_en.properties
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/resources/i18n_en.properties b/odata2-lib/odata-core/src/main/resources/i18n_en.properties
index d6d0654..564dfef 100644
--- a/odata2-lib/odata-core/src/main/resources/i18n_en.properties
+++ b/odata2-lib/odata-core/src/main/resources/i18n_en.properties
@@ -107,7 +107,7 @@ org.apache.olingo.odata2.api.exception.ODataBadRequestException.AMBIGUOUS_XMETHO
 
 org.apache.olingo.odata2.api.exception.ODataForbiddenException.COMMON=Forbidden
 
-org.apache.olingo.odata2.api.exception.ODataNotFoundException.MATRIX=Matrix parameter '%1$s' with path segment '%2$s' not found!
+org.apache.olingo.odata2.api.exception.ODataNotFoundException.MATRIX=Matrix parameter '%1$s' in path segment '%2$s' not supported!
 org.apache.olingo.odata2.api.exception.ODataNotFoundException.ENTITY=Requested entity could not be found.
 
 org.apache.olingo.odata2.api.exception.ODataMethodNotAllowedException.DISPATCH=The request dispatcher does not allow the HTTP method used for the request.


[26/50] [abbrv] git commit: [OLINGO-334] Verify no parameters and no ReturnType dont cause an exception

Posted by mi...@apache.org.
[OLINGO-334] Verify no parameters and no ReturnType dont cause an
exception


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/81dfcfa4
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/81dfcfa4
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/81dfcfa4

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 81dfcfa47d68fb413863c1766f6a48026b9a5961
Parents: 0faf34b
Author: Christian Amend <ch...@apache.org>
Authored: Tue Jul 1 15:56:11 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Tue Jul 1 15:56:11 2014 +0200

----------------------------------------------------------------------
 .../core/ep/consumer/XmlMetadataConsumer.java   |  3 ++-
 .../ep/consumer/XmlMetadataConsumerTest.java    | 20 +++++++++++++++++++-
 2 files changed, 21 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/81dfcfa4/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
index 4239c6d..1c0776a 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
@@ -256,9 +256,10 @@ public class XmlMetadataConsumer {
     function.setHttpMethod(reader.getAttributeValue(Edm.NAMESPACE_M_2007_08,
         XmlMetadataConstants.EDM_FUNCTION_IMPORT_HTTP_METHOD));
     function.setEntitySet(reader.getAttributeValue(null, XmlMetadataConstants.EDM_ENTITY_SET));
-    ReturnType returnType = new ReturnType();
+
     String returnTypeString = reader.getAttributeValue(null, XmlMetadataConstants.EDM_FUNCTION_IMPORT_RETURN);
     if (returnTypeString != null) {
+      ReturnType returnType = new ReturnType();
       if (returnTypeString.startsWith("Collection") || returnTypeString.startsWith("collection")) {
         returnType.setMultiplicity(EdmMultiplicity.MANY);
         returnTypeString = returnTypeString.substring(returnTypeString.indexOf("(") + 1, returnTypeString.length() - 1);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/81dfcfa4/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
index e939f3a..c497c68 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
@@ -568,6 +568,11 @@ public class XmlMetadataConsumerTest extends AbstractXmlConsumerTest {
             + "<Parameter Name=\"q1\" Type=\"Edm.String\" Nullable=\"true\" />"
             + "<Parameter Name=\"q2\" Type=\"Edm.Int32\" Nullable=\"false\" />"
             + "</FunctionImport>"
+            + "<FunctionImport Name=\"NoParamters\" ReturnType=\"Collection(RefScenario.Room)\" " +
+            "EntitySet=\"Rooms\" m:HttpMethod=\"GET\">"
+            + "</FunctionImport>"
+            + "<FunctionImport Name=\"NoReturn\" " +
+            "EntitySet=\"Rooms\" m:HttpMethod=\"GET\"/>"
             + "</EntityContainer>" + "</Schema>" + "</edmx:DataServices>" + "</edmx:Edmx>";
     XmlMetadataConsumer parser = new XmlMetadataConsumer();
     XMLStreamReader reader = createStreamReader(xmWithEntityContainer);
@@ -577,7 +582,7 @@ public class XmlMetadataConsumerTest extends AbstractXmlConsumerTest {
         assertEquals("Container1", container.getName());
         assertEquals(Boolean.TRUE, container.isDefaultEntityContainer());
 
-        assertEquals(2, container.getFunctionImports().size());
+        assertEquals(4, container.getFunctionImports().size());
         FunctionImport functionImport1 = container.getFunctionImports().get(0);
 
         assertEquals("EmployeeSearch", functionImport1.getName());
@@ -614,6 +619,19 @@ public class XmlMetadataConsumerTest extends AbstractXmlConsumerTest {
         assertEquals(EdmSimpleTypeKind.Int32, functionImport2.getParameters().get(1).getType());
         assertEquals(Boolean.FALSE, functionImport2.getParameters().get(1).getFacets().isNullable());
 
+        FunctionImport functionImport3 = container.getFunctionImports().get(2);
+
+        assertEquals("NoParamters", functionImport3.getName());
+        List<FunctionImportParameter> parameters3 = functionImport3.getParameters();
+        assertNotNull(parameters3);
+        assertEquals(0, parameters3.size());
+
+        FunctionImport functionImport4 = container.getFunctionImports().get(3);
+        assertEquals("NoReturn", functionImport4.getName());
+        List<FunctionImportParameter> parameters4 = functionImport4.getParameters();
+        assertNotNull(parameters4);
+        assertEquals(0, parameters4.size());
+        assertNull(functionImport4.getReturnType());
       }
     }
   }


[07/50] [abbrv] git commit: [OLINGO-224] Added missing license header

Posted by mi...@apache.org.
[OLINGO-224] Added missing license header


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/55dfc129
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/55dfc129
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/55dfc129

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 55dfc129c3ba363aca9dc221171773a45e44e78e
Parents: 14e79ef
Author: Michael Bolz <mi...@apache.org>
Authored: Tue Jun 10 07:59:20 2014 +0200
Committer: Michael Bolz <mi...@apache.org>
Committed: Tue Jun 10 07:59:20 2014 +0200

----------------------------------------------------------------------
 .../SalesOrderItemTombstoneListener.java        | 20 ++++++++++++++++++--
 .../listeners/SalesOrderTombstoneListener.java  | 18 ++++++++++++++++++
 2 files changed, 36 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/55dfc129/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
index c44bc62..036db52 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderItemTombstoneListener.java
@@ -1,3 +1,21 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
 package org.apache.olingo.odata2.jpa.processor.ref.listeners;
 
 import java.text.SimpleDateFormat;
@@ -70,8 +88,6 @@ public class SalesOrderItemTombstoneListener extends ODataJPATombstoneEntityList
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.000");
 
     Date date = new Date(System.currentTimeMillis());
-    dateFormat.format(date);
     return dateFormat.format(date);
   }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/55dfc129/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
index ae80c53..ea162ae 100644
--- a/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
+++ b/odata2-jpa-processor/jpa-ref/src/main/java/org/apache/olingo/odata2/jpa/processor/ref/listeners/SalesOrderTombstoneListener.java
@@ -1,3 +1,21 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ******************************************************************************/
 package org.apache.olingo.odata2.jpa.processor.ref.listeners;
 
 import java.util.List;


[19/50] [abbrv] git commit: [OLINGO-295] Referential Constraint fix

Posted by mi...@apache.org.
[OLINGO-295] Referential Constraint fix


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/5968f1d9
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/5968f1d9
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/5968f1d9

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 5968f1d90cfa8c9c2926007ce85137100bd166bf
Parents: 12a391f
Author: Christian Amend <ch...@apache.org>
Authored: Fri Jun 27 14:37:43 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Fri Jun 27 14:37:43 2014 +0200

----------------------------------------------------------------------
 .../core/edm/provider/EdmAssociationImplProv.java       | 11 ++++++++---
 .../core/edm/provider/EdmAssociationImplProvTest.java   | 12 +++++++++---
 2 files changed, 17 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5968f1d9/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProv.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProv.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProv.java
index 01579e6..3124d45 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProv.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProv.java
@@ -35,6 +35,7 @@ public class EdmAssociationImplProv extends EdmNamedImplProv implements EdmAssoc
   private Association association;
   private String namespace;
   private EdmAnnotations annotations;
+  private EdmReferentialConstraintImplProv referentialConstraint;
 
   public EdmAssociationImplProv(final EdmImplProv edm, final Association association, final String namespace)
       throws EdmException {
@@ -102,8 +103,12 @@ public class EdmAssociationImplProv extends EdmNamedImplProv implements EdmAssoc
 
   @Override
   public EdmReferentialConstraint getReferentialConstraint() throws EdmException {
-    ReferentialConstraint refConstraint = association.getReferentialConstraint();
-    return new EdmReferentialConstraintImplProv(refConstraint);
+    if(referentialConstraint == null){
+      ReferentialConstraint refConstraint = association.getReferentialConstraint();
+      if(refConstraint != null){
+        referentialConstraint = new EdmReferentialConstraintImplProv(refConstraint);
+      }
+    }
+    return referentialConstraint;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5968f1d9/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProvTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProvTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProvTest.java
index b1dc084..7cde2cb 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProvTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmAssociationImplProvTest.java
@@ -100,9 +100,15 @@ public class EdmAssociationImplProvTest extends BaseTest {
 
   @Test
   public void testReferentialConstraint() throws EdmException {
-    EdmAssociation association = associationProv;
-    assertEquals("end1Role", association.getReferentialConstraint().getDependent().getRole());
-    assertEquals("end2Role", association.getReferentialConstraint().getPrincipal().getRole());
+    assertEquals("end1Role", associationProv.getReferentialConstraint().getDependent().getRole());
+    assertEquals("end2Role", associationProv.getReferentialConstraint().getPrincipal().getRole());
+  }
+
+  @Test
+  public void testReferentialConstraintNull() throws EdmException {
+    Association association = new Association().setName("association");
+    EdmAssociation edmAssociation = new EdmAssociationImplProv(null, association, "ns");
+    assertNull(edmAssociation.getReferentialConstraint());
   }
 
   @Test


[35/50] [abbrv] git commit: [OLINGO-379] Take line endings into account

Posted by mi...@apache.org.
[OLINGO-379] Take line endings into account


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/f1b9134c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/f1b9134c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/f1b9134c

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: f1b9134c6835714fab0f7f05928be5af99c133ae
Parents: 6b73a91
Author: Christian Amend <ch...@apache.org>
Authored: Fri Jul 25 15:21:40 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Fri Jul 25 15:21:40 2014 +0200

----------------------------------------------------------------------
 .../odata2/core/batch/BatchResponseParser.java  |  26 +-
 .../core/batch/BatchRequestParserTest.java      | 352 +++++++++----------
 .../core/batch/BatchResponseParserTest.java     | 341 ++++++++++--------
 .../BatchResponseWithAdditionalLineEnding.batch |  12 +
 .../BatchResponseWithLinesInBodyWin.batch       |  16 +
 5 files changed, 421 insertions(+), 326 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f1b9134c/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
index b488ce2..e44e2e6 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
@@ -38,7 +38,7 @@ import org.apache.olingo.odata2.core.exception.ODataRuntimeException;
 
 public class BatchResponseParser {
 
-  private static final String LF = "\n";
+  private static final String CRLF = "\r\n";
   private static final String REG_EX_OPTIONAL_WHITESPACE = "\\s?";
   private static final String REG_EX_ZERO_OR_MORE_WHITESPACES = "\\s*";
   private static final String ANY_CHARACTERS = ".*";
@@ -71,7 +71,7 @@ public class BatchResponseParser {
 
   public List<BatchSingleResponse> parse(final InputStream in) throws BatchException {
     Scanner scanner = new Scanner(in, BatchHelper.DEFAULT_ENCODING);
-    scanner.useDelimiter(LF);
+    scanner.useDelimiter(CRLF);
     List<BatchSingleResponse> responseList;
     try {
       responseList = Collections.unmodifiableList(parseBatchResponse(scanner));
@@ -199,10 +199,14 @@ public class BatchResponseParser {
 
       Map<String, String> headers = parseResponseHeaders(scanner);
       parseNewLine(scanner);
+      String body = parseBody(scanner);
       String contentLengthHeader = getHeaderValue(headers, HttpHeaders.CONTENT_LENGTH);
-      String body =
-          (contentLengthHeader != null) ? parseBody(scanner, Integer.parseInt(contentLengthHeader))
-              : parseBody(scanner);
+      if(contentLengthHeader != null){
+        int contentLength = Integer.parseInt(contentLengthHeader);
+        if(contentLength < body.length()){
+          body = body.substring(0, contentLength);
+        }
+      }
       response.setStatusCode(statusCode);
       response.setStatusInfo(statusInfo);
       response.setHeaders(headers);
@@ -280,14 +284,10 @@ public class BatchResponseParser {
   private String parseBody(final Scanner scanner) {
     StringBuilder body = null;
     while (scanner.hasNext() && !scanner.hasNext(REG_EX_ANY_BOUNDARY_STRING)) {
-      if (!scanner.hasNext(REG_EX_ZERO_OR_MORE_WHITESPACES)) {
-        if (body == null) {
-          body = new StringBuilder(scanner.next());
-        } else {
-          body.append(LF).append(scanner.next());
-        }
+      if (body == null) {
+        body = new StringBuilder(scanner.next());
       } else {
-        scanner.next();
+        body.append(CRLF).append(scanner.next());
       }
       currentLineNumber++;
     }
@@ -305,7 +305,7 @@ public class BatchResponseParser {
         if (body == null) {
           body = new StringBuilder(nextLine);
         } else {
-          body.append(LF).append(nextLine);
+          body.append(CRLF).append(nextLine);
         }
       } else {
         scanner.next();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f1b9134c/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
index e1315fb..f9b19b9 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchRequestParserTest.java
@@ -48,19 +48,19 @@ import org.junit.Test;
  */
 public class BatchRequestParserTest {
 
-  private static final String LF = "\r\n";
+  private static final String CRLF = "\r\n";
   private static final String CONTENT_ID_REFERENCE = "NewEmployee";
   private static final String PUT_MIME_HEADER_CONTENT_ID = "BBB_MIMEPART1";
   private static final String PUT_REQUEST_HEADER_CONTENT_ID = "BBB_REQUEST1";
   private static final String SERVICE_ROOT = "http://localhost/odata/";
   private static EntityProviderBatchProperties batchProperties;
   private static final String contentType = "multipart/mixed;boundary=batch_8194-cf13-1f56";
-  private static final String MIME_HEADERS = "Content-Type: application/http" + LF
-      + "Content-Transfer-Encoding: binary" + LF;
-  private static final String GET_REQUEST = MIME_HEADERS + LF
-      + "GET Employees('1')/EmployeeName HTTP/1.1" + LF
-      + LF
-      + LF;
+  private static final String MIME_HEADERS = "Content-Type: application/http" + CRLF
+      + "Content-Transfer-Encoding: binary" + CRLF;
+  private static final String GET_REQUEST = MIME_HEADERS + CRLF
+      + "GET Employees('1')/EmployeeName HTTP/1.1" + CRLF
+      + CRLF
+      + CRLF;
 
   @BeforeClass
   public static void setProperties() throws URISyntaxException {
@@ -131,29 +131,29 @@ public class BatchRequestParserTest {
       throw new IOException("Requested file '" + fileName + "' was not found.");
     }
     String content = StringHelper.inputStreamToString(contentInputStream);
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + LF
-        + "GET Employees?$filter=Age%20gt%2040 HTTP/1.1" + LF
-        + "Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5, */*;q=0.1" + LF
-        + "MaxDataServiceVersion: 2.0" + LF
-        + LF
-        + LF
-        + "--batch_8194-cf13-1f56" + LF
-        + "Content-Type: multipart/mixed; boundary=changeset_f980-1cb6-94dd" + LF
-        + LF
-        + "--changeset_f980-1cb6-94dd" + LF
-        + "content-type:     Application/http" + LF
-        + "content-transfer-encoding: Binary" + LF
-        + "Content-ID: 1" + LF
-        + LF
-        + "POST Employees HTTP/1.1" + LF
-        + "Content-length: 100000" + LF
-        + "Content-type: application/octet-stream" + LF
-        + LF
-        + content + LF
-        + LF
-        + "--changeset_f980-1cb6-94dd--" + LF
+        + CRLF
+        + "GET Employees?$filter=Age%20gt%2040 HTTP/1.1" + CRLF
+        + "Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5, */*;q=0.1" + CRLF
+        + "MaxDataServiceVersion: 2.0" + CRLF
+        + CRLF
+        + CRLF
+        + "--batch_8194-cf13-1f56" + CRLF
+        + "Content-Type: multipart/mixed; boundary=changeset_f980-1cb6-94dd" + CRLF
+        + CRLF
+        + "--changeset_f980-1cb6-94dd" + CRLF
+        + "content-type:     Application/http" + CRLF
+        + "content-transfer-encoding: Binary" + CRLF
+        + "Content-ID: 1" + CRLF
+        + CRLF
+        + "POST Employees HTTP/1.1" + CRLF
+        + "Content-length: 100000" + CRLF
+        + "Content-type: application/octet-stream" + CRLF
+        + CRLF
+        + content + CRLF
+        + CRLF
+        + "--changeset_f980-1cb6-94dd--" + CRLF
         + "--batch_8194-cf13-1f56--";
     List<BatchRequestPart> BatchRequestParts = parse(batch);
     for (BatchRequestPart object : BatchRequestParts) {
@@ -188,20 +188,20 @@ public class BatchRequestParserTest {
       throw new IOException("Requested file '" + fileName + "' was not found.");
     }
     StringHelper.inputStreamToString(contentInputStream);
-    String batch = LF
-        + "--batch_8194-cf13-1f56" + LF
-        + "Content-Type: multipart/mixed; boundary=changeset_f980-1cb6-94dd" + LF
-        + LF
-        + "--changeset_f980-1cb6-94dd" + LF
+    String batch = CRLF
+        + "--batch_8194-cf13-1f56" + CRLF
+        + "Content-Type: multipart/mixed; boundary=changeset_f980-1cb6-94dd" + CRLF
+        + CRLF
+        + "--changeset_f980-1cb6-94dd" + CRLF
         + MIME_HEADERS
-        + LF
-        + "POST Employees('2') HTTP/1.1" + LF
-        + "Content-Length: 100" + LF
-        + "Content-Type: application/octet-stream" + LF
-        + LF
-        + LF
-        + "--changeset_f980-1cb6-94dd--" + LF
-        + LF
+        + CRLF
+        + "POST Employees('2') HTTP/1.1" + CRLF
+        + "Content-Length: 100" + CRLF
+        + "Content-Type: application/octet-stream" + CRLF
+        + CRLF
+        + CRLF
+        + "--changeset_f980-1cb6-94dd--" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     List<BatchRequestPart> batchRequestParts = parse(batch);
     for (BatchRequestPart object : batchRequestParts) {
@@ -221,7 +221,7 @@ public class BatchRequestParserTest {
   public void testBoundaryParameterWithQuotas() throws BatchException {
     String contentType = "multipart/mixed; boundary=\"batch_1.2+34:2j)0?\"";
 
-    String batch = "--batch_1.2+34:2j)0?" + LF
+    String batch = "--batch_1.2+34:2j)0?" + CRLF
         + GET_REQUEST
         + "--batch_1.2+34:2j)0?--";
     InputStream in = new ByteArrayInputStream(batch.getBytes());
@@ -235,7 +235,7 @@ public class BatchRequestParserTest {
   public void testBatchWithInvalidContentType() throws BatchException {
     String invalidContentType = "multipart;boundary=batch_1740-bb84-2f7f";
 
-    String batch = "--batch_1740-bb84-2f7f" + LF
+    String batch = "--batch_1740-bb84-2f7f" + CRLF
         + GET_REQUEST
         + "--batch_1740-bb84-2f7f--";
     InputStream in = new ByteArrayInputStream(batch.getBytes());
@@ -246,7 +246,7 @@ public class BatchRequestParserTest {
   @Test(expected = BatchException.class)
   public void testBatchWithoutBoundaryParameter() throws BatchException {
     String invalidContentType = "multipart/mixed";
-    String batch = "--batch_1740-bb84-2f7f" + LF
+    String batch = "--batch_1740-bb84-2f7f" + CRLF
         + GET_REQUEST
         + "--batch_1740-bb84-2f7f--";
     InputStream in = new ByteArrayInputStream(batch.getBytes());
@@ -257,7 +257,7 @@ public class BatchRequestParserTest {
   @Test(expected = BatchException.class)
   public void testBoundaryParameterWithoutQuota() throws BatchException {
     String invalidContentType = "multipart;boundary=batch_1740-bb:84-2f7f";
-    String batch = "--batch_1740-bb:84-2f7f" + LF
+    String batch = "--batch_1740-bb:84-2f7f" + CRLF
         + GET_REQUEST
         + "--batch_1740-bb:84-2f7f--";
     InputStream in = new ByteArrayInputStream(batch.getBytes());
@@ -267,7 +267,7 @@ public class BatchRequestParserTest {
 
   @Test(expected = BatchException.class)
   public void testWrongBoundaryString() throws BatchException {
-    String batch = "--batch_8194-cf13-1f5" + LF
+    String batch = "--batch_8194-cf13-1f5" + CRLF
         + GET_REQUEST
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
@@ -275,9 +275,9 @@ public class BatchRequestParserTest {
 
   @Test(expected = BatchException.class)
   public void testBoundaryWithoutHyphen() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + GET_REQUEST
-        + "batch_8194-cf13-1f56" + LF
+        + "batch_8194-cf13-1f56" + CRLF
         + GET_REQUEST
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
@@ -285,7 +285,7 @@ public class BatchRequestParserTest {
 
   @Test(expected = BatchException.class)
   public void testNoBoundaryString() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + GET_REQUEST
         // + no boundary string
         + GET_REQUEST
@@ -295,54 +295,54 @@ public class BatchRequestParserTest {
 
   @Test(expected = BatchException.class)
   public void testBatchBoundaryEqualsChangeSetBoundary() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
-        + "Content-Type: multipart/mixed;boundary=batch_8194-cf13-1f56" + LF
-        + LF
-        + "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
+        + "Content-Type: multipart/mixed;boundary=batch_8194-cf13-1f56" + CRLF
+        + CRLF
+        + "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + LF
-        + "PUT Employees('2')/EmployeeName HTTP/1.1" + LF
-        + "Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5, */*;q=0.1" + LF
-        + "Content-Type: application/json;odata=verbose" + LF
-        + "MaxDataServiceVersion: 2.0" + LF
-        + LF
-        + "{\"EmployeeName\":\"Frederic Fall MODIFIED\"}" + LF
-        + LF
+        + CRLF
+        + "PUT Employees('2')/EmployeeName HTTP/1.1" + CRLF
+        + "Accept: application/atomsvc+xml;q=0.8, application/json;odata=verbose;q=0.5, */*;q=0.1" + CRLF
+        + "Content-Type: application/json;odata=verbose" + CRLF
+        + "MaxDataServiceVersion: 2.0" + CRLF
+        + CRLF
+        + "{\"EmployeeName\":\"Frederic Fall MODIFIED\"}" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testNoContentType() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + LF
-        + "GET Employees('1')/EmployeeName HTTP/1.1" + LF
-        + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + CRLF
+        + "GET Employees('1')/EmployeeName HTTP/1.1" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testMimeHeaderContentType() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
-        + "Content-Type: text/plain" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + LF
-        + "GET Employees('1')/EmployeeName HTTP/1.1" + LF
-        + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
+        + "Content-Type: text/plain" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + CRLF
+        + "GET Employees('1')/EmployeeName HTTP/1.1" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testMimeHeaderEncoding() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: 8bit" + LF
-        + LF
-        + "GET Employees('1')/EmployeeName HTTP/1.1" + LF
-        + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: 8bit" + CRLF
+        + CRLF
+        + "GET Employees('1')/EmployeeName HTTP/1.1" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
@@ -350,113 +350,113 @@ public class BatchRequestParserTest {
   @Test(expected = BatchException.class)
   @Ignore("What should here throw an exception")
   public void testMimeHeaderContentId() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + "Content-ID: 1" + LF
-        + LF
-        + "GET Employees('1')/EmployeeName HTTP/1.1" + LF
-        + LF
+        + "Content-ID: 1" + CRLF
+        + CRLF
+        + "GET Employees('1')/EmployeeName HTTP/1.1" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testInvalidMethodForBatch() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + LF
-        + "POST Employees('1')/EmployeeName HTTP/1.1" + LF
-        + LF
+        + CRLF
+        + "POST Employees('1')/EmployeeName HTTP/1.1" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testNoMethod() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + LF
-        + /* GET */"Employees('1')/EmployeeName HTTP/1.1" + LF
-        + LF
+        + CRLF
+        + /* GET */"Employees('1')/EmployeeName HTTP/1.1" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testInvalidMethodForChangeset() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
-        + "Content-Type: multipart/mixed; boundary=changeset_f980-1cb6-94dd" + LF
-        + LF
-        + "--changeset_f980-1cb6-94dd" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
+        + "Content-Type: multipart/mixed; boundary=changeset_f980-1cb6-94dd" + CRLF
+        + CRLF
+        + "--changeset_f980-1cb6-94dd" + CRLF
         + MIME_HEADERS
-        + LF
-        + "GET Employees('2')/EmployeeName HTTP/1.1" + LF
-        + "Content-Type: application/json;odata=verbose" + LF
-        + "MaxDataServiceVersion: 2.0" + LF
-        + LF
+        + CRLF
+        + "GET Employees('2')/EmployeeName HTTP/1.1" + CRLF
+        + "Content-Type: application/json;odata=verbose" + CRLF
+        + "MaxDataServiceVersion: 2.0" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testInvalidChangeSetBoundary() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
-        + "Content-Type: multipart/mixed;boundary=changeset_f980-1cb6-94dd" + LF
-        + LF
-        + "--changeset_f980-1cb6-94d"/* +"d" */+ LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
+        + "Content-Type: multipart/mixed;boundary=changeset_f980-1cb6-94dd" + CRLF
+        + CRLF
+        + "--changeset_f980-1cb6-94d"/* +"d" */+ CRLF
         + MIME_HEADERS
-        + LF
-        + "POST Employees('2') HTTP/1.1" + LF
-        + "Content-Type: application/json;odata=verbose" + LF
-        + "MaxDataServiceVersion: 2.0" + LF
-        + LF
+        + CRLF
+        + "POST Employees('2') HTTP/1.1" + CRLF
+        + "Content-Type: application/json;odata=verbose" + CRLF
+        + "MaxDataServiceVersion: 2.0" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testNoCloseDelimiter() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + GET_REQUEST;
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testNoCloseDelimiter2() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + LF
-        + "GET Employees('1')/EmployeeName HTTP/1.1" + LF;
+        + CRLF
+        + "GET Employees('1')/EmployeeName HTTP/1.1" + CRLF;
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testInvalidUri() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + LF
-        + "GET http://localhost/aa/odata/Employees('1')/EmployeeName HTTP/1.1" + LF
-        + LF
-        + LF
+        + CRLF
+        + "GET http://localhost/aa/odata/Employees('1')/EmployeeName HTTP/1.1" + CRLF
+        + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testUriWithAbsolutePath() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + LF
-        + "GET /odata/Employees('1')/EmployeeName HTTP/1.1" + LF
-        + LF
-        + LF
+        + CRLF
+        + "GET /odata/Employees('1')/EmployeeName HTTP/1.1" + CRLF
+        + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     parseInvalidBatchBody(batch);
   }
 
   @Test(expected = BatchException.class)
   public void testNoCloseDelimiter3() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF + GET_REQUEST + "--batch_8194-cf13-1f56-"/* no hash */;
+    String batch = "--batch_8194-cf13-1f56" + CRLF + GET_REQUEST + "--batch_8194-cf13-1f56-"/* no hash */;
     parseInvalidBatchBody(batch);
   }
 
@@ -464,20 +464,20 @@ public class BatchRequestParserTest {
   public void testAcceptHeaders() throws BatchException, URISyntaxException {
     String batch =
         "--batch_8194-cf13-1f56"
-            + LF
+            + CRLF
             + MIME_HEADERS
-            + LF
+            + CRLF
             + "GET Employees('2')/EmployeeName HTTP/1.1"
-            + LF
+            + CRLF
             + "Content-Length: 100000"
-            + LF
+            + CRLF
             + "Content-Type: application/json;odata=verbose"
-            + LF
+            + CRLF
             + "Accept: application/xml;q=0.3, application/atomsvc+xml;q=0.8, " +
             "application/json;odata=verbose;q=0.5, */*;q=0.001"
-            + LF
-            + LF
-            + LF
+            + CRLF
+            + CRLF
+            + CRLF
             + "--batch_8194-cf13-1f56--";
     List<BatchRequestPart> batchRequestParts = parse(batch);
     for (BatchRequestPart multipart : batchRequestParts) {
@@ -496,15 +496,15 @@ public class BatchRequestParserTest {
 
   @Test
   public void testAcceptHeaders2() throws BatchException, URISyntaxException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + LF
-        + "GET Employees('2')/EmployeeName HTTP/1.1" + LF
-        + "Content-Length: 100000" + LF
-        + "Content-Type: application/json;odata=verbose" + LF
-        + "Accept: */*;q=0.5, application/json;odata=verbose;q=1.0,application/atom+xml" + LF
-        + LF
-        + LF
+        + CRLF
+        + "GET Employees('2')/EmployeeName HTTP/1.1" + CRLF
+        + "Content-Length: 100000" + CRLF
+        + "Content-Type: application/json;odata=verbose" + CRLF
+        + "Accept: */*;q=0.5, application/json;odata=verbose;q=1.0,application/atom+xml" + CRLF
+        + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     List<BatchRequestPart> batchRequestParts = parse(batch);
     for (BatchRequestPart multipart : batchRequestParts) {
@@ -524,15 +524,15 @@ public class BatchRequestParserTest {
 
   @Test
   public void testAcceptHeaders3() throws BatchException, URISyntaxException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + LF
-        + "GET Employees('2')/EmployeeName HTTP/1.1" + LF
-        + "Content-Length: 100000" + LF
-        + "Content-Type: application/json;odata=verbose" + LF
-        + "accept: */*,application/atom+xml,application/atomsvc+xml,application/xml" + LF
-        + LF
-        + LF
+        + CRLF
+        + "GET Employees('2')/EmployeeName HTTP/1.1" + CRLF
+        + "Content-Length: 100000" + CRLF
+        + "Content-Type: application/json;odata=verbose" + CRLF
+        + "accept: */*,application/atom+xml,application/atomsvc+xml,application/xml" + CRLF
+        + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     List<BatchRequestPart> batchRequestParts = parse(batch);
     for (BatchRequestPart multipart : batchRequestParts) {
@@ -554,36 +554,36 @@ public class BatchRequestParserTest {
 
   @Test
   public void testContentId() throws BatchException {
-    String batch = "--batch_8194-cf13-1f56" + LF
+    String batch = "--batch_8194-cf13-1f56" + CRLF
         + MIME_HEADERS
-        + LF
-        + "GET Employees HTTP/1.1" + LF
-        + "accept: */*,application/atom+xml,application/atomsvc+xml,application/xml" + LF
-        + "Content-Id: BBB" + LF
-        + LF + LF
-        + "--batch_8194-cf13-1f56" + LF
-        + "Content-Type: multipart/mixed; boundary=changeset_f980-1cb6-94dd" + LF
-        + LF
-        + "--changeset_f980-1cb6-94dd" + LF
+        + CRLF
+        + "GET Employees HTTP/1.1" + CRLF
+        + "accept: */*,application/atom+xml,application/atomsvc+xml,application/xml" + CRLF
+        + "Content-Id: BBB" + CRLF
+        + CRLF + CRLF
+        + "--batch_8194-cf13-1f56" + CRLF
+        + "Content-Type: multipart/mixed; boundary=changeset_f980-1cb6-94dd" + CRLF
+        + CRLF
+        + "--changeset_f980-1cb6-94dd" + CRLF
         + MIME_HEADERS
-        + "Content-Id: " + CONTENT_ID_REFERENCE + LF
-        + LF
-        + "POST Employees HTTP/1.1" + LF
-        + "Content-type: application/octet-stream" + LF
-        + LF
-        + "/9j/4AAQSkZJRgABAQEBLAEsAAD/4RM0RXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAA" + LF
-        + LF
-        + "--changeset_f980-1cb6-94dd" + LF
+        + "Content-Id: " + CONTENT_ID_REFERENCE + CRLF
+        + CRLF
+        + "POST Employees HTTP/1.1" + CRLF
+        + "Content-type: application/octet-stream" + CRLF
+        + CRLF
+        + "/9j/4AAQSkZJRgABAQEBLAEsAAD/4RM0RXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAA" + CRLF
+        + CRLF
+        + "--changeset_f980-1cb6-94dd" + CRLF
         + MIME_HEADERS
-        + "Content-ID: " + PUT_MIME_HEADER_CONTENT_ID + LF
-        + LF
-        + "PUT $" + CONTENT_ID_REFERENCE + "/EmployeeName HTTP/1.1" + LF
-        + "Content-Type: application/json;odata=verbose" + LF
-        + "Content-Id:" + PUT_REQUEST_HEADER_CONTENT_ID + LF
-        + LF
-        + "{\"EmployeeName\":\"Peter Fall\"}" + LF
-        + "--changeset_f980-1cb6-94dd--" + LF
-        + LF
+        + "Content-ID: " + PUT_MIME_HEADER_CONTENT_ID + CRLF
+        + CRLF
+        + "PUT $" + CONTENT_ID_REFERENCE + "/EmployeeName HTTP/1.1" + CRLF
+        + "Content-Type: application/json;odata=verbose" + CRLF
+        + "Content-Id:" + PUT_REQUEST_HEADER_CONTENT_ID + CRLF
+        + CRLF
+        + "{\"EmployeeName\":\"Peter Fall\"}" + CRLF
+        + "--changeset_f980-1cb6-94dd--" + CRLF
+        + CRLF
         + "--batch_8194-cf13-1f56--";
     InputStream in = new ByteArrayInputStream(batch.getBytes());
     BatchRequestParser parser = new BatchRequestParser(contentType, batchProperties);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f1b9134c/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
index 592c054..87d8cac 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/batch/BatchResponseParserTest.java
@@ -29,25 +29,28 @@ import org.apache.olingo.odata2.api.batch.BatchException;
 import org.apache.olingo.odata2.api.client.batch.BatchSingleResponse;
 import org.apache.olingo.odata2.api.commons.HttpContentType;
 import org.apache.olingo.odata2.api.commons.HttpHeaders;
+import org.apache.olingo.odata2.api.ep.EntityProvider;
 import org.junit.Test;
 
 public class BatchResponseParserTest {
 
-  private static final String LF = "\r\n";
+  private static final String CRLF = "\r\n";
+  private static final String LF = "\n";
+
 
   @Test
   public void testSimpleBatchResponse() throws BatchException {
-    String getResponse = "--batch_123" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + "Content-ID: 1" + LF
-        + LF
-        + "HTTP/1.1 200 OK" + LF
-        + "DataServiceVersion: 2.0" + LF
-        + "Content-Type: text/plain;charset=utf-8" + LF
-        + "Content-length: 22" + LF
-        + LF
-        + "Frederic Fall MODIFIED" + LF
+    String getResponse = "--batch_123" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + "Content-ID: 1" + CRLF
+        + CRLF
+        + "HTTP/1.1 200 OK" + CRLF
+        + "DataServiceVersion: 2.0" + CRLF
+        + "Content-Type: text/plain;charset=utf-8" + CRLF
+        + "Content-length: 22" + CRLF
+        + CRLF
+        + "Frederic Fall MODIFIED" + CRLF
         + "--batch_123--";
 
     InputStream in = new ByteArrayInputStream(getResponse.getBytes());
@@ -84,20 +87,20 @@ public class BatchResponseParserTest {
 
   @Test
   public void testResponseToChangeSet() throws BatchException {
-    String putResponse = "--batch_123" + LF
-        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + ";boundary=changeset_12ks93js84d" + LF
-        + LF
-        + "--changeset_12ks93js84d" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + "Content-ID: 1" + LF
-        + LF
-        + "HTTP/1.1 204 No Content" + LF
-        + "DataServiceVersion: 2.0" + LF
-        + LF
-        + LF
-        + "--changeset_12ks93js84d--" + LF
-        + LF
+    String putResponse = "--batch_123" + CRLF
+        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + ";boundary=changeset_12ks93js84d" + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + "Content-ID: 1" + CRLF
+        + CRLF
+        + "HTTP/1.1 204 No Content" + CRLF
+        + "DataServiceVersion: 2.0" + CRLF
+        + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d--" + CRLF
+        + CRLF
         + "--batch_123--";
 
     InputStream in = new ByteArrayInputStream(putResponse.getBytes());
@@ -112,19 +115,19 @@ public class BatchResponseParserTest {
 
   @Test(expected = BatchException.class)
   public void testInvalidMimeHeader() throws BatchException {
-    String putResponse = "--batch_123" + LF
-        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + ";boundary=changeset_12ks93js84d" + LF
-        + LF
-        + "--changeset_12ks93js84d" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: 7bit" + LF // Content-Transfer-Encoding must be binary
-        + LF
-        + "HTTP/1.1 No Content" + LF
-        + "DataServiceVersion: 2.0" + LF
-        + LF
-        + LF
-        + "--changeset_12ks93js84d--" + LF
-        + LF
+    String putResponse = "--batch_123" + CRLF
+        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + ";boundary=changeset_12ks93js84d" + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: 7bit" + CRLF // Content-Transfer-Encoding must be binary
+        + CRLF
+        + "HTTP/1.1 No Content" + CRLF
+        + "DataServiceVersion: 2.0" + CRLF
+        + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d--" + CRLF
+        + CRLF
         + "--batch_123--";
 
     parseInvalidBatchResponseBody(putResponse);
@@ -132,17 +135,17 @@ public class BatchResponseParserTest {
 
   @Test(expected = BatchException.class)
   public void testMissingMimeHeader() throws BatchException {
-    String putResponse = "--batch_123" + LF
-        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + ";boundary=changeset_12ks93js84d" + LF
-        + LF
-        + "--changeset_12ks93js84d" + LF
-        + LF
-        + "HTTP/1.1 No Content" + LF
-        + "DataServiceVersion: 2.0" + LF
-        + LF
-        + LF
-        + "--changeset_12ks93js84d--" + LF
-        + LF
+    String putResponse = "--batch_123" + CRLF
+        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + ";boundary=changeset_12ks93js84d" + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d" + CRLF
+        + CRLF
+        + "HTTP/1.1 No Content" + CRLF
+        + "DataServiceVersion: 2.0" + CRLF
+        + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d--" + CRLF
+        + CRLF
         + "--batch_123--";
 
     parseInvalidBatchResponseBody(putResponse);
@@ -150,19 +153,19 @@ public class BatchResponseParserTest {
 
   @Test(expected = BatchException.class)
   public void testInvalidContentType() throws BatchException {
-    String putResponse = "--batch_123" + LF
-        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + LF // Missing boundary parameter
-        + LF
-        + "--changeset_12ks93js84d" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + LF
-        + "HTTP/1.1 No Content" + LF
-        + "DataServiceVersion: 2.0" + LF
-        + LF
-        + LF
-        + "--changeset_12ks93js84d--" + LF
-        + LF
+    String putResponse = "--batch_123" + CRLF
+        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + CRLF // Missing boundary parameter
+        + CRLF
+        + "--changeset_12ks93js84d" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + CRLF
+        + "HTTP/1.1 No Content" + CRLF
+        + "DataServiceVersion: 2.0" + CRLF
+        + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d--" + CRLF
+        + CRLF
         + "--batch_123--";
 
     parseInvalidBatchResponseBody(putResponse);
@@ -170,19 +173,19 @@ public class BatchResponseParserTest {
 
   @Test(expected = BatchException.class)
   public void testInvalidStatusLine() throws BatchException {
-    String putResponse = "--batch_123" + LF
-        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + ";boundary=changeset_12ks93js84d" + LF
-        + LF
-        + "--changeset_12ks93js84d" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + LF
-        + "HTTP/1.1 No Content" + LF
-        + "DataServiceVersion: 2.0" + LF
-        + LF
-        + LF
-        + "--changeset_12ks93js84d--" + LF
-        + LF
+    String putResponse = "--batch_123" + CRLF
+        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + ";boundary=changeset_12ks93js84d" + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + CRLF
+        + "HTTP/1.1 No Content" + CRLF
+        + "DataServiceVersion: 2.0" + CRLF
+        + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d--" + CRLF
+        + CRLF
         + "--batch_123--";
 
     parseInvalidBatchResponseBody(putResponse);
@@ -191,84 +194,148 @@ public class BatchResponseParserTest {
 
   @Test(expected = BatchException.class)
   public void testMissingCloseDelimiter() throws BatchException {
-    String putResponse = "--batch_123" + LF
-        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + ";boundary=changeset_12ks93js84d" + LF
-        + LF
-        + "--changeset_12ks93js84d" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + LF
-        + "HTTP/1.1 204 No Content" + LF
-        + "DataServiceVersion: 2.0" + LF
-        + LF
-        + LF
-        + "--changeset_12ks93js84d--" + LF
-        + LF;
+    String putResponse = "--batch_123" + CRLF
+        + "Content-Type: " + HttpContentType.MULTIPART_MIXED + ";boundary=changeset_12ks93js84d" + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + CRLF
+        + "HTTP/1.1 204 No Content" + CRLF
+        + "DataServiceVersion: 2.0" + CRLF
+        + CRLF
+        + CRLF
+        + "--changeset_12ks93js84d--" + CRLF
+        + CRLF;
 
     parseInvalidBatchResponseBody(putResponse);
 
   }
 
-  @Test(expected = BatchException.class)
-  public void testInvalidEnteredContentLength() throws BatchException {
-    String getResponse = "--batch_123" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + "Content-ID: 1" + LF
-        + LF
-        + "HTTP/1.1 200 OK" + LF
-        + "DataServiceVersion: 2.0" + LF
-        + "Content-Type: text/plain;charset=utf-8" + LF
-        + "Content-length: 100" + LF
-        + LF
-        + "Frederic Fall" + LF
-        + LF
+  @Test
+  public void tooBigContentLegthDoesNotResultInException() throws BatchException {
+    String getResponse = "--batch_123" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + "Content-ID: 1" + CRLF
+        + CRLF
+        + "HTTP/1.1 200 OK" + CRLF
+        + "DataServiceVersion: 2.0" + CRLF
+        + "Content-Type: text/plain;charset=utf-8" + CRLF
+        + "Content-Length: 100" + CRLF
+        + CRLF
+        + "Frederic Fall" + CRLF
         + "--batch_123--";
 
-    parseInvalidBatchResponseBody(getResponse);
+    InputStream in = new ByteArrayInputStream(getResponse.getBytes());
+    List<BatchSingleResponse> batchResponse =
+        EntityProvider.parseBatchResponse(in, "multipart/mixed;boundary=batch_123");
+    BatchSingleResponse response = batchResponse.get(0);
+    assertEquals("100", response.getHeader("Content-Length"));
+    assertEquals("Frederic Fall", response.getBody());
   }
 
   @Test(expected = BatchException.class)
   public void testInvalidBoundary() throws BatchException {
-    String getResponse = "--batch_321" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + "Content-ID: 1" + LF
-        + LF
-        + "HTTP/1.1 200 OK" + LF
-        + "DataServiceVersion: 2.0" + LF
-        + "Content-Type: text/plain;charset=utf-8" + LF
-        + LF
-        + "Frederic Fall" + LF
-        + LF
+    String getResponse = "--batch_321" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + "Content-ID: 1" + CRLF
+        + CRLF
+        + "HTTP/1.1 200 OK" + CRLF
+        + "DataServiceVersion: 2.0" + CRLF
+        + "Content-Type: text/plain;charset=utf-8" + CRLF
+        + CRLF
+        + "Frederic Fall" + CRLF
+        + CRLF
         + "--batch_123--";
 
     parseInvalidBatchResponseBody(getResponse);
   }
 
-  @Test(expected = BatchException.class)
-  public void testInvalidBoundary2() throws BatchException {
-    String getResponse = "--batch_123" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + LF
-        + "HTTP/1.1 200 OK" + LF
-        + "Content-Type: text/plain;charset=utf-8" + LF
-        + "Content-Length: 13" + LF
-        + LF
-        + "Frederic Fall" + LF
-        + LF
-        + "batch_123" + LF
-        + "Content-Type: application/http" + LF
-        + "Content-Transfer-Encoding: binary" + LF
-        + LF
-        + "HTTP/1.1 200 OK" + LF
-        + "Content-Type: text/plain;charset=utf-8" + LF
-        + LF
-        + "Walter Winter" + LF
-        + LF
+  @Test
+  public void boundaryInBodyMustBeIgnored() throws BatchException {
+    String getResponse = "--batch_123" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + CRLF
+        + "HTTP/1.1 200 OK" + CRLF
+        + "Content-Type: text/plain;charset=utf-8" + CRLF
+        + "Content-Length: 13" + CRLF
+        + CRLF
+        + "Frederic Fall" + CRLF
+        + CRLF
+        + "batch_123" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Transfer-Encoding: binary" + CRLF
+        + CRLF
+        + "HTTP/1.1 200 OK" + CRLF
+        + "Content-Type: text/plain;charset=utf-8" + CRLF
+        + CRLF
+        + "Walter Winter" + CRLF
+        + CRLF
         + "--batch_123--";
-    parseInvalidBatchResponseBody(getResponse);
+    InputStream in = new ByteArrayInputStream(getResponse.getBytes());
+    List<BatchSingleResponse> batchResponse =
+        EntityProvider.parseBatchResponse(in, "multipart/mixed;boundary=batch_123");
+    BatchSingleResponse response = batchResponse.get(0);
+    assertEquals("13", response.getHeader("Content-Length"));
+    assertEquals("Frederic Fall", response.getBody());
+  }
+
+  @Test
+  public void parseWithAdditionalLineEndingAtTheEnd() throws Exception {
+    InputStream stream = getFileAsStream("BatchResponseWithAdditionalLineEnding.batch");
+    BatchSingleResponse response =
+        EntityProvider.parseBatchResponse(stream, "multipart/mixed;boundary=batch_123").get(0);
+    assertEquals("This is the body we need to parse. The trailing line ending is part of the body." + CRLF, response
+        .getBody());
+
+  }
+
+  @Test
+  public void parseWithWindowsLineEndingsInBody() throws Exception {
+    InputStream stream = getFileAsStream("BatchResponseWithLinesInBodyWin.batch");
+    BatchSingleResponse response =
+        EntityProvider.parseBatchResponse(stream, "multipart/mixed;boundary=batch_123").get(0);
+    String body =
+        "This is the body we need to parse. The line spaces in the body " + CRLF + CRLF + CRLF + "are " + CRLF + CRLF
+            + "part of the body and must not be ignored or filtered.";
+
+    assertEquals(body, response.getBody());
+  }
+  
+  @Test
+  public void parseWithUnixLineEndingsInBody() throws Exception {
+    String body =
+        "This is the body we need to parse. The line spaces in the body " + LF + LF + LF + "are " + LF + LF
+        + "part of the body and must not be ignored or filtered.";
+    String responseString = "--batch_123" + CRLF
+        + "Content-Type: application/http" + CRLF
+        + "Content-Length: 234" + CRLF
+        + "content-transfer-encoding: binary" + CRLF
+        + CRLF 
+        + "HTTP/1.1 500 Internal Server Error" + CRLF
+        + "Content-Type: application/xml;charset=utf-8" + CRLF
+        + "Content-Length: 125" + CRLF
+        + CRLF
+        + body
+        + CRLF
+        + "--batch_123--"
+        ;
+    InputStream stream = new ByteArrayInputStream(responseString.getBytes());
+    BatchSingleResponse response =
+        EntityProvider.parseBatchResponse(stream, "multipart/mixed;boundary=batch_123").get(0);
+
+    assertEquals(body, response.getBody());
+  }
+
+  private InputStream getFileAsStream(final String filename) throws IOException {
+    InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);
+    if (in == null) {
+      throw new IOException("Requested file '" + filename + "' was not found.");
+    }
+    return in;
   }
 
   private void parseInvalidBatchResponseBody(final String putResponse) throws BatchException {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f1b9134c/odata2-lib/odata-core/src/test/resources/BatchResponseWithAdditionalLineEnding.batch
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/BatchResponseWithAdditionalLineEnding.batch b/odata2-lib/odata-core/src/test/resources/BatchResponseWithAdditionalLineEnding.batch
new file mode 100644
index 0000000..9cd6c46
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/BatchResponseWithAdditionalLineEnding.batch
@@ -0,0 +1,12 @@
+--batch_123
+Content-Type: application/http
+Content-Length: 185
+content-transfer-encoding: binary
+
+HTTP/1.1 500 Internal Server Error
+Content-Type: application/xml;charset=utf-8
+Content-Length: 82
+
+This is the body we need to parse. The trailing line ending is part of the body.
+
+--batch_123--
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f1b9134c/odata2-lib/odata-core/src/test/resources/BatchResponseWithLinesInBodyWin.batch
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/resources/BatchResponseWithLinesInBodyWin.batch b/odata2-lib/odata-core/src/test/resources/BatchResponseWithLinesInBodyWin.batch
new file mode 100644
index 0000000..0d03643
--- /dev/null
+++ b/odata2-lib/odata-core/src/test/resources/BatchResponseWithLinesInBodyWin.batch
@@ -0,0 +1,16 @@
+--batch_123
+Content-Type: application/http
+Content-Length: 234
+content-transfer-encoding: binary
+
+HTTP/1.1 500 Internal Server Error
+Content-Type: application/xml;charset=utf-8
+Content-Length: 130
+
+This is the body we need to parse. The line spaces in the body 
+
+
+are 
+
+part of the body and must not be ignored or filtered.
+--batch_123--
\ No newline at end of file


[04/50] [abbrv] git commit: [OLINGO-257] fix potential resource leaks

Posted by mi...@apache.org.
[OLINGO-257] fix potential resource leaks


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/f99f8a35
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/f99f8a35
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/f99f8a35

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: f99f8a359ca8c616621e04e6cb89361f446e9140
Parents: 9a8261a
Author: Stephan Klevenz <sk...@apache.org>
Authored: Tue Jun 3 08:44:43 2014 +0200
Committer: Stephan Klevenz <sk...@apache.org>
Committed: Tue Jun 3 08:44:43 2014 +0200

----------------------------------------------------------------------
 .../olingo/odata2/core/batch/AcceptParser.java    |  7 +++++--
 .../odata2/core/batch/BatchRequestParser.java     | 18 ++++++++++++------
 .../odata2/core/batch/BatchResponseParser.java    |  6 ++++--
 3 files changed, 21 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f99f8a35/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/AcceptParser.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/AcceptParser.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/AcceptParser.java
index d56e13e..946fccf 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/AcceptParser.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/AcceptParser.java
@@ -51,7 +51,8 @@ public class AcceptParser {
   public static List<String> parseAcceptHeaders(final String headerValue) throws BatchException {
     TreeSet<Accept> acceptTree = getAcceptTree();
     List<String> acceptHeaders = new ArrayList<String>();
-    Scanner acceptHeaderScanner = new Scanner(headerValue).useDelimiter(",\\s?");
+    Scanner acceptHeaderScanner = new Scanner(headerValue);
+    acceptHeaderScanner.useDelimiter(",\\s?");
     while (acceptHeaderScanner.hasNext()) {
       if (acceptHeaderScanner.hasNext(REG_EX_ACCEPT_WITH_Q_FACTOR)) {
         acceptHeaderScanner.next(REG_EX_ACCEPT_WITH_Q_FACTOR);
@@ -107,7 +108,9 @@ public class AcceptParser {
   public static List<String> parseAcceptableLanguages(final String headerValue) throws BatchException {
     List<String> acceptLanguages = new LinkedList<String>();
     TreeSet<Accept> acceptTree = getAcceptTree();
-    Scanner acceptLanguageScanner = new Scanner(headerValue).useDelimiter(",\\s?");
+    Scanner acceptLanguageScanner = new Scanner(headerValue);
+    acceptLanguageScanner.useDelimiter(",\\s?");
+
     while (acceptLanguageScanner.hasNext()) {
       if (acceptLanguageScanner.hasNext(REG_EX_ACCEPT_LANGUAGES_WITH_Q_FACTOR)) {
         acceptLanguageScanner.next(REG_EX_ACCEPT_LANGUAGES_WITH_Q_FACTOR);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f99f8a35/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
index 6584ee9..ca69d36 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchRequestParser.java
@@ -107,7 +107,8 @@ public class BatchRequestParser {
   }
 
   public List<BatchRequestPart> parse(final InputStream in) throws BatchException {
-    Scanner scanner = new Scanner(in, BatchHelper.DEFAULT_ENCODING).useDelimiter(LF);
+    Scanner scanner = new Scanner(in, BatchHelper.DEFAULT_ENCODING);
+    scanner.useDelimiter(LF);
     baseUri = getBaseUri();
     List<BatchRequestPart> requestList;
     try {
@@ -339,7 +340,8 @@ public class BatchRequestParser {
     final String odataPathSegmentsAsString;
     final String queryParametersAsString;
     try {
-      Scanner uriScanner = new Scanner(uri).useDelimiter(LF);
+      Scanner uriScanner = new Scanner(uri);
+      uriScanner.useDelimiter(LF);
       URI uriObject = new URI(uri);
       if (uriObject.isAbsolute()) {
         Pattern regexRequestUri = Pattern.compile(baseUri + "/([^/][^?]*)(\\?.*)?");
@@ -392,7 +394,8 @@ public class BatchRequestParser {
   }
 
   private Map<String, String> parseQueryParameters(final String uri) throws BatchException {
-    Scanner uriScanner = new Scanner(uri).useDelimiter("\n");
+    Scanner uriScanner = new Scanner(uri);
+    uriScanner.useDelimiter("\n");
     Map<String, String> queryParametersMap = new HashMap<String, String>();
     Pattern regex = Pattern.compile("(?:" + baseUri + "/)?" + "[^?]+" + "\\?(.*)");
     if (uriScanner.hasNext(regex)) {
@@ -400,7 +403,8 @@ public class BatchRequestParser {
       MatchResult uriResult = uriScanner.match();
       if (uriResult.groupCount() == 1) {
         String queryParams = uriResult.group(1);
-        Scanner queryParamsScanner = new Scanner(queryParams).useDelimiter("&");
+        Scanner queryParamsScanner = new Scanner(queryParams);
+        queryParamsScanner.useDelimiter("&");
         while (queryParamsScanner.hasNext(REG_EX_QUERY_PARAMETER)) {
           queryParamsScanner.next(REG_EX_QUERY_PARAMETER);
           MatchResult result = queryParamsScanner.match();
@@ -425,7 +429,8 @@ public class BatchRequestParser {
   }
 
   private List<PathSegment> parseODataPathSegments(final String odataPathSegmentsAsString) {
-    Scanner pathSegmentScanner = new Scanner(odataPathSegmentsAsString).useDelimiter("/");
+    Scanner pathSegmentScanner = new Scanner(odataPathSegmentsAsString);
+    pathSegmentScanner.useDelimiter("/");
     List<PathSegment> odataPathSegments = new ArrayList<PathSegment>();
     while (pathSegmentScanner.hasNext()) {
       odataPathSegments.add(new ODataPathSegmentImpl(pathSegmentScanner.next(), null));
@@ -468,7 +473,8 @@ public class BatchRequestParser {
   }
 
   private String getBoundary(final String contentType) throws BatchException {
-    Scanner contentTypeScanner = new Scanner(contentType).useDelimiter(";\\s?");
+    Scanner contentTypeScanner = new Scanner(contentType);
+    contentTypeScanner.useDelimiter(";\\s?");
     if (contentTypeScanner.hasNext(REG_EX_CONTENT_TYPE)) {
       contentTypeScanner.next(REG_EX_CONTENT_TYPE);
     } else {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f99f8a35/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
index 0dfe77b..7c2c21b 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/batch/BatchResponseParser.java
@@ -70,7 +70,8 @@ public class BatchResponseParser {
   }
 
   public List<BatchSingleResponse> parse(final InputStream in) throws BatchException {
-    Scanner scanner = new Scanner(in, BatchHelper.DEFAULT_ENCODING).useDelimiter(LF);
+    Scanner scanner = new Scanner(in, BatchHelper.DEFAULT_ENCODING);
+    scanner.useDelimiter(LF);
     List<BatchSingleResponse> responseList;
     try {
       responseList = Collections.unmodifiableList(parseBatchResponse(scanner));
@@ -320,7 +321,8 @@ public class BatchResponseParser {
   }
 
   private String getBoundary(final String contentType) throws BatchException {
-    Scanner contentTypeScanner = new Scanner(contentType).useDelimiter(";\\s?");
+    Scanner contentTypeScanner = new Scanner(contentType);
+    contentTypeScanner.useDelimiter(";\\s?");
     if (contentTypeScanner.hasNext(REG_EX_CONTENT_TYPE)) {
       contentTypeScanner.next(REG_EX_CONTENT_TYPE);
     } else {


[40/50] [abbrv] git commit: [OLINGO-387] Fix metadata deserialization

Posted by mi...@apache.org.
[OLINGO-387] Fix metadata deserialization


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/f414699f
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/f414699f
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/f414699f

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: f414699f06f2aa52cf96933d94e3c30d7ee6c5bb
Parents: 3b3987b
Author: Holzer, Christian <c....@sap.com>
Authored: Tue Aug 5 09:34:16 2014 +0200
Committer: Michael Bolz <mi...@apache.org>
Committed: Tue Aug 5 10:04:37 2014 +0200

----------------------------------------------------------------------
 .../odata2/api/ep/EntityProviderException.java     |  4 ++++
 .../core/ep/consumer/XmlMetadataConsumer.java      | 10 ++++++++--
 .../odata2/core/ep/util/XmlMetadataConstants.java  |  4 +++-
 .../odata-core/src/main/resources/i18n.properties  |  1 +
 .../core/ep/consumer/XmlMetadataConsumerTest.java  | 17 +++++++++++++++++
 5 files changed, 33 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f414699f/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderException.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderException.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderException.java
index 9054372..4c157a9 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderException.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderException.java
@@ -56,6 +56,10 @@ public class EntityProviderException extends ODataMessageException {
   /** INVALID_PARENT_TAG requires 2 content values ('missing attribute name' and 'tag name') */
   public static final MessageReference MISSING_ATTRIBUTE = createMessageReference(EntityProviderException.class,
       "MISSING_ATTRIBUTE");
+  /** MISSING_TAG requires 1 content values ('tag name') */
+  public static final MessageReference MISSING_TAG = createMessageReference(EntityProviderException.class,
+      "MISSING_TAG");
+  /** UNSUPPORTED_PROPERTY_TYPE requires 1 content values ('property type') */
   public static final MessageReference UNSUPPORTED_PROPERTY_TYPE = createMessageReference(
       EntityProviderException.class, "UNSUPPORTED_PROPERTY_TYPE");
   public static final MessageReference INLINECOUNT_INVALID = createMessageReference(EntityProviderException.class,

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f414699f/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
index 1c0776a..0cc25e8 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumer.java
@@ -92,7 +92,7 @@ public class XmlMetadataConsumer {
 
       while (reader.hasNext()
           && !(reader.isEndElement() && Edm.NAMESPACE_EDMX_2007_06.equals(reader.getNamespaceURI())
-          && XmlMetadataConstants.EDM_DATA_SERVICES.equals(reader.getLocalName()))) {
+          && XmlMetadataConstants.EDMX_TAG.equals(reader.getLocalName()))) {
         reader.next();
         if (reader.isStartElement()) {
           extractNamespaces(reader);
@@ -104,8 +104,14 @@ public class XmlMetadataConsumer {
               .getLocalName())) {
             dataServices.setDataServiceVersion(reader.getAttributeValue(Edm.NAMESPACE_M_2007_08, "DataServiceVersion"));
           }
-        }
+        } 
+      }
+
+      if (!reader.isEndElement() || !XmlMetadataConstants.EDMX_TAG.equals(reader.getLocalName())) {
+        throw new EntityProviderException(EntityProviderException.MISSING_TAG
+            .addContent(XmlMetadataConstants.EDMX_TAG));
       }
+
       if (validate) {
         validate();
       }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f414699f/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/util/XmlMetadataConstants.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/util/XmlMetadataConstants.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/util/XmlMetadataConstants.java
index 1a1e558..e3198a5 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/util/XmlMetadataConstants.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/util/XmlMetadataConstants.java
@@ -23,7 +23,9 @@ package org.apache.olingo.odata2.core.ep.util;
  * 
  */
 public class XmlMetadataConstants {
-
+  
+  public static final String EDMX_TAG = "Edmx";
+  
   public static final String EDM_DATA_SERVICES = "DataServices";
   public static final String EDM_DATA_SERVICE_VERSION = "DataServiceVersion";
   public static final String EDM_SCHEMA = "Schema";

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f414699f/odata2-lib/odata-core/src/main/resources/i18n.properties
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/resources/i18n.properties b/odata2-lib/odata-core/src/main/resources/i18n.properties
index b640790..cc2ca5f 100644
--- a/odata2-lib/odata-core/src/main/resources/i18n.properties
+++ b/odata2-lib/odata-core/src/main/resources/i18n.properties
@@ -103,6 +103,7 @@ org.apache.olingo.odata2.api.ep.EntityProviderException.INVALID_CONTENT='%1$s' n
 org.apache.olingo.odata2.api.ep.EntityProviderException.INVALID_PROPERTY_VALUE=Provided value for the property '%1$s' is not compatible with the property.
 org.apache.olingo.odata2.api.ep.EntityProviderException.MISSING_ATTRIBUTE=Mandatory attribute '%1$s' at tag '%2$s' was not found.
 org.apache.olingo.odata2.api.ep.EntityProviderException.MISSING_PROPERTY=Property with name '%1$s' was not found.
+org.apache.olingo.odata2.api.ep.EntityProviderException.MISSING_TAG=Tag with name '%1$s' was not found.
 org.apache.olingo.odata2.api.ep.EntityProviderException.NOT_SET_CHARACTER_ENCODING=Mandatory character encoding is not set.
 org.apache.olingo.odata2.api.ep.EntityProviderException.DOUBLE_PROPERTY=Double occurrence of property with name '%1$s'.
 org.apache.olingo.odata2.api.ep.EntityProviderException.UNSUPPORTED_CHARACTER_ENCODING=The given character encoding '%1$s' is not supported.

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/f414699f/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
index c497c68..bab3454 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/consumer/XmlMetadataConsumerTest.java
@@ -371,6 +371,23 @@ public class XmlMetadataConsumerTest extends AbstractXmlConsumerTest {
     parser.readMetadata(reader, true);
   }
 
+  @Test(expected = EntityProviderException.class)
+  public void testMissingEdmxCloseTag() throws XMLStreamException, EntityProviderException {
+    final String xml = "<edmx:Edmx Version=\"1.0\" xmlns:edmx=\"" + Edm.NAMESPACE_EDMX_2007_06 + "\">"
+        + "<edmx:DataServices m:DataServiceVersion=\"2.0\" xmlns:m=\"" + Edm.NAMESPACE_M_2007_08 + "\">"
+        + "<Schema Namespace=\"" + NAMESPACE + "\" xmlns=\"" + Edm.NAMESPACE_EDM_2008_09 + "\">"
+        + "<EntityType Name= \"Employee\" m:HasStream=\"true\">" + "<Key><PropertyRef Name=\"EmployeeId\"/></Key>"
+        + "<Property Name=\"" + propertyNames[0] + "\" Type=\"Edm.String\" Nullable=\"false\"/>" + "<Property Name=\""
+        + propertyNames[1] + "\" Type=\"Edm.String\" m:FC_TargetPath=\"SyndicationTitle\"/>" + "<Property Name=\""
+        + propertyNames[2] + "\" Type=\"RefScenario.c_Location\" Nullable=\"false\"/>" + "</EntityType>"
+        + "<ComplexType Name=\"c_Location\">" + "<Property Name=\"Country\" Type=\"Edm.String\"/>" + "</ComplexType>"
+        + "</Schema>" + "</edmx:DataServices>";
+
+    XmlMetadataConsumer parser = new XmlMetadataConsumer();
+    XMLStreamReader reader = createStreamReader(xml);
+    parser.readMetadata(reader, true);
+  }
+
   @Test
   public void testAssociation() throws XMLStreamException, EntityProviderException {
     XmlMetadataConsumer parser = new XmlMetadataConsumer();


[03/50] [abbrv] git commit: [OLINGO-308] rollback

Posted by mi...@apache.org.
[OLINGO-308] rollback


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/9a8261a1
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/9a8261a1
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/9a8261a1

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 9a8261a1c7948f459614fb37414757f366eac726
Parents: 7d71cee
Author: Stephan Klevenz <sk...@apache.org>
Authored: Mon Jun 2 16:06:09 2014 +0200
Committer: Stephan Klevenz <sk...@apache.org>
Committed: Mon Jun 2 16:06:09 2014 +0200

----------------------------------------------------------------------
 .../api/ep/EntityProviderWriteProperties.java   |  11 --
 .../ep/producer/AtomEntryEntityProducer.java    | 131 ++++++++-----------
 .../ep/producer/JsonEntryEntityProducer.java    |  35 ++---
 .../core/ep/producer/AtomEntryProducerTest.java |  22 ----
 .../producer/JsonEntryEntityProducerTest.java   |  25 ----
 5 files changed, 69 insertions(+), 155 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9a8261a1/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
index 1fa674f..822fc84 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/ep/EntityProviderWriteProperties.java
@@ -44,7 +44,6 @@ public class EntityProviderWriteProperties {
   private URI selfLink;
   private boolean includeSimplePropertyType;
   private Map<String, Map<String, Object>> additionalLinks;
-  private boolean ignoreKey = false;
 
   private EntityProviderWriteProperties() {}
 
@@ -240,12 +239,6 @@ public class EntityProviderWriteProperties {
       this.properties.selfLink = properties.getSelfLink();
       this.properties.includeSimplePropertyType = properties.includeSimplePropertyType;
       this.properties.additionalLinks = properties.additionalLinks;
-      this.properties.ignoreKey = properties.ignoreKey;
-      return this;
-    }
-
-    public ODataEntityProviderPropertiesBuilder ignoreKey(boolean ignoreKey) {
-      properties.ignoreKey = ignoreKey;
       return this;
     }
   }
@@ -255,8 +248,4 @@ public class EntityProviderWriteProperties {
         EntityProviderWriteProperties.serviceRoot(properties.getServiceRoot());
     return builder.fromProperties(properties);
   }
-
-  public boolean isIgnoreKey() {
-    return ignoreKey;
-  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9a8261a1/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
index 4036df5..95702dd 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryEntityProducer.java
@@ -95,11 +95,7 @@ public class AtomEntryEntityProducer {
       }
 
       // write all atom infos (mandatory and optional)
-      String selfLink = null;
-      if (!properties.isIgnoreKey()) {
-        selfLink = createSelfLink(eia, data, null);
-      }
-
+      String selfLink = createSelfLink(eia, data, null);
       appendAtomMandatoryParts(writer, eia, data, selfLink);
       appendAtomOptionalParts(writer, eia, data);
 
@@ -189,9 +185,7 @@ public class AtomEntryEntityProducer {
       final Map<String, Map<String, Object>> links = properties.getAdditionalLinks();
       final Map<String, Object> key = links == null ? null : links.get(name);
       if (key == null || key.isEmpty()) {
-        if (!properties.isIgnoreKey()) {
-          appendAtomNavigationLink(writer, createSelfLink(eia, data, name), name, isFeed, eia, data);
-        }
+        appendAtomNavigationLink(writer, createSelfLink(eia, data, name), name, isFeed, eia, data);
       } else {
         final EntityInfoAggregator targetEntityInfo = EntityInfoAggregator.create(
             eia.getEntitySet().getRelatedEntitySet((EdmNavigationProperty) eia.getEntityType().getProperty(name)));
@@ -312,13 +306,11 @@ public class AtomEntryEntityProducer {
   private void appendAtomEditLink(final XMLStreamWriter writer, final EntityInfoAggregator eia,
       final Map<String, Object> data, final String selfLink) throws EntityProviderException {
     try {
-      if (selfLink != null) {
-        writer.writeStartElement(FormatXml.ATOM_LINK);
-        writer.writeAttribute(FormatXml.ATOM_HREF, selfLink);
-        writer.writeAttribute(FormatXml.ATOM_REL, Edm.LINK_REL_EDIT);
-        writer.writeAttribute(FormatXml.ATOM_TITLE, eia.getEntityType().getName());
-        writer.writeEndElement();
-      }
+      writer.writeStartElement(FormatXml.ATOM_LINK);
+      writer.writeAttribute(FormatXml.ATOM_HREF, selfLink);
+      writer.writeAttribute(FormatXml.ATOM_REL, Edm.LINK_REL_EDIT);
+      writer.writeAttribute(FormatXml.ATOM_TITLE, eia.getEntityType().getName());
+      writer.writeEndElement();
     } catch (XMLStreamException e) {
       throw new EntityProviderException(EntityProviderException.COMMON, e);
     } catch (EdmException e) {
@@ -329,27 +321,25 @@ public class AtomEntryEntityProducer {
   private void appendAtomContentLink(final XMLStreamWriter writer, final EntityInfoAggregator eia,
       final Map<String, Object> data, final String selfLink) throws EntityProviderException, EdmException {
     try {
-      if (selfLink != null) {
-        String mediaResourceMimeType = properties.getMediaResourceMimeType();
-        if (mediaResourceMimeType == null) {
-          EdmMapping entityTypeMapping = eia.getEntityType().getMapping();
-          if (entityTypeMapping != null) {
-            String mediaResourceMimeTypeKey = entityTypeMapping.getMediaResourceMimeTypeKey();
-            if (mediaResourceMimeTypeKey != null) {
-              mediaResourceMimeType = (String) data.get(mediaResourceMimeTypeKey);
-            }
-          }
-          if (mediaResourceMimeType == null) {
-            mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
+      String mediaResourceMimeType = properties.getMediaResourceMimeType();
+      if (mediaResourceMimeType == null) {
+        EdmMapping entityTypeMapping = eia.getEntityType().getMapping();
+        if (entityTypeMapping != null) {
+          String mediaResourceMimeTypeKey = entityTypeMapping.getMediaResourceMimeTypeKey();
+          if (mediaResourceMimeTypeKey != null) {
+            mediaResourceMimeType = (String) data.get(mediaResourceMimeTypeKey);
           }
         }
-
-        writer.writeStartElement(FormatXml.ATOM_LINK);
-        writer.writeAttribute(FormatXml.ATOM_HREF, selfLink + "/$value");
-        writer.writeAttribute(FormatXml.ATOM_REL, Edm.LINK_REL_EDIT_MEDIA);
-        writer.writeAttribute(FormatXml.ATOM_TYPE, mediaResourceMimeType);
-        writer.writeEndElement();
+        if (mediaResourceMimeType == null) {
+          mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
+        }
       }
+
+      writer.writeStartElement(FormatXml.ATOM_LINK);
+      writer.writeAttribute(FormatXml.ATOM_HREF, selfLink + "/$value");
+      writer.writeAttribute(FormatXml.ATOM_REL, Edm.LINK_REL_EDIT_MEDIA);
+      writer.writeAttribute(FormatXml.ATOM_TYPE, mediaResourceMimeType);
+      writer.writeEndElement();
     } catch (XMLStreamException e) {
       throw new EntityProviderException(EntityProviderException.COMMON, e);
     }
@@ -358,44 +348,42 @@ public class AtomEntryEntityProducer {
   private void appendAtomContentPart(final XMLStreamWriter writer, final EntityInfoAggregator eia,
       final Map<String, Object> data, final String selfLink) throws EntityProviderException, EdmException {
     try {
-      if (selfLink != null) {
-        // We have to support the media resource mime type at the properties till version 1.2 then this can be
-        // refactored
-        String mediaResourceMimeType = properties.getMediaResourceMimeType();
-        EdmMapping entityTypeMapping = eia.getEntityType().getMapping();
-        String self = null;
 
-        if (entityTypeMapping != null) {
-          String mediaResourceSourceKey = entityTypeMapping.getMediaResourceSourceKey();
-          if (mediaResourceSourceKey != null) {
-            self = (String) data.get(mediaResourceSourceKey);
-          }
-          if (self == null) {
-            self = selfLink + "/$value";
-          }
-          if (mediaResourceMimeType == null) {
-            String mediaResourceMimeTypeKey =
-                entityTypeMapping.getMimeType() != null ? entityTypeMapping.getMimeType()
-                    : entityTypeMapping.getMediaResourceMimeTypeKey();
-            if (mediaResourceMimeTypeKey != null) {
-              mediaResourceMimeType = (String) data.get(mediaResourceMimeTypeKey);
-            }
-            if (mediaResourceMimeType == null) {
-              mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
-            }
-          }
-        } else {
+      // We have to support the media resource mime type at the properties till version 1.2 then this can be refactored
+      String mediaResourceMimeType = properties.getMediaResourceMimeType();
+      EdmMapping entityTypeMapping = eia.getEntityType().getMapping();
+      String self = null;
+
+      if (entityTypeMapping != null) {
+        String mediaResourceSourceKey = entityTypeMapping.getMediaResourceSourceKey();
+        if (mediaResourceSourceKey != null) {
+          self = (String) data.get(mediaResourceSourceKey);
+        }
+        if (self == null) {
           self = selfLink + "/$value";
+        }
+        if (mediaResourceMimeType == null) {
+          String mediaResourceMimeTypeKey =
+              entityTypeMapping.getMimeType() != null ? entityTypeMapping.getMimeType()
+                  : entityTypeMapping.getMediaResourceMimeTypeKey();
+          if (mediaResourceMimeTypeKey != null) {
+            mediaResourceMimeType = (String) data.get(mediaResourceMimeTypeKey);
+          }
           if (mediaResourceMimeType == null) {
             mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
           }
         }
-
-        writer.writeStartElement(FormatXml.ATOM_CONTENT);
-        writer.writeAttribute(FormatXml.ATOM_TYPE, mediaResourceMimeType);
-        writer.writeAttribute(FormatXml.ATOM_SRC, self);
-        writer.writeEndElement();
+      } else {
+        self = selfLink + "/$value";
+        if (mediaResourceMimeType == null) {
+          mediaResourceMimeType = ContentType.APPLICATION_OCTET_STREAM.toString();
+        }
       }
+
+      writer.writeStartElement(FormatXml.ATOM_CONTENT);
+      writer.writeAttribute(FormatXml.ATOM_TYPE, mediaResourceMimeType);
+      writer.writeAttribute(FormatXml.ATOM_SRC, self);
+      writer.writeEndElement();
     } catch (XMLStreamException e) {
       throw new EntityProviderException(EntityProviderException.COMMON, e);
     }
@@ -404,12 +392,10 @@ public class AtomEntryEntityProducer {
   private void appendAtomMandatoryParts(final XMLStreamWriter writer, final EntityInfoAggregator eia,
       final Map<String, Object> data, final String selfLink) throws EntityProviderException {
     try {
-      if (selfLink != null) {
-        writer.writeStartElement(FormatXml.ATOM_ID);
-        location = properties.getServiceRoot().toASCIIString() + selfLink;
-        writer.writeCharacters(location);
-        writer.writeEndElement();
-      }
+      writer.writeStartElement(FormatXml.ATOM_ID);
+      location = properties.getServiceRoot().toASCIIString() + selfLink;
+      writer.writeCharacters(location);
+      writer.writeEndElement();
 
       writer.writeStartElement(FormatXml.ATOM_TITLE);
       writer.writeAttribute(FormatXml.ATOM_TYPE, FormatXml.ATOM_TEXT);
@@ -585,10 +571,7 @@ public class AtomEntryEntityProducer {
           if (isNotMappedViaCustomMapping(propertyInfo)) {
             Object value = data.get(propertyName);
             XmlPropertyEntityProducer aps = new XmlPropertyEntityProducer(properties.isIncludeSimplePropertyType());
-
-            if (!(eia.getKeyPropertyInfos().contains(propertyInfo) && properties.isIgnoreKey())) {
-              aps.append(writer, propertyInfo.getName(), propertyInfo, value);
-            }
+            aps.append(writer, propertyInfo.getName(), propertyInfo, value);
           }
         }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9a8261a1/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
index c1b52fa..8ad5d42 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducer.java
@@ -45,7 +45,6 @@ import org.apache.olingo.odata2.api.exception.ODataApplicationException;
 import org.apache.olingo.odata2.core.commons.ContentType;
 import org.apache.olingo.odata2.core.commons.Encoder;
 import org.apache.olingo.odata2.core.ep.aggregator.EntityInfoAggregator;
-import org.apache.olingo.odata2.core.ep.aggregator.EntityPropertyInfo;
 import org.apache.olingo.odata2.core.ep.util.FormatJson;
 import org.apache.olingo.odata2.core.ep.util.JsonStreamWriter;
 
@@ -81,10 +80,8 @@ public class JsonEntryEntityProducer {
 
       writeProperties(entityInfo, data, type);
 
-      if (!properties.isIgnoreKey()) {
-        writeNavigationProperties(writer, entityInfo, data, type);
-      }
-      
+      writeNavigationProperties(writer, entityInfo, data, type);
+
       jsonStreamWriter.endObject();
 
       if (isRootElement) {
@@ -178,15 +175,10 @@ public class JsonEntryEntityProducer {
       final EdmEntityType type) throws EdmException, EntityProviderException, IOException {
     for (final String propertyName : type.getPropertyNames()) {
       if (entityInfo.getSelectedPropertyNames().contains(propertyName)) {
-
-        EntityPropertyInfo propertyInfo = entityInfo.getPropertyInfo(propertyName);
-        if (!(entityInfo.getKeyPropertyInfos().contains(propertyInfo) && properties.isIgnoreKey())) {
-
-          jsonStreamWriter.separator();
-          jsonStreamWriter.name(propertyName);
-          JsonPropertyEntityProducer.appendPropertyValue(jsonStreamWriter, entityInfo.getPropertyInfo(propertyName),
-              data.get(propertyName));
-        }
+        jsonStreamWriter.separator();
+        jsonStreamWriter.name(propertyName);
+        JsonPropertyEntityProducer.appendPropertyValue(jsonStreamWriter, entityInfo.getPropertyInfo(propertyName),
+            data.get(propertyName));
       }
     }
   }
@@ -195,15 +187,12 @@ public class JsonEntryEntityProducer {
       final EdmEntityType type) throws IOException, EntityProviderException, EdmException {
     jsonStreamWriter.name(FormatJson.METADATA);
     jsonStreamWriter.beginObject();
-    String self = null;
-    if (!properties.isIgnoreKey()) {
-      self = AtomEntryEntityProducer.createSelfLink(entityInfo, data, null);
-      location = (properties.getServiceRoot() == null ? "" : properties.getServiceRoot().toASCIIString()) + self;
-      jsonStreamWriter.namedStringValue(FormatJson.ID, location);
-      jsonStreamWriter.separator();
-      jsonStreamWriter.namedStringValue(FormatJson.URI, location);
-      jsonStreamWriter.separator();
-    }
+    final String self = AtomEntryEntityProducer.createSelfLink(entityInfo, data, null);
+    location = (properties.getServiceRoot() == null ? "" : properties.getServiceRoot().toASCIIString()) + self;
+    jsonStreamWriter.namedStringValue(FormatJson.ID, location);
+    jsonStreamWriter.separator();
+    jsonStreamWriter.namedStringValue(FormatJson.URI, location);
+    jsonStreamWriter.separator();
     jsonStreamWriter.namedStringValueRaw(FormatJson.TYPE, type.getNamespace() + Edm.DELIMITER + type.getName());
     eTag = AtomEntryEntityProducer.createETag(entityInfo, data);
     if (eTag != null) {

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9a8261a1/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
index cd65a8c..a87698d 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/AtomEntryProducerTest.java
@@ -56,7 +56,6 @@ import org.apache.olingo.odata2.api.processor.ODataResponse;
 import org.apache.olingo.odata2.core.commons.ContentType;
 import org.apache.olingo.odata2.core.ep.AbstractProviderTest;
 import org.apache.olingo.odata2.core.ep.AtomEntityProvider;
-import org.apache.olingo.odata2.core.ep.consumer.XmlEntityConsumer;
 import org.apache.olingo.odata2.testutil.helper.StringHelper;
 import org.apache.olingo.odata2.testutil.helper.XMLUnitHelper;
 import org.apache.olingo.odata2.testutil.mock.MockFacade;
@@ -863,25 +862,4 @@ public class AtomEntryProducerTest extends AbstractProviderTest {
   private void verifyTagOrdering(final String xmlString, final String... toCheckTags) {
     XMLUnitHelper.verifyTagOrdering(xmlString, toCheckTags);
   }
-
-  @Test
-  public void testPostEntryWithoutId() throws Exception {
-    roomData.remove("Id");
-
-    final EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(BASE_URI).ignoreKey(true).build();
-    AtomEntityProvider ser = createAtomEntityProvider();
-    ODataResponse response =
-        ser.writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms"), roomData, properties);
-
-    String xmlString = verifyResponse(response);
-
-    assertXpathExists("/a:entry", xmlString);
-    assertXpathEvaluatesTo(BASE_URI.toASCIIString(), "/a:entry/@xml:base", xmlString);
-
-    assertXpathExists("/a:entry/a:content", xmlString);
-    assertXpathEvaluatesTo(ContentType.APPLICATION_XML.toString(), "/a:entry/a:content/@type", xmlString);
-
-    assertXpathExists("/a:entry/a:content/m:properties", xmlString);
-  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/9a8261a1/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
index 7593349..8efd99a 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonEntryEntityProducerTest.java
@@ -18,8 +18,6 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.core.ep.producer;
 
-import static org.custommonkey.xmlunit.XMLAssert.assertXpathEvaluatesTo;
-import static org.custommonkey.xmlunit.XMLAssert.assertXpathExists;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
@@ -55,8 +53,6 @@ import org.apache.olingo.odata2.api.ep.callback.WriteFeedCallbackResult;
 import org.apache.olingo.odata2.api.exception.ODataApplicationException;
 import org.apache.olingo.odata2.api.processor.ODataResponse;
 import org.apache.olingo.odata2.api.uri.ExpandSelectTreeNode;
-import org.apache.olingo.odata2.core.commons.ContentType;
-import org.apache.olingo.odata2.core.ep.AtomEntityProvider;
 import org.apache.olingo.odata2.core.ep.JsonEntityProvider;
 import org.apache.olingo.odata2.testutil.fit.BaseTest;
 import org.apache.olingo.odata2.testutil.helper.StringHelper;
@@ -774,25 +770,4 @@ public class JsonEntryEntityProducerTest extends BaseTest {
     assertNotNull(json);
     return json;
   }
-
-  @Test
-  public void testPostEntryWithoutId() throws Exception {
-    HashMap<String, Object> roomData = new HashMap<String, Object>();
-
-    roomData.put("Name", "Neu Schwanstein");
-    roomData.put("Seats", new Integer(20));
-    roomData.put("Version", new Integer(3));
-
-    final EntityProviderWriteProperties properties =
-        EntityProviderWriteProperties.serviceRoot(URI.create(BASE_URI)).ignoreKey(true).build();
-    ODataResponse response =
-        new JsonEntityProvider().writeEntry(MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Rooms"),
-            roomData, properties);
-
-    String json = verifyResponse(response);
-
-    assertEquals("{\"d\":{\"__metadata\":{\"type\":\"RefScenario.Room\",\"etag\":\"W/\\\"3\\\"\"},"
-        + "\"Name\":\"Neu Schwanstein\",\"Seats\":20,\"Version\":3}}", json);
-  }
-
 }


[29/50] [abbrv] git commit: [OLINGO-336] Set 2.0.0-RC01 version

Posted by mi...@apache.org.
[OLINGO-336] Set 2.0.0-RC01 version


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/5bd5a22f
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/5bd5a22f
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/5bd5a22f

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 5bd5a22fa24570dcb9a0135389deed0d6b4bef95
Parents: cff5ed8
Author: Michael Bolz <mi...@apache.org>
Authored: Mon Jul 7 07:36:12 2014 +0200
Committer: Michael Bolz <mi...@apache.org>
Committed: Mon Jul 7 07:36:12 2014 +0200

----------------------------------------------------------------------
 odata2-annotation-processor/annotation-processor-api/pom.xml     | 2 +-
 odata2-annotation-processor/annotation-processor-core/pom.xml    | 2 +-
 odata2-annotation-processor/annotation-processor-ref/pom.xml     | 2 +-
 odata2-annotation-processor/annotation-processor-web/pom.xml     | 2 +-
 odata2-annotation-processor/pom.xml                              | 2 +-
 odata2-dist/janos/pom.xml                                        | 2 +-
 odata2-dist/javadoc/pom.xml                                      | 2 +-
 odata2-dist/jpa/pom.xml                                          | 2 +-
 odata2-dist/lib/pom.xml                                          | 2 +-
 odata2-dist/pom.xml                                              | 2 +-
 odata2-dist/ref/pom.xml                                          | 2 +-
 odata2-jpa-processor/jpa-api/pom.xml                             | 2 +-
 odata2-jpa-processor/jpa-core/pom.xml                            | 2 +-
 odata2-jpa-processor/jpa-ref/pom.xml                             | 2 +-
 odata2-jpa-processor/jpa-web/pom.xml                             | 2 +-
 odata2-jpa-processor/pom.xml                                     | 2 +-
 odata2-lib/odata-annotation/pom.xml                              | 2 +-
 odata2-lib/odata-api/pom.xml                                     | 2 +-
 odata2-lib/odata-core/pom.xml                                    | 2 +-
 odata2-lib/odata-fit/pom.xml                                     | 2 +-
 odata2-lib/odata-ref/pom.xml                                     | 2 +-
 odata2-lib/odata-testutil/pom.xml                                | 2 +-
 odata2-lib/odata-web/pom.xml                                     | 2 +-
 odata2-lib/pom.xml                                               | 2 +-
 odata2-sample/cars-annotation-archetype/pom.xml                  | 4 ++--
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/cars-jpa-archetype/pom.xml                         | 2 +-
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/cars-service-archetype/pom.xml                     | 4 ++--
 .../src/main/resources/archetype-resources/pom.xml               | 2 +-
 odata2-sample/pom.xml                                            | 2 +-
 pom.xml                                                          | 2 +-
 32 files changed, 34 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-annotation-processor/annotation-processor-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-api/pom.xml b/odata2-annotation-processor/annotation-processor-api/pom.xml
index dd8834f..bbbfb94 100644
--- a/odata2-annotation-processor/annotation-processor-api/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-api/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>2.0.0-RC01</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-annotation-processor/annotation-processor-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/pom.xml b/odata2-annotation-processor/annotation-processor-core/pom.xml
index 701eb29..ae5a115 100644
--- a/odata2-annotation-processor/annotation-processor-core/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-core/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>2.0.0-RC01</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-annotation-processor/annotation-processor-ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-ref/pom.xml b/odata2-annotation-processor/annotation-processor-ref/pom.xml
index fff81a0..f631752 100644
--- a/odata2-annotation-processor/annotation-processor-ref/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-ref/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>2.0.0-RC01</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-annotation-processor/annotation-processor-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-web/pom.xml b/odata2-annotation-processor/annotation-processor-web/pom.xml
index 5551fce..94f087f 100644
--- a/odata2-annotation-processor/annotation-processor-web/pom.xml
+++ b/odata2-annotation-processor/annotation-processor-web/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-annotation-processor</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>2.0.0-RC01</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-annotation-processor/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/pom.xml b/odata2-annotation-processor/pom.xml
index 2933c2f..c3192e2 100644
--- a/odata2-annotation-processor/pom.xml
+++ b/odata2-annotation-processor/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-dist/janos/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/janos/pom.xml b/odata2-dist/janos/pom.xml
index 9e4983b..7dda7fd 100644
--- a/odata2-dist/janos/pom.xml
+++ b/odata2-dist/janos/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-dist/javadoc/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/javadoc/pom.xml b/odata2-dist/javadoc/pom.xml
index c7d5900..13555cd 100644
--- a/odata2-dist/javadoc/pom.xml
+++ b/odata2-dist/javadoc/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-dist/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/jpa/pom.xml b/odata2-dist/jpa/pom.xml
index 089b4dd..a9ff0a7 100644
--- a/odata2-dist/jpa/pom.xml
+++ b/odata2-dist/jpa/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-dist/lib/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/lib/pom.xml b/odata2-dist/lib/pom.xml
index 4614208..2bfa985 100644
--- a/odata2-dist/lib/pom.xml
+++ b/odata2-dist/lib/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-dist/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/pom.xml b/odata2-dist/pom.xml
index e550aa2..561568b 100644
--- a/odata2-dist/pom.xml
+++ b/odata2-dist/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-dist/ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-dist/ref/pom.xml b/odata2-dist/ref/pom.xml
index 81a25d1..341e8e6 100644
--- a/odata2-dist/ref/pom.xml
+++ b/odata2-dist/ref/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-dist</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-jpa-processor/jpa-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/pom.xml b/odata2-jpa-processor/jpa-api/pom.xml
index e47e8fa..af3f742 100644
--- a/odata2-jpa-processor/jpa-api/pom.xml
+++ b/odata2-jpa-processor/jpa-api/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.0.0-RC01</version>
 		<relativePath>../</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-jpa-processor/jpa-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/pom.xml b/odata2-jpa-processor/jpa-core/pom.xml
index fe763df..f5c2079 100644
--- a/odata2-jpa-processor/jpa-core/pom.xml
+++ b/odata2-jpa-processor/jpa-core/pom.xml
@@ -24,7 +24,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.0.0-RC01</version>
 		<relativePath>../</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/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 c79c3ba..65d748e 100644
--- a/odata2-jpa-processor/jpa-ref/pom.xml
+++ b/odata2-jpa-processor/jpa-ref/pom.xml
@@ -17,7 +17,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.0.0-RC01</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-jpa-processor/jpa-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-web/pom.xml b/odata2-jpa-processor/jpa-web/pom.xml
index a812857..b86b714 100644
--- a/odata2-jpa-processor/jpa-web/pom.xml
+++ b/odata2-jpa-processor/jpa-web/pom.xml
@@ -21,7 +21,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-jpa-processor</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.0.0-RC01</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-jpa-processor/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/pom.xml b/odata2-jpa-processor/pom.xml
index 2e1a83a..ce51038 100644
--- a/odata2-jpa-processor/pom.xml
+++ b/odata2-jpa-processor/pom.xml
@@ -18,7 +18,7 @@
     <parent>
       <groupId>org.apache.olingo</groupId>
       <artifactId>olingo-odata2-parent</artifactId>
-      <version>2.0.0-SNAPSHOT</version>
+      <version>2.0.0-RC01</version>
       <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-lib/odata-annotation/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-annotation/pom.xml b/odata2-lib/odata-annotation/pom.xml
index 26ba8fc..4876156 100644
--- a/odata2-lib/odata-annotation/pom.xml
+++ b/odata2-lib/odata-annotation/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-lib</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>2.0.0-RC01</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-lib/odata-api/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/pom.xml b/odata2-lib/odata-api/pom.xml
index 390180b..d898e7e 100644
--- a/odata2-lib/odata-api/pom.xml
+++ b/odata2-lib/odata-api/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>2.0.0-RC01</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-lib/odata-core/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/pom.xml b/odata2-lib/odata-core/pom.xml
index defa7e9..1264824 100644
--- a/odata2-lib/odata-core/pom.xml
+++ b/odata2-lib/odata-core/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.0.0-RC01</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-lib/odata-fit/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-fit/pom.xml b/odata2-lib/odata-fit/pom.xml
index b202c50..be47df2 100644
--- a/odata2-lib/odata-fit/pom.xml
+++ b/odata2-lib/odata-fit/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.0.0-RC01</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-lib/odata-ref/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-ref/pom.xml b/odata2-lib/odata-ref/pom.xml
index 8d7b3aa..df81077 100644
--- a/odata2-lib/odata-ref/pom.xml
+++ b/odata2-lib/odata-ref/pom.xml
@@ -28,7 +28,7 @@
 	<parent>
 		<groupId>org.apache.olingo</groupId>
 		<artifactId>olingo-odata2-lib</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.0.0-RC01</version>
 		<relativePath>..</relativePath>
 	</parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-lib/odata-testutil/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-testutil/pom.xml b/odata2-lib/odata-testutil/pom.xml
index 9365d2c..cf9b4f4 100644
--- a/odata2-lib/odata-testutil/pom.xml
+++ b/odata2-lib/odata-testutil/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-lib</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>2.0.0-RC01</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-lib/odata-web/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-web/pom.xml b/odata2-lib/odata-web/pom.xml
index 5127c79..7d0e181 100644
--- a/odata2-lib/odata-web/pom.xml
+++ b/odata2-lib/odata-web/pom.xml
@@ -17,7 +17,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-lib</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-lib/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-lib/pom.xml b/odata2-lib/pom.xml
index 4d6aff5..84c8486 100644
--- a/odata2-lib/pom.xml
+++ b/odata2-lib/pom.xml
@@ -18,7 +18,7 @@
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-parent</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-sample/cars-annotation-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/pom.xml b/odata2-sample/cars-annotation-archetype/pom.xml
index 7c429b2..960abe5 100644
--- a/odata2-sample/cars-annotation-archetype/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/pom.xml
@@ -16,13 +16,13 @@
   <groupId>org.apache.olingo</groupId>
   <artifactId>olingo-odata2-sample-cars-annotation-archetype</artifactId>
   <name>${project.artifactId}</name>
-  <version>2.0.0-SNAPSHOT</version>
+  <version>2.0.0-RC01</version>
   <packaging>maven-archetype</packaging>
 
   <parent>
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-sample</artifactId>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>2.0.0-RC01</version>
     <relativePath>..</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
index c5e3588..24a0a30 100644
--- a/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-annotation-archetype/src/main/resources/archetype-resources/pom.xml
@@ -32,7 +32,7 @@
     <version.servlet-api>2.5</version.servlet-api>
     <version.jaxrs-api>2.0-m10</version.jaxrs-api>
     <version.slf4j>1.7.1</version.slf4j>
-    <version.olingo>2.0.0-SNAPSHOT</version.olingo>
+    <version.olingo>2.0.0-RC01</version.olingo>
   </properties>
 
   <build>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-sample/cars-jpa-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/pom.xml b/odata2-sample/cars-jpa-archetype/pom.xml
index dd67068..f6df4db 100644
--- a/odata2-sample/cars-jpa-archetype/pom.xml
+++ b/odata2-sample/cars-jpa-archetype/pom.xml
@@ -23,7 +23,7 @@
 	<parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-sample</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 	

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
index 2ae2859..2692568 100644
--- a/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-jpa-archetype/src/main/resources/archetype-resources/pom.xml
@@ -20,7 +20,7 @@
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<version.cxf>2.7.6</version.cxf>
-		<version.olingo>2.0.0-SNAPSHOT</version.olingo>
+		<version.olingo>2.0.0-RC01</version.olingo>
 		<version.eclipselink>2.5.1</version.eclipselink>
 		<version.javax.persistence>2.0.5</version.javax.persistence>
 	</properties>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-sample/cars-service-archetype/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/pom.xml b/odata2-sample/cars-service-archetype/pom.xml
index 1ec115e..d87f102 100644
--- a/odata2-sample/cars-service-archetype/pom.xml
+++ b/odata2-sample/cars-service-archetype/pom.xml
@@ -24,14 +24,14 @@
     <groupId>org.apache.olingo</groupId>
     <artifactId>olingo-odata2-sample-cars-service-archetype</artifactId>
     <name>${project.artifactId}</name>
-    <version>2.0.0-SNAPSHOT</version>
+    <version>2.0.0-RC01</version>
 
     <packaging>maven-archetype</packaging>
 
     <parent>
         <groupId>org.apache.olingo</groupId>
         <artifactId>olingo-odata2-sample</artifactId>
-        <version>2.0.0-SNAPSHOT</version>
+        <version>2.0.0-RC01</version>
         <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
index cac867c..eda2ebe 100644
--- a/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
+++ b/odata2-sample/cars-service-archetype/src/main/resources/archetype-resources/pom.xml
@@ -20,7 +20,7 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<version.cxf>2.7.6</version.cxf>
 		<version.slf4j>1.7.1</version.slf4j>
-		<version.olingo>2.0.0-SNAPSHOT</version.olingo>
+		<version.olingo>2.0.0-RC01</version.olingo>
 	</properties>
 
 	<build>

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/odata2-sample/pom.xml
----------------------------------------------------------------------
diff --git a/odata2-sample/pom.xml b/odata2-sample/pom.xml
index 427a6ec..580c74e 100644
--- a/odata2-sample/pom.xml
+++ b/odata2-sample/pom.xml
@@ -15,7 +15,7 @@
     <parent>
       <groupId>org.apache.olingo</groupId>
       <artifactId>olingo-odata2-parent</artifactId>
-      <version>2.0.0-SNAPSHOT</version>
+      <version>2.0.0-RC01</version>
       <relativePath>..</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5bd5a22f/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index d657773..bb3f8bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
 
 	<groupId>org.apache.olingo</groupId>
 	<artifactId>olingo-odata2-parent</artifactId>
-	<version>2.0.0-SNAPSHOT</version>
+	<version>2.0.0-RC01</version>
 	<packaging>pom</packaging>
 
 	<name>${project.artifactId}</name>


[13/50] [abbrv] git commit: [OLINGO-306] Fix - Clear Join Column list.

Posted by mi...@apache.org.
[OLINGO-306] Fix - Clear Join Column list.

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/a30379ef
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/a30379ef
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/a30379ef

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: a30379ef65e4d0b6b086759f40ee82c300fa6dbf
Parents: 9f638e5
Author: Chandan V A <ch...@sap.com>
Authored: Mon Jun 16 09:49:48 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Mon Jun 16 09:49:48 2014 +0530

----------------------------------------------------------------------
 .../olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java      | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/a30379ef/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
index 7298a58..0726626 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
@@ -348,6 +348,7 @@ public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
         ODataJPARuntimeException {
 
       AnnotatedElement annotatedElement = (AnnotatedElement) jpaAttribute.getJavaMember();
+      bJoinColumns = null;
       if (annotatedElement == null) {
         return;
       }


[09/50] [abbrv] git commit: [OLINGO-312] Fix NULL Pointer Exception

Posted by mi...@apache.org.
[OLINGO-312] Fix NULL Pointer Exception

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/93590ee5
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/93590ee5
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/93590ee5

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 93590ee5cff60d87b8eefbcdc54c79272cc1c259
Parents: 41d9910
Author: Chandan V A <ch...@sap.com>
Authored: Sun Jun 15 15:29:29 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sun Jun 15 15:29:29 2014 +0530

----------------------------------------------------------------------
 .../core/access/model/JPAEdmMappingModelService.java   | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/93590ee5/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmMappingModelService.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmMappingModelService.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmMappingModelService.java
index 4b5d396..8bec453 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmMappingModelService.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/model/JPAEdmMappingModelService.java
@@ -27,6 +27,7 @@ import javax.xml.bind.Unmarshaller;
 import org.apache.olingo.odata2.jpa.processor.api.ODataJPAContext;
 import org.apache.olingo.odata2.jpa.processor.api.access.JPAEdmMappingModelAccess;
 import org.apache.olingo.odata2.jpa.processor.api.exception.ODataJPAModelException;
+import org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmExtension;
 import org.apache.olingo.odata2.jpa.processor.api.model.mapping.JPAAttributeMapType.JPAAttribute;
 import org.apache.olingo.odata2.jpa.processor.api.model.mapping.JPAEdmMappingModel;
 import org.apache.olingo.odata2.jpa.processor.api.model.mapping.JPAEmbeddableTypeMapType;
@@ -42,8 +43,16 @@ public class JPAEdmMappingModelService implements JPAEdmMappingModelAccess {
   private String mappingModelName;
 
   public JPAEdmMappingModelService(final ODataJPAContext ctx) {
-    mappingModelExists = (mappingModelName = ctx.getJPAEdmMappingModel()) == null ?
-        (((mappingModelStream = ctx.getJPAEdmExtension().getJPAEdmMappingModelStream()) == null) ? false : true) : true;
+    JPAEdmExtension ext = null;
+    mappingModelName = ctx.getJPAEdmMappingModel();
+    if (mappingModelName == null) {
+      ext = ctx.getJPAEdmExtension();
+      if (ext != null) {
+        mappingModelStream = ext.getJPAEdmMappingModelStream();
+      }
+    }
+
+    mappingModelExists = mappingModelName != null || mappingModelStream != null ? true : false;
   }
 
   @Override


[47/50] [abbrv] git commit: [OLINGO-412] OmitJson Wrapper of link and links

Posted by mi...@apache.org.
[OLINGO-412] OmitJson Wrapper of link and links


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/7852087f
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/7852087f
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/7852087f

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 7852087f9523ee1674d44d215ffd5f9a7caca2be
Parents: 7092ad3
Author: Christian Amend <ch...@apache.org>
Authored: Tue Aug 19 13:30:09 2014 +0200
Committer: Christian Amend <ch...@apache.org>
Committed: Tue Aug 19 13:30:09 2014 +0200

----------------------------------------------------------------------
 .../ep/producer/JsonLinkEntityProducer.java     | 10 ++-
 .../ep/producer/JsonLinksEntityProducer.java    | 11 +--
 .../ep/producer/JsonLinkEntityProducerTest.java | 17 +++++
 .../producer/JsonLinksEntityProducerTest.java   | 76 ++++++++++++++++++++
 4 files changed, 107 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7852087f/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducer.java
index 69a0c5a..9ddfddd 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducer.java
@@ -47,10 +47,14 @@ public class JsonLinkEntityProducer {
     final String uri = (properties.getServiceRoot() == null ? "" : properties.getServiceRoot().toASCIIString())
         + AtomEntryEntityProducer.createSelfLink(entityInfo, data, null);
     try {
-      jsonStreamWriter.beginObject()
-          .name(FormatJson.D);
+      if (!properties.isOmitJsonWrapper()) {
+        jsonStreamWriter.beginObject()
+            .name(FormatJson.D);
+      }
       appendUri(jsonStreamWriter, uri);
-      jsonStreamWriter.endObject();
+      if (!properties.isOmitJsonWrapper()) {
+        jsonStreamWriter.endObject();
+      }
     } catch (final IOException e) {
       throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
           .getSimpleName()), e);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7852087f/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducer.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducer.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducer.java
index a3a5e79..858456c 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducer.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducer.java
@@ -47,8 +47,10 @@ public class JsonLinksEntityProducer {
     JsonStreamWriter jsonStreamWriter = new JsonStreamWriter(writer);
 
     try {
-      jsonStreamWriter.beginObject()
-          .name(FormatJson.D);
+      if (!properties.isOmitJsonWrapper()) {
+        jsonStreamWriter.beginObject()
+            .name(FormatJson.D);
+      }
 
       if (properties.getInlineCountType() == InlineCount.ALLPAGES) {
         final int inlineCount = properties.getInlineCount() == null ? 0 : properties.getInlineCount();
@@ -75,8 +77,9 @@ public class JsonLinksEntityProducer {
       if (properties.getInlineCountType() == InlineCount.ALLPAGES) {
         jsonStreamWriter.endObject();
       }
-
-      jsonStreamWriter.endObject();
+      if (!properties.isOmitJsonWrapper()) {
+        jsonStreamWriter.endObject();
+      }
     } catch (final IOException e) {
       throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass()
           .getSimpleName()), e);

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7852087f/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducerTest.java
index b23ac7b..91785b5 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonLinkEntityProducerTest.java
@@ -44,6 +44,23 @@ public class JsonLinkEntityProducerTest extends BaseTest {
       EntityProviderWriteProperties.serviceRoot(URI.create(BASE_URI)).build();
 
   @Test
+  public void omitJsonWrapperOnLink() throws Exception {
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    Map<String, Object> employeeData = new HashMap<String, Object>();
+    employeeData.put("EmployeeId", "1");
+
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).build();
+    final ODataResponse response = new JsonEntityProvider().writeLink(entitySet, employeeData, properties);
+    assertNotNull(response);
+    assertNotNull(response.getEntity());
+
+    final String json = StringHelper.inputStreamToString((InputStream) response.getEntity());
+    assertNotNull(json);
+    assertEquals("{\"uri\":\"" + BASE_URI + "Employees('1')\"}", json);
+  }
+
+  @Test
   public void serializeEmployeeLink() throws Exception {
     final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
     Map<String, Object> employeeData = new HashMap<String, Object>();

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7852087f/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducerTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducerTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducerTest.java
index bef9ecb..2365d29 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducerTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/ep/producer/JsonLinksEntityProducerTest.java
@@ -47,6 +47,82 @@ public class JsonLinksEntityProducerTest extends BaseTest {
       EntityProviderWriteProperties.serviceRoot(URI.create(BASE_URI)).build();
 
   @Test
+  public void omitJsonWrapperSingleLink() throws Exception {
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    Map<String, Object> employeeData = new HashMap<String, Object>();
+    employeeData.put("EmployeeId", "1");
+    ArrayList<Map<String, Object>> employeesData = new ArrayList<Map<String, Object>>();
+    employeesData.add(employeeData);
+
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).build();
+    final ODataResponse response = new JsonEntityProvider().writeLinks(entitySet, employeesData, properties);
+    assertNotNull(response);
+    assertNotNull(response.getEntity());
+    assertNull("EntitypProvider must not set content header", response.getContentHeader());
+
+    final String json = StringHelper.inputStreamToString((InputStream) response.getEntity());
+    assertNotNull(json);
+    assertEquals("[{\"uri\":\"" + BASE_URI + "Employees('1')\"}]", json);
+  }
+
+  @Test
+  public void omitJsonWrapperSingleLinks() throws Exception {
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    Map<String, Object> employee1 = new HashMap<String, Object>();
+    employee1.put("EmployeeId", "1");
+    Map<String, Object> employee2 = new HashMap<String, Object>();
+    employee2.put("EmployeeId", "2");
+    Map<String, Object> employee3 = new HashMap<String, Object>();
+    employee3.put("EmployeeId", "3");
+    ArrayList<Map<String, Object>> employeesData = new ArrayList<Map<String, Object>>();
+    employeesData.add(employee1);
+    employeesData.add(employee2);
+    employeesData.add(employee3);
+
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).build();
+    final ODataResponse response = new JsonEntityProvider().writeLinks(entitySet, employeesData, properties);
+    assertNotNull(response);
+    assertNotNull(response.getEntity());
+    assertNull("EntitypProvider must not set content header", response.getContentHeader());
+
+    final String json = StringHelper.inputStreamToString((InputStream) response.getEntity());
+    assertNotNull(json);
+    assertEquals("[{\"uri\":\"" + BASE_URI + "Employees('1')\"},"
+        + "{\"uri\":\"" + BASE_URI + "Employees('2')\"},"
+        + "{\"uri\":\"" + BASE_URI + "Employees('3')\"}]",
+        json);
+  }
+
+  @Test
+  public void serializeLinksAndInlineCountWithOmitJsonWrapper() throws Exception {
+    final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
+    Map<String, Object> employee1 = new HashMap<String, Object>();
+    employee1.put("EmployeeId", "1");
+    Map<String, Object> employee2 = new HashMap<String, Object>();
+    employee2.put("EmployeeId", "2");
+    ArrayList<Map<String, Object>> employeesData = new ArrayList<Map<String, Object>>();
+    employeesData.add(employee1);
+    employeesData.add(employee2);
+
+    EntityProviderWriteProperties properties =
+        EntityProviderWriteProperties.fromProperties(DEFAULT_PROPERTIES).omitJsonWrapper(true).inlineCountType(
+            InlineCount.ALLPAGES).inlineCount(42).build();
+    final ODataResponse response = new JsonEntityProvider().writeLinks(entitySet, employeesData, properties);
+    assertNotNull(response);
+    assertNotNull(response.getEntity());
+    assertNull("EntitypProvider must not set content header", response.getContentHeader());
+
+    final String json = StringHelper.inputStreamToString((InputStream) response.getEntity());
+    assertNotNull(json);
+    assertEquals("{\"__count\":\"42\",\"results\":["
+        + "{\"uri\":\"" + BASE_URI + "Employees('1')\"},"
+        + "{\"uri\":\"" + BASE_URI + "Employees('2')\"}]}",
+        json);
+  }
+
+  @Test
   public void serializeEmployeeLink() throws Exception {
     final EdmEntitySet entitySet = MockFacade.getMockEdm().getDefaultEntityContainer().getEntitySet("Employees");
     Map<String, Object> employeeData = new HashMap<String, Object>();


[11/50] [abbrv] git commit: [OLINGO-306] Replace Static fields with Instance fields to prevent concurrent modifications to the ArrayList.

Posted by mi...@apache.org.
[OLINGO-306] Replace Static fields with Instance fields to prevent
concurrent modifications to the ArrayList.

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/db50903b
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/db50903b
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/db50903b

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: db50903b1856ef3cb079d6e0e9e21b5a376b67c2
Parents: 0e99c01
Author: Chandan V A <ch...@sap.com>
Authored: Sun Jun 15 16:02:33 2014 +0530
Committer: Chandan V A <ch...@sap.com>
Committed: Sun Jun 15 16:02:33 2014 +0530

----------------------------------------------------------------------
 .../processor/api/model/JPAEdmPropertyView.java |  8 +++
 .../processor/core/model/JPAEdmProperty.java    |  9 ++-
 .../model/JPAEdmReferentialConstraintRole.java  | 62 ++------------------
 .../JPAEdmReferentialConstraintRoleTest.java    | 19 ++++++
 .../model/JPAEdmReferentialConstraintTest.java  | 18 ++++++
 .../core/model/JPAEdmTestModelView.java         |  7 +++
 6 files changed, 66 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/db50903b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmPropertyView.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmPropertyView.java b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmPropertyView.java
index ce06f68..419d622 100644
--- a/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmPropertyView.java
+++ b/odata2-jpa-processor/jpa-api/src/main/java/org/apache/olingo/odata2/jpa/processor/api/model/JPAEdmPropertyView.java
@@ -20,6 +20,7 @@ package org.apache.olingo.odata2.jpa.processor.api.model;
 
 import java.util.List;
 
+import javax.persistence.JoinColumn;
 import javax.persistence.metamodel.Attribute;
 
 import org.apache.olingo.odata2.api.edm.provider.Property;
@@ -110,4 +111,11 @@ public interface JPAEdmPropertyView extends JPAEdmBaseView {
    * @return an instance of type {@link org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmComplexTypeView}
    */
   JPAEdmComplexTypeView getJPAEdmComplexTypeView();
+
+  /**
+   * The method returns a list of JPA Join Column Annotations for the given JPA Attribute
+   * @return
+   * an instance of type {@link javax.persistence.JoinColumn}
+   */
+  List<JoinColumn> getJPAJoinColumns();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/db50903b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
index 8ea02f7..7298a58 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmProperty.java
@@ -74,6 +74,7 @@ public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
   private Attribute<?, ?> currentRefAttribute;
   private boolean isBuildModeComplexType;
   private Map<String, Integer> associationCount;
+  private ArrayList<JoinColumn> bJoinColumns = null;
 
   public JPAEdmProperty(final JPAEdmSchemaView view) {
     super(view);
@@ -138,6 +139,11 @@ public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
     return navigationPropertyView;
   }
 
+  @Override
+  public List<JoinColumn> getJPAJoinColumns() {
+    return bJoinColumns;
+  }
+
   private class JPAEdmPropertyBuilder implements JPAEdmBuilder {
     /*
      * 
@@ -352,6 +358,8 @@ public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
           return;
         }
       } else {
+        bJoinColumns = bJoinColumns == null ? new ArrayList<JoinColumn>() : bJoinColumns;
+        bJoinColumns.add(joinColumn);
         if (joinColumn.insertable() && joinColumn.updatable()) {
           EntityType<?> referencedEntityType = metaModel.entity(jpaAttribute.getJavaType());
           for (Attribute<?, ?> referencedAttribute : referencedEntityType.getAttributes()) {
@@ -419,5 +427,4 @@ public class JPAEdmProperty extends JPAEdmBaseViewImpl implements
     }
     return isExcluded;
   }
-
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/db50903b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRole.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRole.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRole.java
index 2a2426b..b36398a 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRole.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRole.java
@@ -18,14 +18,12 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.jpa.processor.core.model;
 
-import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.JoinColumn;
-import javax.persistence.JoinColumns;
 import javax.persistence.metamodel.Attribute;
 
 import org.apache.olingo.odata2.api.edm.provider.Association;
@@ -43,14 +41,6 @@ import org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmPropertyView;
 import org.apache.olingo.odata2.jpa.processor.api.model.JPAEdmReferentialConstraintRoleView;
 
 public class JPAEdmReferentialConstraintRole extends JPAEdmBaseViewImpl implements JPAEdmReferentialConstraintRoleView {
-  /*
-   * Static Buffer
-   */
-  private static Attribute<?, ?> bufferedJPAAttribute = null;
-  private static ArrayList<JoinColumn> bufferedJoinColumns = new ArrayList<JoinColumn>();
-  /*
-   * Static Buffer
-   */
 
   private boolean firstBuild = true;
 
@@ -60,6 +50,7 @@ public class JPAEdmReferentialConstraintRole extends JPAEdmBaseViewImpl implemen
   private Attribute<?, ?> jpaAttribute;
   private ArrayList<String> jpaColumnNames;
   private Association association;
+  private List<JoinColumn> bufferedJoinColumns = null;
 
   private boolean roleExists = false;
 
@@ -75,6 +66,7 @@ public class JPAEdmReferentialConstraintRole extends JPAEdmBaseViewImpl implemen
     this.roleType = roleType;
 
     jpaAttribute = propertyView.getJPAAttribute();
+    bufferedJoinColumns = propertyView.getJPAJoinColumns();
     association = associationView.getEdmAssociation();
 
   }
@@ -141,12 +133,12 @@ public class JPAEdmReferentialConstraintRole extends JPAEdmBaseViewImpl implemen
       firstBuild = false;
       isConsistent = false;
 
-      extractJoinColumns();
-
-      if (!roleExists) {
+      if (bufferedJoinColumns == null || bufferedJoinColumns.isEmpty()) {
+        roleExists = false;
         return;
+      } else {
+        roleExists = true;
       }
-
       jpaColumnNames = new ArrayList<String>();
 
       for (JoinColumn joinColumn : bufferedJoinColumns) {
@@ -156,7 +148,6 @@ public class JPAEdmReferentialConstraintRole extends JPAEdmBaseViewImpl implemen
           jpaColumnNames.add(joinColumn.name());
         }
       }
-
     }
 
     private void buildRole() throws SecurityException, NoSuchFieldException {
@@ -213,46 +204,5 @@ public class JPAEdmReferentialConstraintRole extends JPAEdmBaseViewImpl implemen
 
       }
     }
-
-    private void extractJoinColumns() {
-      /*
-       * Check against Static Buffer whether the join column was already
-       * extracted.
-       */
-      if (!jpaAttribute.equals(bufferedJPAAttribute)) {
-        bufferedJPAAttribute = jpaAttribute;
-        bufferedJoinColumns.clear();
-      } else if (bufferedJoinColumns.isEmpty()) {
-        roleExists = false;
-        return;
-      } else {
-        roleExists = true;
-        return;
-      }
-
-      AnnotatedElement annotatedElement = (AnnotatedElement) jpaAttribute.getJavaMember();
-
-      if (annotatedElement == null) {
-        return;
-      }
-
-      JoinColumn joinColumn = annotatedElement.getAnnotation(JoinColumn.class);
-      if (joinColumn == null) {
-        JoinColumns joinColumns = annotatedElement.getAnnotation(JoinColumns.class);
-
-        if (joinColumns != null) {
-          JoinColumn[] joinColumnArray = joinColumns.value();
-
-          for (JoinColumn element : joinColumnArray) {
-            bufferedJoinColumns.add(element);
-          }
-        } else {
-          return;
-        }
-      } else {
-        bufferedJoinColumns.add(joinColumn);
-      }
-      roleExists = true;
-    }
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/db50903b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRoleTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRoleTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRoleTest.java
index 5737c41..cee6ead 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRoleTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintRoleTest.java
@@ -55,6 +55,7 @@ public class JPAEdmReferentialConstraintRoleTest extends JPAEdmTestModelView {
 
   private static JPAEdmReferentialConstraintRole objJPAEdmReferentialConstraintRole = null;
   private static JPAEdmReferentialConstraintRoleTest objJPAEdmReferentialConstraintRoleTest = null;
+  private List<JoinColumn> bufferedJoinColumns = null;
 
   @Before
   public void setUp() {
@@ -147,6 +148,21 @@ public class JPAEdmReferentialConstraintRoleTest extends JPAEdmTestModelView {
   }
 
   @Override
+  public List<JoinColumn> getJPAJoinColumns() {
+    if (bufferedJoinColumns == null) {
+      JoinColumn joinColumn = EasyMock.createMock(JoinColumn.class);
+      EasyMock.expect(joinColumn.referencedColumnName()).andReturn("SOID");
+      EasyMock.expect(joinColumn.name()).andReturn("SOID");
+
+      EasyMock.replay(joinColumn);
+
+      bufferedJoinColumns = new ArrayList<JoinColumn>();
+      bufferedJoinColumns.add(joinColumn);
+    }
+    return bufferedJoinColumns;
+  }
+
+  @Override
   public Association getEdmAssociation() {
     Association association = new Association();
     association.setName("Assoc_SalesOrderHeader_SalesOrderItem");
@@ -227,6 +243,9 @@ public class JPAEdmReferentialConstraintRoleTest extends JPAEdmTestModelView {
       EasyMock.expect(joinColumn.name()).andReturn("SOID");
 
       EasyMock.replay(joinColumn);
+
+      bufferedJoinColumns = new ArrayList<JoinColumn>();
+      bufferedJoinColumns.add(joinColumn);
       return (T) joinColumn;
     }
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/db50903b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintTest.java
index 6e7f6b3..86181b7 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmReferentialConstraintTest.java
@@ -25,6 +25,8 @@ import static org.junit.Assert.fail;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Member;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.persistence.JoinColumn;
 import javax.persistence.metamodel.Attribute;
@@ -48,6 +50,7 @@ public class JPAEdmReferentialConstraintTest extends JPAEdmTestModelView {
 
   private static JPAEdmReferentialConstraint objJPAEdmReferentialConstraint = null;
   private static JPAEdmReferentialConstraintTest objJPAEdmReferentialConstraintTest = null;
+  private List<JoinColumn> bufferedJoinColumns = null;
 
   @Before
   public void setUp() {
@@ -125,6 +128,21 @@ public class JPAEdmReferentialConstraintTest extends JPAEdmTestModelView {
     return getJPAAttributeLocal();
   }
 
+  @Override
+  public List<JoinColumn> getJPAJoinColumns() {
+    if (bufferedJoinColumns == null) {
+      JoinColumn joinColumn = EasyMock.createMock(JoinColumn.class);
+      EasyMock.expect(joinColumn.referencedColumnName()).andReturn("SOID");
+      EasyMock.expect(joinColumn.name()).andReturn("SOID");
+
+      EasyMock.replay(joinColumn);
+
+      bufferedJoinColumns = new ArrayList<JoinColumn>();
+      bufferedJoinColumns.add(joinColumn);
+    }
+    return bufferedJoinColumns;
+  }
+
   @SuppressWarnings("hiding")
   private class AttributeMock<Object, String> extends JPAAttributeMock<Object, String> {
 

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/db50903b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmTestModelView.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmTestModelView.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmTestModelView.java
index 7a6f90f..639ad52 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmTestModelView.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/model/JPAEdmTestModelView.java
@@ -21,6 +21,7 @@ package org.apache.olingo.odata2.jpa.processor.core.model;
 import java.util.HashMap;
 import java.util.List;
 
+import javax.persistence.JoinColumn;
 import javax.persistence.metamodel.Attribute;
 import javax.persistence.metamodel.EmbeddableType;
 import javax.persistence.metamodel.Metamodel;
@@ -403,4 +404,10 @@ public class JPAEdmTestModelView implements JPAEdmAssociationEndView, JPAEdmAsso
     return null;
   }
 
+  @Override
+  public List<JoinColumn> getJPAJoinColumns() {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
 }