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/03/06 15:41:25 UTC

git commit: [OLINGO-189] Enables getMessage() for ODataMessageException

Repository: incubator-olingo-odata2
Updated Branches:
  refs/heads/master 3fbf0682e -> 6f75e0034


[OLINGO-189] Enables getMessage() for ODataMessageException


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

Branch: refs/heads/master
Commit: 6f75e00346d41dc44a2c5c1b36bc305a1b12dd6f
Parents: 3fbf068
Author: Michael Bolz <mi...@apache.org>
Authored: Thu Mar 6 15:02:42 2014 +0100
Committer: Michael Bolz <mi...@apache.org>
Committed: Thu Mar 6 15:19:27 2014 +0100

----------------------------------------------------------------------
 .../api/exception/ODataMessageException.java     | 19 +++++++++++++++++++
 .../olingo/odata2/api/rt/RuntimeDelegate.java    | 18 ++++++++++++++++++
 .../odata2/core/exception/MessageService.java    |  8 ++++----
 .../odata2/core/rt/RuntimeDelegateImpl.java      |  9 +++++++++
 .../core/exception/MessageServiceTest.java       |  2 +-
 5 files changed, 51 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6f75e003/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/exception/ODataMessageException.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/exception/ODataMessageException.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/exception/ODataMessageException.java
index d3f7355..bdc2156 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/exception/ODataMessageException.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/exception/ODataMessageException.java
@@ -18,6 +18,8 @@
  ******************************************************************************/
 package org.apache.olingo.odata2.api.exception;
 
+import org.apache.olingo.odata2.api.rt.RuntimeDelegate;
+
 /**
  * <p>DO NOT EXTEND THIS EXCEPTION</p>
  * APPLICATION DEVELOPERS: please use {@link ODataApplicationException} o throw custom exceptions.
@@ -112,4 +114,21 @@ public abstract class ODataMessageException extends ODataException {
   public String getErrorCode() {
     return errorCode;
   }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public String getMessage() {
+    if(messageReference == null) {
+      return "No message reference given. Inherit message is = '" + super.getMessage() + "'";
+    }
+    
+    String message = RuntimeDelegate.extractExceptionMessage(this);
+    if(message == null) {
+      return "Message Reference key = '" + messageReference.getKey() +
+              "' and inherit message = '" + super.getMessage() + "'";
+    }
+    return message;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6f75e003/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/rt/RuntimeDelegate.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/rt/RuntimeDelegate.java b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/rt/RuntimeDelegate.java
index f0c1fc3..051270a 100644
--- a/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/rt/RuntimeDelegate.java
+++ b/odata2-lib/odata-api/src/main/java/org/apache/olingo/odata2/api/rt/RuntimeDelegate.java
@@ -32,6 +32,7 @@ import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
 import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
 import org.apache.olingo.odata2.api.ep.EntityProvider.EntityProviderInterface;
 import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.exception.ODataMessageException;
 import org.apache.olingo.odata2.api.processor.ODataRequest.ODataRequestBuilder;
 import org.apache.olingo.odata2.api.processor.ODataResponse.ODataResponseBuilder;
 import org.apache.olingo.odata2.api.processor.ODataSingleProcessor;
@@ -110,6 +111,13 @@ public abstract class RuntimeDelegate {
 
     public abstract ExpandSelectTreeNodeBuilder createExpandSelectTreeNodeBuilder();
 
+    /**
+     * Extract message of {@link ODataMessageException} and return it as a string.
+     * 
+     * @param exception which contains the message references.
+     * @return the message of the {@link ODataMessageException}
+     */
+    public abstract String extractExceptionMessage(ODataMessageException exception);
   }
 
   /**
@@ -217,4 +225,14 @@ public abstract class RuntimeDelegate {
   public static ExpandSelectTreeNodeBuilder createExpandSelectTreeNodeBuilder() {
     return RuntimeDelegate.getInstance().createExpandSelectTreeNodeBuilder();
   }
+
+  /**
+   * Extract message of {@link ODataMessageException} and return it as a string.
+   * 
+   * @param exception which contains the message references.
+   * @return the message of the {@link ODataMessageException}
+   */
+  public static String extractExceptionMessage(ODataMessageException exception) {
+    return RuntimeDelegate.getInstance().extractExceptionMessage(exception);
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6f75e003/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/exception/MessageService.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/exception/MessageService.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/exception/MessageService.java
index bd87eff..0ad019e 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/exception/MessageService.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/exception/MessageService.java
@@ -194,13 +194,13 @@ public class MessageService {
    * @return the message
    */
   private Message getMessage(final String key, final Object... replacements) {
-    String value = null;
+    String message = null;
 
     try {
-      value = resourceBundle.getString(key);
+      message = resourceBundle.getString(key);
       StringBuilder builder = new StringBuilder();
       Formatter f = new Formatter(builder, requestedLocale);
-      f.format(value, replacements);
+      f.format(message, replacements);
       f.close();
 
       return new Message(getLocale(), builder.toString());
@@ -208,7 +208,7 @@ public class MessageService {
     } catch (MissingResourceException e) {
       return new Message(Locale.ENGLISH, "Missing message for key '" + key + "'!");
     } catch (MissingFormatArgumentException e) {
-      return new Message(Locale.ENGLISH, "Missing replacement for place holder in value '" + value +
+      return new Message(Locale.ENGLISH, "Missing replacement for place holder in message '" + message +
           "' for following arguments '" + Arrays.toString(replacements) + "'!");
     }
   }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6f75e003/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rt/RuntimeDelegateImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rt/RuntimeDelegateImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rt/RuntimeDelegateImpl.java
index f37b590..d3a974c 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rt/RuntimeDelegateImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/rt/RuntimeDelegateImpl.java
@@ -19,6 +19,7 @@
 package org.apache.olingo.odata2.core.rt;
 
 import java.io.InputStream;
+import java.util.Locale;
 
 import org.apache.olingo.odata2.api.ODataService;
 import org.apache.olingo.odata2.api.batch.BatchResponsePart.BatchResponsePartBuilder;
@@ -32,6 +33,7 @@ import org.apache.olingo.odata2.api.edm.EdmSimpleTypeKind;
 import org.apache.olingo.odata2.api.edm.provider.EdmProvider;
 import org.apache.olingo.odata2.api.ep.EntityProvider.EntityProviderInterface;
 import org.apache.olingo.odata2.api.ep.EntityProviderException;
+import org.apache.olingo.odata2.api.exception.ODataMessageException;
 import org.apache.olingo.odata2.api.processor.ODataRequest.ODataRequestBuilder;
 import org.apache.olingo.odata2.api.processor.ODataResponse.ODataResponseBuilder;
 import org.apache.olingo.odata2.api.processor.ODataSingleProcessor;
@@ -48,6 +50,8 @@ import org.apache.olingo.odata2.core.edm.EdmSimpleTypeFacadeImpl;
 import org.apache.olingo.odata2.core.edm.provider.EdmImplProv;
 import org.apache.olingo.odata2.core.edm.provider.EdmxProvider;
 import org.apache.olingo.odata2.core.ep.ProviderFacadeImpl;
+import org.apache.olingo.odata2.core.exception.MessageService;
+import org.apache.olingo.odata2.core.exception.MessageService.Message;
 import org.apache.olingo.odata2.core.processor.ODataSingleProcessorService;
 import org.apache.olingo.odata2.core.uri.ExpandSelectTreeNodeImpl;
 import org.apache.olingo.odata2.core.uri.UriParserImpl;
@@ -137,4 +141,9 @@ public class RuntimeDelegateImpl extends RuntimeDelegateInstance {
     return expandSelectTreeNode.new ExpandSelectTreeNodeBuilderImpl();
   }
 
+  @Override
+  public String extractExceptionMessage(ODataMessageException exception) {
+    Message msg = MessageService.getMessage(Locale.ENGLISH, exception.getMessageReference());
+    return msg.getText();
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata2/blob/6f75e003/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/exception/MessageServiceTest.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/exception/MessageServiceTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/exception/MessageServiceTest.java
index 6c0f7ab..fe39fc0 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/exception/MessageServiceTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/exception/MessageServiceTest.java
@@ -70,7 +70,7 @@ public class MessageServiceTest extends BaseTest {
     Message ms = MessageService.getMessage(DEFAULT_LANGUAGE, context);
 
     assertEquals(
-        "Missing replacement for place holder in value 'First was [%1$s] and second was [%2$s]!' " +
+        "Missing replacement for place holder in message 'First was [%1$s] and second was [%2$s]!' " +
             "for following arguments '[first]'!",
         ms.getText());
   }