You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2015/12/19 23:38:12 UTC

svn commit: r1720980 - in /webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax: InvocationResults.java Normalizer.java XMLStreamReaderComparator.java

Author: veithen
Date: Sat Dec 19 22:38:12 2015
New Revision: 1720980

URL: http://svn.apache.org/viewvc?rev=1720980&view=rev
Log:
Use generics.

Added:
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/InvocationResults.java   (with props)
Modified:
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/Normalizer.java
    webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/XMLStreamReaderComparator.java

Added: webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/InvocationResults.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/InvocationResults.java?rev=1720980&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/InvocationResults.java (added)
+++ webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/InvocationResults.java Sat Dec 19 22:38:12 2015
@@ -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.
+ */
+package org.apache.axiom.testutils.stax;
+
+final class InvocationResults<T> {
+    private final T expected;
+    private final T actual;
+    
+    InvocationResults(T expected, T actual) {
+        this.expected = expected;
+        this.actual = actual;
+    }
+
+    public T getExpected() {
+        return expected;
+    }
+
+    public T getActual() {
+        return actual;
+    }
+}

Propchange: webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/InvocationResults.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/Normalizer.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/Normalizer.java?rev=1720980&r1=1720979&r2=1720980&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/Normalizer.java (original)
+++ webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/Normalizer.java Sat Dec 19 22:38:12 2015
@@ -25,22 +25,15 @@ import javax.xml.parsers.DocumentBuilder
 
 import org.xml.sax.InputSource;
 
-public interface Normalizer {
-    Normalizer IDENTITY = new Normalizer() {
-        public Object normalize(Object value) {
-            return value;
-        }
-    };
-
-    Normalizer LOWER_CASE = new Normalizer() {
-        public Object normalize(Object value) {
-            return value == null ? null : ((String)value).toLowerCase(Locale.ENGLISH);
+public interface Normalizer<T> {
+    Normalizer<String> LOWER_CASE = new Normalizer<String>() {
+        public String normalize(String value) {
+            return value == null ? null : value.toLowerCase(Locale.ENGLISH);
         }
     };
     
-    Normalizer DTD = new Normalizer() {
-        public Object normalize(Object value) throws Exception {
-            String content = (String)value;
+    Normalizer<String> DTD = new Normalizer<String>() {
+        public String normalize(String content) throws Exception {
             if (content == null || content.trim().length() == 0) {
                 return null;
             } else {
@@ -50,11 +43,11 @@ public interface Normalizer {
         }
     };
     
-    Normalizer EMPTY_STRING_TO_NULL = new Normalizer() {
-        public Object normalize(Object value) {
+    Normalizer<String> EMPTY_STRING_TO_NULL = new Normalizer<String>() {
+        public String normalize(String value) {
             return "".equals(value) ? null : value;
         }
     };
 
-    Object normalize(Object value) throws Exception;
+    T normalize(T value) throws Exception;
 }

Modified: webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/XMLStreamReaderComparator.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/XMLStreamReaderComparator.java?rev=1720980&r1=1720979&r2=1720980&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/XMLStreamReaderComparator.java (original)
+++ webservices/axiom/trunk/testing/testutils/src/main/java/org/apache/axiom/testutils/stax/XMLStreamReaderComparator.java Sat Dec 19 22:38:12 2015
@@ -85,23 +85,23 @@ public class XMLStreamReaderComparator {
         return buffer.toString();
     }
     
-    private Object[] invoke(String methodName, Class<?>[] paramTypes, Object[] args) throws Exception {
+    private <T> InvocationResults<T> invoke(Class<T> returnType, String methodName, Class<?>[] paramTypes, Object[] args) throws Exception {
         Method method = XMLStreamReader.class.getMethod(methodName, paramTypes);
         
-        Object expectedResult;
+        T expectedResult;
         Throwable expectedException;
         try {
-            expectedResult = method.invoke(expected, args);
+            expectedResult = returnType.cast(method.invoke(expected, args));
             expectedException = null;
         } catch (InvocationTargetException ex) {
             expectedResult = null;
             expectedException = ex.getCause();
         }
 
-        Object actualResult;
+        T actualResult;
         Throwable actualException;
         try {
-            actualResult = method.invoke(actual, args);
+            actualResult = returnType.cast(method.invoke(actual, args));
             actualException = null;
         } catch (InvocationTargetException ex) {
             actualResult = null;
@@ -114,7 +114,7 @@ public class XMLStreamReaderComparator {
                 fail("Method " + methodName + " threw unexpected exception " +
                         actualException.getClass().getName() + " (" + getLocation() + ")");
             } else {
-                return new Object[] { expectedResult, actualResult };
+                return new InvocationResults<>(expectedResult, actualResult);
             }
         } else {
             if (actualException == null) {
@@ -129,36 +129,36 @@ public class XMLStreamReaderComparator {
         return null;
     }
     
-    private Object[] invoke(String methodName) throws Exception {
-        return invoke(methodName, new Class[0], new Object[0]);
+    private <T> InvocationResults<T> invoke(Class<T> returnType, String methodName) throws Exception {
+        return invoke(returnType, methodName, new Class[0], new Object[0]);
     }
 
-    private Object assertSameResult(String methodName, Class<?>[] paramTypes, Object[] args,
-            Normalizer normalizer) throws Exception {
+    private <T> T assertSameResult(Class<T> returnType, String methodName, Class<?>[] paramTypes, Object[] args,
+            Normalizer<T> normalizer) throws Exception {
         
-        Object[] results = invoke(methodName, paramTypes, args);
+        InvocationResults<T> results = invoke(returnType, methodName, paramTypes, args);
         if (results != null) {
-            Object expected = normalizer.normalize(results[0]);
-            Object actual = normalizer.normalize(results[1]);
+            T expected = normalizer == null ? results.getExpected() : normalizer.normalize(results.getExpected());
+            T actual = normalizer == null ? results.getActual() : normalizer.normalize(results.getActual());
             assertEquals("Return value of " + methodName + " for arguments " +
                         Arrays.asList(args) + " (" + getLocation() + ")",
                         expected, actual);
-            return results[0];
+            return results.getExpected();
         } else {
             return null;
         }
     }
     
-    private Object assertSameResult(String methodName, Class<?>[] paramTypes, Object[] args) throws Exception {
-        return assertSameResult(methodName, paramTypes, args, Normalizer.IDENTITY);
+    private <T> T assertSameResult(Class<T> returnType, String methodName, Class<?>[] paramTypes, Object[] args) throws Exception {
+        return assertSameResult(returnType, methodName, paramTypes, args, null);
     }
     
-    private Object assertSameResult(String methodName, Normalizer normalizer) throws Exception {
-        return assertSameResult(methodName, new Class[0], new Object[0], normalizer);
+    private <T> T assertSameResult(Class<T> returnType, String methodName, Normalizer<T> normalizer) throws Exception {
+        return assertSameResult(returnType, methodName, new Class[0], new Object[0], normalizer);
     }
 
-    private Object assertSameResult(String methodName) throws Exception {
-        return assertSameResult(methodName, Normalizer.IDENTITY);
+    private <T> T assertSameResult(Class<T> returnType, String methodName) throws Exception {
+        return assertSameResult(returnType, methodName, null);
     }
     
     private Set<String> toPrefixSet(Iterator<?> it) {
@@ -251,41 +251,41 @@ public class XMLStreamReaderComparator {
             actual = new SpaceAsCharactersXMLStreamReaderFilter(actual);
         }
         while (true) {
-            int eventType = ((Integer)assertSameResult("getEventType")).intValue();
+            int eventType = assertSameResult(Integer.class, "getEventType");
             if (eventType == XMLStreamReader.START_ELEMENT) {
                 path.addLast(expected.getName());
             }
             if (compareCharacterEncodingScheme) {
-                assertSameResult("getCharacterEncodingScheme");
+                assertSameResult(String.class, "getCharacterEncodingScheme");
             }
             if (compareEncoding) {
-                assertSameResult("getEncoding", Normalizer.LOWER_CASE);
+                assertSameResult(String.class, "getEncoding", Normalizer.LOWER_CASE);
             }
-            Integer attributeCount = (Integer)assertSameResult("getAttributeCount");
+            Integer attributeCount = assertSameResult(Integer.class, "getAttributeCount");
             // Test the behavior of the getAttributeXxx methods for all types of events,
             // to check that an appropriate exception is thrown for events other than
             // START_ELEMENT
             for (int i=0; i < (attributeCount == null ? 1 : attributeCount.intValue()); i++) {
                 Class<?>[] paramTypes = { Integer.TYPE };
                 Object[] args = { new Integer(i) };
-                assertSameResult("getAttributeLocalName", paramTypes, args);
-                assertSameResult("getAttributeName", paramTypes, args);
-                namespaceURIs.add((String)assertSameResult("getAttributeNamespace", paramTypes, args));
-                prefixes.add((String)assertSameResult("getAttributePrefix", paramTypes, args, Normalizer.EMPTY_STRING_TO_NULL));
-                assertSameResult("getAttributeType", paramTypes, args);
-                assertSameResult("getAttributeValue", paramTypes, args);
-                assertSameResult("isAttributeSpecified", paramTypes, args);
+                assertSameResult(String.class, "getAttributeLocalName", paramTypes, args);
+                assertSameResult(QName.class, "getAttributeName", paramTypes, args);
+                namespaceURIs.add(assertSameResult(String.class, "getAttributeNamespace", paramTypes, args));
+                prefixes.add(assertSameResult(String.class, "getAttributePrefix", paramTypes, args, Normalizer.EMPTY_STRING_TO_NULL));
+                assertSameResult(String.class, "getAttributeType", paramTypes, args);
+                assertSameResult(String.class, "getAttributeValue", paramTypes, args);
+                assertSameResult(Boolean.class, "isAttributeSpecified", paramTypes, args);
             }
             if (attributeCount != null) {
                 for (int i=0; i < attributeCount.intValue(); i++) {
                     QName qname = expected.getAttributeName(i);
-                    assertSameResult("getAttributeValue", new Class[] { String.class, String.class },
+                    assertSameResult(String.class, "getAttributeValue", new Class[] { String.class, String.class },
                             new Object[] { qname.getNamespaceURI(), qname.getLocalPart() });
                 }
             }
-            assertSameResult("getLocalName");
-            assertSameResult("getName");
-            Integer namespaceCount = (Integer)assertSameResult("getNamespaceCount");
+            assertSameResult(String.class, "getLocalName");
+            assertSameResult(QName.class, "getName");
+            Integer namespaceCount = assertSameResult(Integer.class, "getNamespaceCount");
             if (namespaceCount != null) {
                 Map<String,String> expectedNamespaces = new HashMap<>();
                 Map<String,String> actualNamespaces = new HashMap<>();
@@ -307,31 +307,27 @@ public class XMLStreamReaderComparator {
                 }
                 assertEquals(expectedNamespaces, actualNamespaces);
             }
-            namespaceURIs.add((String)assertSameResult("getNamespaceURI"));
-            assertSameResult("getPIData");
-            assertSameResult("getPITarget");
-            prefixes.add((String)assertSameResult("getPrefix"));
+            namespaceURIs.add(assertSameResult(String.class, "getNamespaceURI"));
+            assertSameResult(String.class, "getPIData");
+            assertSameResult(String.class, "getPITarget");
+            prefixes.add(assertSameResult(String.class, "getPrefix"));
             if ((eventType != XMLStreamReader.DTD || compareInternalSubset)
                     && (eventType != XMLStreamReader.ENTITY_REFERENCE || compareEntityReplacementValue)) {
-                assertSameResult("getText", eventType == XMLStreamReader.DTD ? Normalizer.DTD : Normalizer.IDENTITY);
+                assertSameResult(String.class, "getText", eventType == XMLStreamReader.DTD ? Normalizer.DTD : null);
             }
-            Integer textLength = (Integer)assertSameResult("getTextLength");
-            Object[] textStart = invoke("getTextStart");
-            Object[] textCharacters = invoke("getTextCharacters");
+            Integer textLength = assertSameResult(Integer.class, "getTextLength");
+            InvocationResults<Integer> textStart = invoke(Integer.class, "getTextStart");
+            InvocationResults<char[]> textCharacters = invoke(char[].class, "getTextCharacters");
             if (textLength != null) {
-                assertEquals(new String((char[])textCharacters[0],
-                                        ((Integer)textStart[0]).intValue(),
-                                        textLength.intValue()),
-                             new String((char[])textCharacters[1],
-                                        ((Integer)textStart[1]).intValue(),
-                                        textLength.intValue()));
-            }
-            assertSameResult("hasName");
-            assertSameResult("hasText");
-            assertSameResult("isCharacters");
-            assertSameResult("isEndElement");
-            assertSameResult("isStartElement");
-            assertSameResult("isWhiteSpace");
+                assertEquals(new String(textCharacters.getExpected(), textStart.getExpected(), textLength),
+                             new String(textCharacters.getActual(), textStart.getActual(), textLength));
+            }
+            assertSameResult(Boolean.class, "hasName");
+            assertSameResult(Boolean.class, "hasText");
+            assertSameResult(Boolean.class, "isCharacters");
+            assertSameResult(Boolean.class, "isEndElement");
+            assertSameResult(Boolean.class, "isStartElement");
+            assertSameResult(Boolean.class, "isWhiteSpace");
             
             // Only check getNamespaceURI(String) for START_ELEMENT and END_ELEMENT. The Javadoc
             // of XMLStreamReader suggests that this method is valid for all states, but Woodstox
@@ -342,7 +338,7 @@ public class XMLStreamReaderComparator {
                     // The StAX specs are not clear about the expected result of getNamespaceURI
                     // when called with prefix "xml" (which doesn't require an explicit declaration)
                     if (prefix != null && !prefix.equals("xml")) {
-                        assertSameResult("getNamespaceURI",
+                        assertSameResult(String.class, "getNamespaceURI",
                                 new Class[] { String.class }, new Object[] { prefix });
                     }
                 }
@@ -354,7 +350,7 @@ public class XMLStreamReaderComparator {
                 path.removeLast();
             }
             
-            assertSameResult("hasNext");
+            assertSameResult(Boolean.class, "hasNext");
             
             int expectedNextEvent;
             try {