Repository: camel
Updated Branches:
  refs/heads/master 2678a1adf -> 0d94bfe0c


CAMEL-7826 Fixed serviceRoot URI


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

Branch: refs/heads/master
Commit: 0d94bfe0c92a93d0a097fc77967385f2afea60a4
Parents: 2678a1a
Author: Dhiraj Bokde <[email protected]>
Authored: Mon Sep 15 20:30:09 2014 -0700
Committer: Dhiraj Bokde <[email protected]>
Committed: Mon Sep 15 20:30:38 2014 -0700

----------------------------------------------------------------------
 .../olingo2/api/impl/Olingo2AppImpl.java        | 25 +++++----
 .../olingo2/api/Olingo2AppIntegrationTest.java  | 56 ++++++++++++++++++--
 2 files changed, 65 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/0d94bfe0/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
----------------------------------------------------------------------
diff --git 
a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
 
b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
index 327a6c3..ecb7d96 100644
--- 
a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
+++ 
b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
@@ -127,10 +127,7 @@ public final class Olingo2AppImpl implements Olingo2App {
      * @param builder custom HTTP client builder.
      */
     public Olingo2AppImpl(String serviceUri, HttpAsyncClientBuilder builder) {
-        if (serviceUri == null) {
-            throw new IllegalArgumentException("serviceUri");
-        }
-        this.serviceUri = serviceUri;
+        setServiceUri(serviceUri);
 
         if (builder == null) {
             this.client = HttpAsyncClients.createDefault();
@@ -143,7 +140,11 @@ public final class Olingo2AppImpl implements Olingo2App {
 
     @Override
     public void setServiceUri(String serviceUri) {
-        this.serviceUri = serviceUri;
+        if (serviceUri == null || serviceUri.isEmpty()) {
+            throw new IllegalArgumentException("serviceUri");
+        }
+        this.serviceUri = serviceUri.endsWith(SEPARATOR) ? 
serviceUri.substring(0, serviceUri.length() - 1)
+            : serviceUri;
     }
 
     @Override
@@ -513,9 +514,8 @@ public final class Olingo2AppImpl implements Olingo2App {
         case URI7A:
             // $links with 0..1 cardinality property
             final EdmEntitySet targetLinkEntitySet = 
uriInfo.getTargetEntitySet();
-            final URI rootLinkUri = new URI(targetLinkEntitySet.getName());
             EntityProviderWriteProperties linkProperties =
-                EntityProviderWriteProperties.serviceRoot(rootLinkUri).build();
+                EntityProviderWriteProperties.serviceRoot(new URI(serviceUri + 
SEPARATOR)).build();
             @SuppressWarnings("unchecked")
             final Map<String, Object> linkMap = (Map<String, Object>) content;
             response = EntityProvider.writeLink(responseContentType, 
targetLinkEntitySet, linkMap, linkProperties);
@@ -524,12 +524,11 @@ public final class Olingo2AppImpl implements Olingo2App {
         case URI7B:
             // $links with * cardinality property
             final EdmEntitySet targetLinksEntitySet = 
uriInfo.getTargetEntitySet();
-            final URI rootLinksUri = new URI(targetLinksEntitySet.getName());
             EntityProviderWriteProperties linksProperties =
-                
EntityProviderWriteProperties.serviceRoot(rootLinksUri).build();
+                EntityProviderWriteProperties.serviceRoot(new URI(serviceUri + 
SEPARATOR)).build();
             @SuppressWarnings("unchecked")
-            final Map<String, Object> linksMap = (Map<String, Object>) content;
-            response = EntityProvider.writeLink(responseContentType, 
targetLinksEntitySet, linksMap, linksProperties);
+            final List<Map<String, Object>> linksMap = (List<Map<String, 
Object>>) content;
+            response = EntityProvider.writeLinks(responseContentType, 
targetLinksEntitySet, linksMap, linksProperties);
             break;
 
         case URI1:
@@ -538,8 +537,8 @@ public final class Olingo2AppImpl implements Olingo2App {
         case URI6B:
             // Entity
             final EdmEntitySet targetEntitySet = uriInfo.getTargetEntitySet();
-            final URI rootUri = new URI(targetEntitySet.getName());
-            EntityProviderWriteProperties properties = 
EntityProviderWriteProperties.serviceRoot(rootUri).build();
+            EntityProviderWriteProperties properties =
+                EntityProviderWriteProperties.serviceRoot(new URI(serviceUri + 
SEPARATOR)).build();
             @SuppressWarnings("unchecked")
             final Map<String, Object> objectMap = (Map<String, Object>) 
content;
             response = EntityProvider.writeEntry(responseContentType, 
targetEntitySet, objectMap, properties);

http://git-wip-us.apache.org/repos/asf/camel/blob/0d94bfe0/components/camel-olingo2/camel-olingo2-api/src/test/java/org/apache/camel/component/olingo2/api/Olingo2AppIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-olingo2/camel-olingo2-api/src/test/java/org/apache/camel/component/olingo2/api/Olingo2AppIntegrationTest.java
 
b/components/camel-olingo2/camel-olingo2-api/src/test/java/org/apache/camel/component/olingo2/api/Olingo2AppIntegrationTest.java
index e8b951b..f67e0b5 100644
--- 
a/components/camel-olingo2/camel-olingo2-api/src/test/java/org/apache/camel/component/olingo2/api/Olingo2AppIntegrationTest.java
+++ 
b/components/camel-olingo2/camel-olingo2-api/src/test/java/org/apache/camel/component/olingo2/api/Olingo2AppIntegrationTest.java
@@ -27,6 +27,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
+import java.util.regex.Pattern;
 
 import org.apache.camel.component.olingo2.api.batch.Olingo2BatchChangeRequest;
 import org.apache.camel.component.olingo2.api.batch.Olingo2BatchQueryRequest;
@@ -100,6 +101,8 @@ public class Olingo2AppIntegrationTest {
 //    private static final ContentType TEST_FORMAT = 
ContentType.APPLICATION_XML_CS_UTF_8;
     private static final ContentType TEST_FORMAT = 
ContentType.APPLICATION_JSON_CS_UTF_8;
     private static final String INDEX = "/index.jsp";
+    private static final Pattern LINK_PATTERN = 
Pattern.compile("[^(]+\\('([^']+)'\\)");
+    private static final String ID_PROPERTY = "Id";
 
     private static Olingo2App olingoApp;
     private static final String GEN_SAMPLE_DATA = "genSampleData=true";
@@ -108,7 +111,7 @@ public class Olingo2AppIntegrationTest {
     @BeforeClass
     public static void beforeClass() throws Exception {
 
-        olingoApp = new Olingo2AppImpl(TEST_SERVICE_URL);
+        olingoApp = new Olingo2AppImpl(TEST_SERVICE_URL + "/");
         olingoApp.setContentType(TEST_FORMAT.toString());
 
         LOG.info("Generate sample data ");
@@ -243,7 +246,7 @@ public class Olingo2AppIntegrationTest {
     }
 
     @Test
-    public void testReadLinks() throws Exception {
+    public void testReadDeleteCreateLinks() throws Exception {
         final TestOlingo2ResponseHandler<List<String>> linksHandler = new 
TestOlingo2ResponseHandler<List<String>>();
 
         olingoApp.read(edm, TEST_MANUFACTURER_LINKS_CARS, null, linksHandler);
@@ -258,6 +261,53 @@ public class Olingo2AppIntegrationTest {
 
         final String link = linkHandler.await();
         LOG.info("Read link: {}", link);
+
+//Deleting relationships through links is not supported in Olingo2 at the time 
of writing this test
+/*
+        final TestOlingo2ResponseHandler<HttpStatusCodes> statusHandler =
+            new TestOlingo2ResponseHandler<HttpStatusCodes>();
+
+        final ArrayList<Map<String, Object>> carKeys = new 
ArrayList<Map<String, Object>>();
+        for (String carLink : links) {
+            final Matcher matcher = LINK_PATTERN.matcher(carLink);
+            assertTrue("Link pattern " + carLink, matcher.matches());
+            final String carId = matcher.group(1);
+
+            final HashMap<String, Object> keys = new HashMap<String, Object>();
+            keys.put(ID_PROPERTY, carId);
+            carKeys.add(keys);
+
+            // delete manufacturer->car link
+            statusHandler.reset();
+            final String resourcePath = TEST_MANUFACTURER_LINKS_CARS + "('" + 
carId + "')";
+            olingoApp.delete(resourcePath, statusHandler);
+
+            assertEquals("Delete car link " + resourcePath, 
HttpStatusCodes.OK.getStatusCode(),
+                statusHandler.await().getStatusCode());
+        }
+
+        // add links to all Cars
+        statusHandler.reset();
+        olingoApp.create(edm, TEST_MANUFACTURER_LINKS_CARS, carKeys, 
statusHandler);
+
+        assertEquals("Links update", HttpStatusCodes.ACCEPTED.getStatusCode(), 
statusHandler.await().getStatusCode());
+
+        // delete car->manufacturer link
+        statusHandler.reset();
+        olingoApp.delete(TEST_CAR_LINK_MANUFACTURER, statusHandler);
+
+        assertEquals("Delete manufacturer link " + TEST_CAR_LINK_MANUFACTURER, 
HttpStatusCodes.OK.getStatusCode(),
+            statusHandler.await().getStatusCode());
+
+        // add link to Manufacturer
+        statusHandler.reset();
+        final HashMap<String, Object> manufacturerKey = new HashMap<String, 
Object>();
+        manufacturerKey.put(ID_PROPERTY, "1");
+
+        olingoApp.create(edm, TEST_CAR_LINK_MANUFACTURER, manufacturerKey, 
statusHandler);
+
+        assertEquals("Link update", HttpStatusCodes.ACCEPTED.getStatusCode(), 
statusHandler.await().getStatusCode());
+*/
     }
 
     @Test
@@ -413,7 +463,7 @@ public class Olingo2AppIntegrationTest {
 
     private Map<String, Object> getEntityData() {
         Map<String, Object> data = new HashMap<String, Object>();
-        data.put("Id", "123");
+        data.put(ID_PROPERTY, "123");
         data.put("Name", "MyCarManufacturer");
         data.put(FOUNDED_PROPERTY, new Date());
         Map<String, Object> address = new HashMap<String, Object>();

Reply via email to