You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/05/22 13:22:30 UTC

[6/9] git commit: Cleaning up EntityContainerFactory#getServiceRoot

Cleaning up EntityContainerFactory#getServiceRoot


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

Branch: refs/heads/master
Commit: 3c0b8ad2658cf84f002e3b10c9b93d6ea1ccc9c5
Parents: 72d894c
Author: Francesco Chicchiriccò <--global>
Authored: Thu May 22 08:55:43 2014 +0200
Committer: Francesco Chicchiriccò <--global>
Committed: Thu May 22 08:55:43 2014 +0200

----------------------------------------------------------------------
 .../ext/proxy/EntityContainerFactory.java       | 30 ++++++--------------
 .../AbstractStructuredInvocationHandler.java    | 10 +++----
 .../proxy/commons/ComplexInvocationHandler.java |  4 +--
 .../olingo/ext/proxy/commons/ContainerImpl.java | 16 +++++------
 .../proxy/commons/EntityInvocationHandler.java  |  5 ++--
 .../commons/OperationInvocationHandler.java     |  9 ++----
 6 files changed, 25 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3c0b8ad2/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/EntityContainerFactory.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/EntityContainerFactory.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/EntityContainerFactory.java
index 9de2d4f..b0d2ff9 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/EntityContainerFactory.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/EntityContainerFactory.java
@@ -21,7 +21,6 @@ package org.apache.olingo.ext.proxy;
 import java.lang.reflect.Proxy;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.olingo.client.api.CommonEdmEnabledODataClient;
 import org.apache.olingo.client.core.ODataClientFactory;
 import org.apache.olingo.commons.api.format.ODataPubFormat;
@@ -46,8 +45,6 @@ public final class EntityContainerFactory<C extends CommonEdmEnabledODataClient<
 
   private final CommonEdmEnabledODataClient<?> client;
 
-  private final String serviceRoot;
-
   public static Context getContext() {
     synchronized (MONITOR) {
       if (context == null) {
@@ -59,33 +56,31 @@ public final class EntityContainerFactory<C extends CommonEdmEnabledODataClient<
   }
 
   @SuppressWarnings("unchecked")
-  private static <C extends CommonEdmEnabledODataClient<?>> EntityContainerFactory<C> getInstance(
-          final C client, final String serviceRoot) {
+  private static <C extends CommonEdmEnabledODataClient<?>> EntityContainerFactory<C> getInstance(final C client) {
 
-    if (!FACTORY_PER_SERVICEROOT.containsKey(serviceRoot)) {
+    if (!FACTORY_PER_SERVICEROOT.containsKey(client.getServiceRoot())) {
       client.getConfiguration().setDefaultPubFormat(ODataPubFormat.JSON_FULL_METADATA);
-      final EntityContainerFactory<C> instance = new EntityContainerFactory<C>(client, serviceRoot);
-      FACTORY_PER_SERVICEROOT.put(serviceRoot, instance);
+      final EntityContainerFactory<C> instance = new EntityContainerFactory<C>(client);
+      FACTORY_PER_SERVICEROOT.put(client.getServiceRoot(), instance);
     }
 
-    return (EntityContainerFactory<C>) FACTORY_PER_SERVICEROOT.get(serviceRoot);
+    return (EntityContainerFactory<C>) FACTORY_PER_SERVICEROOT.get(client.getServiceRoot());
   }
 
   public static EntityContainerFactory<org.apache.olingo.client.api.v3.EdmEnabledODataClient> getV3(
           final String serviceRoot) {
 
-    return getInstance(ODataClientFactory.getEdmEnabledV3(serviceRoot), serviceRoot);
+    return getInstance(ODataClientFactory.getEdmEnabledV3(serviceRoot));
   }
 
   public static EntityContainerFactory<org.apache.olingo.client.api.v4.EdmEnabledODataClient> getV4(
           final String serviceRoot) {
 
-    return getInstance(ODataClientFactory.getEdmEnabledV4(serviceRoot), serviceRoot);
+    return getInstance(ODataClientFactory.getEdmEnabledV4(serviceRoot));
   }
 
-  private EntityContainerFactory(final CommonEdmEnabledODataClient<?> client, final String serviceRoot) {
+  private EntityContainerFactory(final CommonEdmEnabledODataClient<?> client) {
     this.client = client;
-    this.serviceRoot = serviceRoot;
   }
 
   @SuppressWarnings("unchecked")
@@ -93,24 +88,15 @@ public final class EntityContainerFactory<C extends CommonEdmEnabledODataClient<
     return (C) client;
   }
 
-  public String getServiceRoot() {
-    return serviceRoot;
-  }
-
   /**
    * Return an initialized concrete implementation of the passed EntityContainer interface.
    *
    * @param <T> interface annotated as EntityContainer
    * @param reference class object of the EntityContainer annotated interface
    * @return an initialized concrete implementation of the passed reference
-   * @throws IllegalStateException if <tt>serviceRoot</tt> was not set
    * @throws IllegalArgumentException if the passed reference is not an interface annotated as EntityContainer
    */
   public <T> T getEntityContainer(final Class<T> reference) throws IllegalStateException, IllegalArgumentException {
-    if (StringUtils.isBlank(serviceRoot)) {
-      throw new IllegalStateException("serviceRoot was not set");
-    }
-
     if (!ENTITY_CONTAINERS.containsKey(reference)) {
       final Object entityContainer = Proxy.newProxyInstance(
               Thread.currentThread().getContextClassLoader(),

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3c0b8ad2/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java
index 5f04408..f208e83 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/AbstractStructuredInvocationHandler.java
@@ -219,9 +219,7 @@ public abstract class AbstractStructuredInvocationHandler extends AbstractInvoca
 
   protected abstract Object getNavigationPropertyValue(final NavigationProperty property, final Method getter);
 
-  protected Object retrieveNavigationProperty(
-          final NavigationProperty property, final Method getter, final String serviceRoot) {
-
+  protected Object retrieveNavigationProperty(final NavigationProperty property, final Method getter) {
     final Class<?> type = getter.getReturnType();
     final Class<?> collItemType;
     if (AbstractEntityCollection.class.isAssignableFrom(type)) {
@@ -241,7 +239,7 @@ public abstract class AbstractStructuredInvocationHandler extends AbstractInvoca
               null,
               ((ODataInlineEntity) link).getEntity(),
               property.targetContainer(),
-              client.newURIBuilder(serviceRoot).appendEntitySetSegment(property.targetEntitySet()).build(),
+              client.newURIBuilder().appendEntitySetSegment(property.targetEntitySet()).build(),
               type,
               false);
     } else if (link instanceof ODataInlineEntitySet) {
@@ -255,7 +253,7 @@ public abstract class AbstractStructuredInvocationHandler extends AbstractInvoca
               false);
     } else {
       // navigate
-      final URI uri = URIUtils.getURI(containerHandler.getFactory().getServiceRoot(), link.getLink().toASCIIString());
+      final URI uri = URIUtils.getURI(client.getServiceRoot(), link.getLink().toASCIIString());
       if (AbstractEntityCollection.class.isAssignableFrom(type)) {
         navPropValue = getEntityCollectionProxy(
                 collItemType,
@@ -278,7 +276,7 @@ public abstract class AbstractStructuredInvocationHandler extends AbstractInvoca
                 uri,
                 res.getBody(),
                 property.targetContainer(),
-                client.newURIBuilder(serviceRoot).appendEntitySetSegment(property.targetEntitySet()).build(),
+                client.newURIBuilder().appendEntitySetSegment(property.targetEntitySet()).build(),
                 type,
                 res.getETag(),
                 true);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3c0b8ad2/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java
index a207e68..2a7e946 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ComplexInvocationHandler.java
@@ -174,7 +174,7 @@ public class ComplexInvocationHandler extends AbstractStructuredInvocationHandle
       throw new UnsupportedOperationException("Internal object is not navigable");
     }
 
-    return retrieveNavigationProperty(property, getter, containerHandler.getFactory().getServiceRoot());
+    return retrieveNavigationProperty(property, getter);
   }
 
   @Override
@@ -186,7 +186,7 @@ public class ComplexInvocationHandler extends AbstractStructuredInvocationHandle
   @Override
   public void removeAdditionalProperty(final String name) {
     final CommonODataProperty property = getComplex().get(name);
-    if(property !=null && !property.hasNullValue()){
+    if (property != null && !property.hasNullValue()) {
       setPropertyValue(name, null, null);
       attach(AttachedEntityStatus.CHANGED);
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3c0b8ad2/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ContainerImpl.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ContainerImpl.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ContainerImpl.java
index 1a6e6d9..f7abf9b 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ContainerImpl.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/ContainerImpl.java
@@ -336,7 +336,6 @@ class ContainerImpl implements Container {
               : ODataLinkType.ENTITY_NAVIGATION;
 
       final Set<EntityInvocationHandler> toBeLinked = new HashSet<EntityInvocationHandler>();
-      final String serviceRoot = factory.getServiceRoot();
 
       for (Object proxy : type == ODataLinkType.ENTITY_SET_NAVIGATION
               ? (Collection) property.getValue() : Collections.singleton(property.getValue())) {
@@ -352,7 +351,7 @@ class ContainerImpl implements Container {
         if ((status == AttachedEntityStatus.ATTACHED || status == AttachedEntityStatus.LINKED) && !target.isChanged()) {
           entity.addLink(buildNavigationLink(
                   property.getKey().name(),
-                  URIUtils.getURI(serviceRoot, editLink.toASCIIString()), type));
+                  URIUtils.getURI(client.getServiceRoot(), editLink.toASCIIString()), type));
         } else {
           if (!items.contains(target)) {
             pos = processEntityContext(target, pos, items, delayedUpdates, changeset);
@@ -367,7 +366,7 @@ class ContainerImpl implements Container {
           } else if (status == AttachedEntityStatus.CHANGED) {
             entity.addLink(buildNavigationLink(
                     property.getKey().name(),
-                    URIUtils.getURI(serviceRoot, editLink.toASCIIString()), type));
+                    URIUtils.getURI(client.getServiceRoot(), editLink.toASCIIString()), type));
           } else {
             // create the link for the current object
             LOG.debug("'{}' from '{}' to (${}) '{}'", type.name(), handler, targetPos, target);
@@ -406,7 +405,7 @@ class ContainerImpl implements Container {
         if (!handler.getPropertyChanges().isEmpty()) {
           final URI targetURI = currentStatus == AttachedEntityStatus.NEW
                   ? URI.create("$" + startingPos)
-                  : URIUtils.getURI(factory.getServiceRoot(), handler.getEntity().getEditLink().toASCIIString());
+                  : URIUtils.getURI(client.getServiceRoot(), handler.getEntity().getEditLink().toASCIIString());
           batchUpdate(handler, targetURI, entity, changeset);
           pos++;
           items.put(handler, pos);
@@ -417,7 +416,7 @@ class ContainerImpl implements Container {
           final URI targetURI = currentStatus == AttachedEntityStatus.NEW
                   ? URI.create("$" + startingPos + "/$value")
                   : URIUtils.getURI(
-                          factory.getServiceRoot(), handler.getEntity().getEditLink().toASCIIString() + "/$value");
+                          client.getServiceRoot(), handler.getEntity().getEditLink().toASCIIString() + "/$value");
 
           batchUpdateMediaEntity(handler, targetURI, handler.getStreamChanges(), changeset);
 
@@ -430,7 +429,7 @@ class ContainerImpl implements Container {
       for (Map.Entry<String, InputStream> streamedChanges : handler.getStreamedPropertyChanges().entrySet()) {
         final URI targetURI = currentStatus == AttachedEntityStatus.NEW
                 ? URI.create("$" + startingPos) : URIUtils.getURI(
-                        factory.getServiceRoot(),
+                        client.getServiceRoot(),
                         CoreUtils.getMediaEditLink(streamedChanges.getKey(), entity).toASCIIString());
 
         batchUpdateMediaResource(handler, targetURI, streamedChanges.getValue(), changeset);
@@ -482,7 +481,7 @@ class ContainerImpl implements Container {
       final URI sourceURI;
       if (status == AttachedEntityStatus.CHANGED) {
         sourceURI = URIUtils.getURI(
-                factory.getServiceRoot(),
+                client.getServiceRoot(),
                 delayedUpdate.getSource().getEntity().getEditLink().toASCIIString());
       } else {
         int sourcePos = items.get(delayedUpdate.getSource());
@@ -494,8 +493,7 @@ class ContainerImpl implements Container {
 
         final URI targetURI;
         if (status == AttachedEntityStatus.CHANGED) {
-          targetURI = URIUtils.getURI(
-                  factory.getServiceRoot(), target.getEntity().getEditLink().toASCIIString());
+          targetURI = URIUtils.getURI(client.getServiceRoot(), target.getEntity().getEditLink().toASCIIString());
         } else {
           int targetPos = items.get(target);
           targetURI = URI.create("$" + targetPos);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3c0b8ad2/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java
index 2d9065a..4c2fa36 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/EntityInvocationHandler.java
@@ -338,8 +338,7 @@ public class EntityInvocationHandler extends AbstractStructuredInvocationHandler
     try {
       if (res == null) {
         final URI link = URIUtils.getURI(
-                containerHandler.getFactory().getServiceRoot(),
-                CoreUtils.getMediaEditLink(name, getEntity()).toASCIIString());
+                client.getServiceRoot(), CoreUtils.getMediaEditLink(name, getEntity()).toASCIIString());
 
         final ODataMediaRequest req = client.getRetrieveRequestFactory().getMediaRequest(link);
         res = req.execute().getBody();
@@ -369,7 +368,7 @@ public class EntityInvocationHandler extends AbstractStructuredInvocationHandler
     if (linkChanges.containsKey(property)) {
       navPropValue = linkChanges.get(property);
     } else {
-      navPropValue = retrieveNavigationProperty(property, getter, containerHandler.getFactory().getServiceRoot());
+      navPropValue = retrieveNavigationProperty(property, getter);
     }
 
     if (navPropValue != null) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/3c0b8ad2/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/OperationInvocationHandler.java
----------------------------------------------------------------------
diff --git a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/OperationInvocationHandler.java b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/OperationInvocationHandler.java
index d28a319..1a3e1be 100644
--- a/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/OperationInvocationHandler.java
+++ b/ext/client-proxy/src/main/java/org/apache/olingo/ext/proxy/commons/OperationInvocationHandler.java
@@ -48,8 +48,6 @@ final class OperationInvocationHandler extends AbstractInvocationHandler impleme
 
   private final FullQualifiedName targetFQN;
 
-  private final String serviceRoot;
-
   static OperationInvocationHandler getInstance(final EntityContainerInvocationHandler containerHandler) {
     return new OperationInvocationHandler(containerHandler);
   }
@@ -69,8 +67,6 @@ final class OperationInvocationHandler extends AbstractInvocationHandler impleme
 
     this.targetFQN =
             new FullQualifiedName(containerHandler.getSchemaName(), containerHandler.getEntityContainerName());
-
-    this.serviceRoot = containerHandler.getFactory().getServiceRoot();
   }
 
   private OperationInvocationHandler(final EntityInvocationHandler entityHandler) {
@@ -78,7 +74,6 @@ final class OperationInvocationHandler extends AbstractInvocationHandler impleme
 
     this.target = entityHandler;
     this.targetFQN = entityHandler.getEntity().getTypeName();
-    this.serviceRoot = containerHandler.getFactory().getServiceRoot();
   }
 
   private OperationInvocationHandler(final EntityCollectionInvocationHandler<?> collectionHandler) {
@@ -90,7 +85,6 @@ final class OperationInvocationHandler extends AbstractInvocationHandler impleme
     final String typeNamespace = ClassUtils.getNamespace(collectionHandler.getEntityReference());
 
     this.targetFQN = new FullQualifiedName(typeNamespace, typeName);
-    this.serviceRoot = containerHandler.getFactory().getServiceRoot();
   }
 
   @Override
@@ -144,6 +138,7 @@ final class OperationInvocationHandler extends AbstractInvocationHandler impleme
 
   private Map.Entry<URI, EdmOperation> getUnboundOperation(
           final Operation operation, final List<String> parameterNames) {
+
     final EdmEntityContainer container = client.getCachedEdm().getEntityContainer(targetFQN);
     final EdmOperation edmOperation;
 
@@ -153,7 +148,7 @@ final class OperationInvocationHandler extends AbstractInvocationHandler impleme
       edmOperation = container.getActionImport(operation.name()).getUnboundAction();
     }
 
-    final CommonURIBuilder<?> uriBuilder = getClient().newURIBuilder(this.serviceRoot).
+    final CommonURIBuilder<?> uriBuilder = getClient().newURIBuilder().
             appendOperationCallSegment(edmOperation.getName());
 
     return new AbstractMap.SimpleEntry<URI, EdmOperation>(uriBuilder.build(), edmOperation);