From 50702e312dd71132300a53695a9f1310a930170b Mon Sep 17 00:00:00 2001 From: David Walluck Date: Wed, 19 Aug 2026 15:32:03 -0400 Subject: [PATCH] Fix generics and some formatting --- pom.xml | 2 +- rwx-test/pom.xml | 2 +- .../test/jira/JiraServerInfoConverter.java | 2 +- .../rwx/test/koji/KojiMultiCallTest.java | 6 +- .../org/commonjava/rwx/core/Registry.java | 3 +- .../org/commonjava/rwx/util/ParseUtils.java | 9 ++- .../org/commonjava/rwx/util/RenderUtils.java | 20 ++--- rwx/src/main/resources/groovy/Parser.groovy | 64 ++++++---------- rwx/src/main/resources/groovy/Registry.groovy | 15 ++-- rwx/src/main/resources/groovy/Renderer.groovy | 74 ++++++------------- .../commonjava/rwx/core/XmlRpcParserTest.java | 44 +++++------ rwx/src/test/resources/logback-test.xml | 6 +- 12 files changed, 102 insertions(+), 145 deletions(-) diff --git a/pom.xml b/pom.xml index 6c543bb..05d0af5 100644 --- a/pom.xml +++ b/pom.xml @@ -105,7 +105,7 @@ hamcrest-core - + diff --git a/rwx-test/pom.xml b/rwx-test/pom.xml index d685bb1..bf86454 100644 --- a/rwx-test/pom.xml +++ b/rwx-test/pom.xml @@ -52,5 +52,5 @@ - + diff --git a/rwx-test/src/main/java/org/commonjava/rwx/test/jira/JiraServerInfoConverter.java b/rwx-test/src/main/java/org/commonjava/rwx/test/jira/JiraServerInfoConverter.java index 1e8cf8b..d94252b 100644 --- a/rwx-test/src/main/java/org/commonjava/rwx/test/jira/JiraServerInfoConverter.java +++ b/rwx-test/src/main/java/org/commonjava/rwx/test/jira/JiraServerInfoConverter.java @@ -29,7 +29,7 @@ public class JiraServerInfoConverter implements Converter map = (Map) object; + Map map = (Map) object; String version = (String) map.get( "version" ); String baseUrl = (String) map.get( "baseUrl" ); String buildDate = (String) map.get( "buildDate" ); diff --git a/rwx-test/src/test/java/org/commonjava/rwx/test/koji/KojiMultiCallTest.java b/rwx-test/src/test/java/org/commonjava/rwx/test/koji/KojiMultiCallTest.java index 33c53b2..9f5053b 100644 --- a/rwx-test/src/test/java/org/commonjava/rwx/test/koji/KojiMultiCallTest.java +++ b/rwx-test/src/test/java/org/commonjava/rwx/test/koji/KojiMultiCallTest.java @@ -166,7 +166,7 @@ private void assertMultiCallResponse( MultiCallResponse response ) assertEquals( "org.dashbuilder-dashbuilder-parent-metadata", kojiBuildInfo.getPackageName() ); // if we do not know the type, access Map directly - Map data1Map = (Map) data1; + Map data1Map = (Map) data1; assertEquals( 48475, data1Map.get( "package_id" ) ); assertEquals( 513598, data1Map.get( "build_id" ) ); assertEquals( "org.dashbuilder-dashbuilder-parent-metadata", data1Map.get( "package_name" ) ); @@ -174,7 +174,7 @@ private void assertMultiCallResponse( MultiCallResponse response ) // b. verify response from listTags call - List data2List = (List) data2; + List data2List = (List) data2; assertEquals( 4, data2List.size() ); // if we know the type (KojiTagInfo) in the list, parse the element to it @@ -185,7 +185,7 @@ private void assertMultiCallResponse( MultiCallResponse response ) // if we do not know the type, access List directly Object data2_1 = data2List.get( 0 ); assertTrue( data2_1 instanceof Map ); - Map data2_1Map = (Map) data2_1; + Map data2_1Map = (Map) data2_1; assertEquals( "jb-bxms-6.3-candidate", data2_1Map.get( "name" ) ); assertEquals( 8829, data2_1Map.get( "id" ) ); } diff --git a/rwx/src/main/java/org/commonjava/rwx/core/Registry.java b/rwx/src/main/java/org/commonjava/rwx/core/Registry.java index 1103665..ab36998 100644 --- a/rwx/src/main/java/org/commonjava/rwx/core/Registry.java +++ b/rwx/src/main/java/org/commonjava/rwx/core/Registry.java @@ -49,7 +49,8 @@ public T parseAs( Object o, Class type ) public Object renderTo( Object obj ) { - Renderer renderer = rendererMap.get( obj.getClass() ); + @SuppressWarnings( "unchecked" ) + Renderer renderer = (Renderer) rendererMap.get( obj.getClass() ); if ( renderer == null ) { throw new IllegalArgumentException( "Renderer not found for " + obj.getClass() ); diff --git a/rwx/src/main/java/org/commonjava/rwx/util/ParseUtils.java b/rwx/src/main/java/org/commonjava/rwx/util/ParseUtils.java index 142072d..39763dd 100644 --- a/rwx/src/main/java/org/commonjava/rwx/util/ParseUtils.java +++ b/rwx/src/main/java/org/commonjava/rwx/util/ParseUtils.java @@ -61,7 +61,14 @@ public static Object upgradeCast( Class clazz, Object value ) private static Class wrap( Class c ) { - return c.isPrimitive() ? (Class) PRIMITIVES_TO_WRAPPERS.get( c ) : c; + if ( !c.isPrimitive() ) + { + return c; + } + + @SuppressWarnings( "unchecked" ) + Class wrapped = (Class) PRIMITIVES_TO_WRAPPERS.get( c ); + return wrapped; } private static final Map, Class> PRIMITIVES_TO_WRAPPERS = new HashMap<>(); diff --git a/rwx/src/main/java/org/commonjava/rwx/util/RenderUtils.java b/rwx/src/main/java/org/commonjava/rwx/util/RenderUtils.java index 3092b4f..cbbfba3 100644 --- a/rwx/src/main/java/org/commonjava/rwx/util/RenderUtils.java +++ b/rwx/src/main/java/org/commonjava/rwx/util/RenderUtils.java @@ -62,11 +62,11 @@ else if ( rpcObject instanceof MethodResponse ) } else if ( rpcObject instanceof Map ) { - return toStructPartXMLString( (Map) rpcObject ); + return toStructPartXMLString( (Map) rpcObject ); } else if ( rpcObject instanceof List ) { - return toArrayPartXMLString( (List) rpcObject ); + return toArrayPartXMLString( (List) rpcObject ); } else { @@ -74,7 +74,7 @@ else if ( rpcObject instanceof List ) } } - private static String toStructPartXMLString( Map rpcObject ) throws XmlRpcException + private static String toStructPartXMLString( Map rpcObject ) throws XmlRpcException { StringWriter result = new StringWriter(); try @@ -90,7 +90,7 @@ private static String toStructPartXMLString( Map rpcObject ) thr return result.toString(); } - private static String toArrayPartXMLString( List rpcObject ) throws XmlRpcException + private static String toArrayPartXMLString( List rpcObject ) throws XmlRpcException { StringWriter result = new StringWriter(); try @@ -174,11 +174,11 @@ private static void writeValue( XMLStreamWriter w, Object object ) throws XMLStr if ( object instanceof List ) { - writeArray( w, (List) object ); + writeArray( w, (List) object ); } else if ( object instanceof Map ) { - writeStruct( w, (Map) object ); + writeStruct( w, (Map) object ); } else { @@ -188,7 +188,7 @@ else if ( object instanceof Map ) w.writeEndElement(); } - private static void writeArray( XMLStreamWriter w, List objects ) + private static void writeArray( XMLStreamWriter w, List objects ) throws XMLStreamException, CoercionException { w.writeStartElement( ARRAY ); @@ -201,15 +201,15 @@ private static void writeArray( XMLStreamWriter w, List objects ) w.writeEndElement(); } - private static void writeStruct( XMLStreamWriter w, Map map ) + private static void writeStruct( XMLStreamWriter w, Map map ) throws XMLStreamException, CoercionException { w.writeStartElement( STRUCT ); - for ( Map.Entry entry : map.entrySet() ) + for ( Map.Entry entry : map.entrySet() ) { w.writeStartElement( MEMBER ); w.writeStartElement( NAME ); - w.writeCharacters( entry.getKey() ); + w.writeCharacters( (String) entry.getKey() ); w.writeEndElement(); writeValue( w, entry.getValue() ); w.writeEndElement(); diff --git a/rwx/src/main/resources/groovy/Parser.groovy b/rwx/src/main/resources/groovy/Parser.groovy index 34886a2..c1db6b2 100644 --- a/rwx/src/main/resources/groovy/Parser.groovy +++ b/rwx/src/main/resources/groovy/Parser.groovy @@ -18,65 +18,47 @@ import java.util.Map; public class ${simpleClassName}_Parser implements Parser<${simpleClassName}> { @Override + @SuppressWarnings( "unchecked" ) public ${simpleClassName} parse( Object object ) { ${simpleClassName} ret = new ${simpleClassName}(); Object val; - - <% if (structPart == true) { %> - Map map = (Map) object; - <% params.each { %> +<% if (structPart == true) { %> + Map map = (Map) object; +<% params.each { %> val = map.get( "${it.key}" ); if ( val != null ) - { + { val = nullifyNil( val ); - <% if (it.converter != null) { %> - ret.${it.methodName}( new ${it.converter}().parse( val ) ); - <% } else if (it.actionClass == null) { %> - <% if (it.isPrimitive) { %>if ( val != null ) <% } %>ret.${it.methodName}( (${it.type}) <% if (it.isUpgradeCast) { %>upgradeCast( ${it.type}.class, val )<% } else { %>val<% } %> ); - <% } else { %> - <% if (it.contains) { %> - List<${it.elementClass}> ${it.localListVariableName} = new ArrayList<>(); - for ( Object obj : ( List ) val ) +<% if (it.converter != null) { %> ret.${it.methodName}( new ${it.converter}().parse( val ) ); +<% } else if (it.actionClass == null) { %> <% if (it.isPrimitive) { %>if ( val != null ) <% } %>ret.${it.methodName}( <% if (it.type != 'java.lang.Object') { %>(${it.type}) <% } %><% if (it.isUpgradeCast) { %>upgradeCast( ${it.type}.class, val )<% } else { %>val<% } %> ); +<% } else if (it.contains) { %> List<${it.elementClass}> ${it.localListVariableName} = new ArrayList<>(); + for ( Object obj : (List) val ) { ${it.localListVariableName}.add( new ${it.actionClass}().parse( obj ) ); } ret.${it.methodName}( ${it.localListVariableName} ); - <% } else { %> - ret.${it.methodName}( new ${it.actionClass}().parse( val ) ); - <% } %> - <% } %> - } - <% } %> - <% } else { %> - <% if (arrayPart == true) { %> - List list = (List)object; - <% } else { %> - List list = ((RpcObject) object).getParams(); - <% } %> - <% params.eachWithIndex { it, idx -> %> +<% } else { %> ret.${it.methodName}( new ${it.actionClass}().parse( val ) ); +<% } %> } +<% } %><% } else { %><% if (arrayPart == true) { %> + List list = (List) object; +<% } else { %> + List list = ((RpcObject) object).getParams(); +<% } %><% params.eachWithIndex { it, idx -> %> val = list.get( ${idx} ); if ( val != null && !isNil( val ) ) { - <% if (it.converter != null) { %> - ret.${it.methodName}( new ${it.converter}().parse( val ) ); - <% } else if (it.actionClass == null) { %> - ret.${it.methodName}( (${it.type}) <% if (it.isUpgradeCast) { %>upgradeCast( ${it.type}.class, val )<% } else { %>val<% } %> ); - <% } else { %> - <% if (it.contains) { %> - List<${it.elementClass}> ${it.localListVariableName} = new ArrayList<>(); - for ( Object obj : ( List ) val ) +<% if (it.converter != null) { %> ret.${it.methodName}( new ${it.converter}().parse( val ) ); +<% } else if (it.actionClass == null) { %> ret.${it.methodName}( <% if (it.type != 'java.lang.Object') { %>(${it.type}) <% } %><% if (it.isUpgradeCast) { %>upgradeCast( ${it.type}.class, val )<% } else { %>val<% } %> ); +<% } else if (it.contains) { %> List<${it.elementClass}> ${it.localListVariableName} = new ArrayList<>(); + for ( Object obj : (List) val ) { ${it.localListVariableName}.add( new ${it.actionClass}().parse( obj ) ); } ret.${it.methodName}( ${it.localListVariableName} ); - <% } else { %> - ret.${it.methodName}( new ${it.actionClass}().parse( val ) ); - <% } %> - <% } %> - } - <% } %> - <% } %> +<% } else { %> ret.${it.methodName}( new ${it.actionClass}().parse( val ) ); +<% } %> } +<% } %><% } %> return ret; } } diff --git a/rwx/src/main/resources/groovy/Registry.groovy b/rwx/src/main/resources/groovy/Registry.groovy index d7f7c96..0688451 100644 --- a/rwx/src/main/resources/groovy/Registry.groovy +++ b/rwx/src/main/resources/groovy/Registry.groovy @@ -2,22 +2,17 @@ package ${packageName}; import org.commonjava.rwx.core.Registry; -<% imports.each { %> -import ${it};<% } %> - +<% imports.each { %>import ${it}; +<% } %> /** * Created by RWX AnnoProcessor. */ -public class ${registrySimpleClassName} +public final class ${registrySimpleClassName} extends Registry { - public ${registrySimpleClassName}() { - <% classes.each { %> - setRenderer( ${it}.class, new ${it}_Renderer() ); +<% classes.each { %> setRenderer( ${it}.class, new ${it}_Renderer() ); setParser( ${it}.class, new ${it}_Parser() ); - <% } %> - } - +<% } %> } } diff --git a/rwx/src/main/resources/groovy/Renderer.groovy b/rwx/src/main/resources/groovy/Renderer.groovy index cfb29bd..5d91f35 100644 --- a/rwx/src/main/resources/groovy/Renderer.groovy +++ b/rwx/src/main/resources/groovy/Renderer.groovy @@ -19,76 +19,48 @@ public class ${simpleClassName}_Renderer implements Renderer<${simpleClassName}> @Override public Object render( ${simpleClassName} object ) { - <% if (request == true) { %> - MethodCall methodCall = new MethodCall(); +<% if (request == true) { %> MethodCall methodCall = new MethodCall(); methodCall.setMethodName( "${methodName}" ); - <% } else if (response == true) { %> - MethodResponse methodResponse = new MethodResponse(); - <% } %> - <% if (structPart == true) { %> - Map map = new HashMap<>(); - <% params.each { %> - <% if (it.converter != null) { %> - map.put( "${it.key}", new ${it.converter}().render( object.${it.methodName}() ) ); - <% } else if (it.actionClass == null) { %> - map.put( "${it.key}", object.${it.methodName}() ); - <% } else { %> - if ( object.${it.methodName}() != null ) +<% } else if (response == true) { %> MethodResponse methodResponse = new MethodResponse(); + +<% } %><% if (structPart == true) { %> Map map = new HashMap<>(); +<% params.each { %><% if (it.converter != null) { %> map.put( "${it.key}", new ${it.converter}().render( object.${it.methodName}() ) ); +<% } else if (it.actionClass == null) { %> map.put( "${it.key}", object.${it.methodName}() ); +<% } else { %> if ( object.${it.methodName}() != null ) { - <% if (it.contains) { %> - List ${it.localListVariableName} = new ArrayList<>( ); +<% if (it.contains) { %> List ${it.localListVariableName} = new ArrayList<>(); for ( ${it.elementClass} obj : object.${it.methodName}() ) { ${it.localListVariableName}.add( new ${it.actionClass}().render( obj ) ); } map.put( "${it.key}", ${it.localListVariableName} ); - <% } else { %> - map.put( "${it.key}", new ${it.actionClass}().render( object.${it.methodName}() ) ); - <% } %> - } - <% } %> - <% } %> - <% } else { %> - List list = new ArrayList<>(); - <% params.each { %> - <% if (it.converter != null) { %> - list.add( new ${it.converter}().render( object.${it.methodName}() ) ); - <% } else if (it.actionClass == null) { %> - list.add( object.${it.methodName}() ); - <% } else { %> - if ( object.${it.methodName}() != null ) +<% } else { %> map.put( "${it.key}", new ${it.actionClass}().render( object.${it.methodName}() ) ); +<% } %> } +<% } %><% } %><% } else { %> List list = new ArrayList<>(); +<% params.each { %><% if (it.converter != null) { %> list.add( new ${it.converter}().render( object.${it.methodName}() ) ); +<% } else if (it.actionClass == null) { %> list.add( object.${it.methodName}() ); +<% } else { %> if ( object.${it.methodName}() != null ) { - <% if (it.contains) { %> - List ${it.localListVariableName} = new ArrayList<>( ); +<% if (it.contains) { %> List ${it.localListVariableName} = new ArrayList<>(); for ( ${it.elementClass} obj : object.${it.methodName}() ) { ${it.localListVariableName}.add( new ${it.actionClass}().render( obj ) ); } list.add( ${it.localListVariableName} ); - <% } else { %> - list.add( new ${it.actionClass}().render( object.${it.methodName}() ) ); - <% } %> - } +<% } else { %> list.add( new ${it.actionClass}().render( object.${it.methodName}() ) ); +<% } %> } else { list.add( null ); } - <% } %> - <% } %> - <% } %> - - <% if (request == true) { %> - methodCall.setParams( list ); +<% } %><% } %><% } %> +<% if (request == true) { %> methodCall.setParams( list ); return methodCall; - <% } else if (response == true) { %> - methodResponse.setParams( list ); +<% } else if (response == true) { %> methodResponse.setParams( list ); return methodResponse; - <% } else if (arrayPart == true) { %> - return list; - <% } else { %> - map.values().removeAll( java.util.Collections.singleton( null ) ); +<% } else if (arrayPart == true) { %> return list; +<% } else { %> map.values().removeAll( java.util.Collections.singleton( null ) ); return map; - <% } %> - } +<% } %> } } diff --git a/rwx/src/test/java/org/commonjava/rwx/core/XmlRpcParserTest.java b/rwx/src/test/java/org/commonjava/rwx/core/XmlRpcParserTest.java index 9c2a867..932593f 100644 --- a/rwx/src/test/java/org/commonjava/rwx/core/XmlRpcParserTest.java +++ b/rwx/src/test/java/org/commonjava/rwx/core/XmlRpcParserTest.java @@ -81,7 +81,7 @@ public void requestWithOneStructParamTest() throws XMLStreamException, XmlRpcExc Object param = params.get( 0 ); assertTrue( param instanceof Map ); - Map struct = (Map) param; + Map struct = (Map) param; assertEquals( "test", struct.get( "key" ) ); String methodName = request.getMethodName(); @@ -102,7 +102,7 @@ public void requestWithOneArrayParamTest() throws XMLStreamException, XmlRpcExce Object param = params.get( 0 ); assertTrue( param instanceof List ); - List array = (List) param; + List array = (List) param; assertEquals( "test", array.get( 0 ) ); String methodName = request.getMethodName(); @@ -123,9 +123,9 @@ public void requestWithArrayInStructTest() throws XMLStreamException, XmlRpcExce Object param = params.get( 0 ); assertTrue( param instanceof Map ); - Map struct = (Map) param; + Map struct = (Map) param; - List array = (List) struct.get( "key" ); + List array = (List) struct.get( "key" ); assertEquals( "test", array.get( 0 ) ); String methodName = request.getMethodName(); @@ -145,15 +145,15 @@ public void kojiMulticallRequestTest() throws XMLStreamException, XmlRpcExceptio assertEquals( 1, params.size() ); - List array = (List) params.get( 0 ); + List array = (List) params.get( 0 ); - Map value1 = (Map) array.get( 0 ); + Map value1 = (Map) array.get( 0 ); assertEquals( "getBuild", value1.get( "methodName" ) ); - assertEquals( nvr, ( (List) value1.get( "params" ) ).get( 0 ) ); + assertEquals( nvr, ( (List) value1.get( "params" ) ).get( 0 ) ); - Map value2 = (Map) array.get( 1 ); + Map value2 = (Map) array.get( 1 ); assertEquals( "listTags", value2.get( "methodName" ) ); - assertEquals( nvr, ( (List) value2.get( "params" ) ).get( 0 ) ); + assertEquals( nvr, ( (List) value2.get( "params" ) ).get( 0 ) ); String methodName = request.getMethodName(); assertEquals( "multiCall", methodName ); @@ -190,7 +190,7 @@ public void simpleFaultResponseTest() throws XMLStreamException, XmlRpcException assertTrue( value instanceof Map ); - Map m = (Map) value; + Map m = (Map) value; Object p = m.get( "faultCode" ); assertTrue( p instanceof Integer ); @@ -212,7 +212,7 @@ public void jiraServerInfoTest() throws XMLStreamException, XmlRpcException Object p = response.getParams().get( 0 ); assertTrue( p instanceof Map ); - Map struct = (Map) p; + Map struct = (Map) p; assertEquals( "4.1.2", struct.get( "version" ) ); assertEquals( "Enterprise", struct.get( "edition" ) ); @@ -231,7 +231,7 @@ public void kojiGetBuildResponseTest() throws XMLStreamException, XmlRpcExceptio Object p = response.getParams().get( 0 ); assertTrue( p instanceof Map ); - Map struct = (Map) p; + Map struct = (Map) p; assertEquals( "org.dashbuilder-dashbuilder-parent-metadata", struct.get( "package_name" ) ); assertSame( Nil.NIL_VALUE, struct.get( "extra" ) ); @@ -251,31 +251,31 @@ public void kojiMulticallResponseTest() throws XMLStreamException, XmlRpcExcepti Object p = response.getParams().get( 0 ); assertTrue( p instanceof List ); - List array = (List) p; + List array = (List) p; - List array1 = (List) array.get( 0 ); - Map struct = (Map) array1.get( 0 ); + List array1 = (List) array.get( 0 ); + Map struct = (Map) array1.get( 0 ); assertEquals( "org.dashbuilder-dashbuilder-parent-metadata", struct.get( "package_name" ) ); assertEquals( Nil.NIL_VALUE, struct.get( "extra" ) ); assertEquals( 48475, struct.get( "package_id" ) ); assertEquals( "0.4.0.Final", struct.get( "version" ) ); - List array2 = (List) array.get( 1 ); - List array21 = (List) array2.get( 0 ); + List array2 = (List) array.get( 1 ); + List array21 = (List) array2.get( 0 ); - Map tag1 = (Map) array21.get( 0 ); + Map tag1 = (Map) array21.get( 0 ); assertEquals( true, tag1.get( "maven_support" ) ); assertEquals( "jb-bxms-6.3-candidate", tag1.get( "name" ) ); - Map tag2 = (Map) array21.get( 1 ); + Map tag2 = (Map) array21.get( 1 ); assertEquals( true, tag2.get( "maven_support" ) ); assertEquals( "jb-cs-maven-candidate", tag2.get( "name" ) ); - Map tag3 = (Map) array21.get( 2 ); + Map tag3 = (Map) array21.get( 2 ); assertEquals( true, tag3.get( "maven_support" ) ); assertEquals( "jb-fis-2.0-maven-imports", tag3.get( "name" ) ); - Map tag4 = (Map) array21.get( 3 ); + Map tag4 = (Map) array21.get( 3 ); assertEquals( true, tag4.get( "maven_support" ) ); assertEquals( "jb-mm-7.0-maven-candidate", tag4.get( "name" ) ); } @@ -291,7 +291,7 @@ public void kojiGetBuildTypeNilResponseTest() throws Exception Object p = response.getParams().get( 0 ); assertTrue( p instanceof Map ); - Map struct = (Map) p; + Map struct = (Map) p; assertSame( Nil.NIL_VALUE, struct.get( "rpm" ) ); } diff --git a/rwx/src/test/resources/logback-test.xml b/rwx/src/test/resources/logback-test.xml index cceb836..f2a0827 100644 --- a/rwx/src/test/resources/logback-test.xml +++ b/rwx/src/test/resources/logback-test.xml @@ -4,7 +4,7 @@ are made available under the terms of the GNU Public License v3.0 which accompanies this distribution, and is available at http://www.gnu.org/licenses/gpl.html - + Contributors: Red Hat, Inc. - initial API and implementation --> @@ -20,6 +20,6 @@ - - + +