Author: sergeyb
Date: Fri May 11 15:18:52 2012
New Revision: 1337204
URL: http://svn.apache.org/viewvc?rev=1337204&view=rev
Log:
[CXF-4311] Attempting to generate the unique method names when no method ids
are available
Added:
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourceSameTargetNsSchemas.xml
(with props)
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourcesNoId.xml
(with props)
Modified:
cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
Modified:
cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java?rev=1337204&r1=1337203&r2=1337204&view=diff
==============================================================================
---
cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
(original)
+++
cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java
Fri May 11 15:18:52 2012
@@ -488,8 +488,12 @@ public class SourceGenerator {
private String firstCharToUpperCase(String name) {
StringBuilder sb = new StringBuilder();
- sb.append(Character.toUpperCase(name.charAt(0)));
- return name.length() > 1 ? sb.append(name.substring(1)).toString() :
sb.toString();
+ if (name.length() > 0) {
+ sb.append(Character.toUpperCase(name.charAt(0)));
+ return name.length() > 1 ? sb.append(name.substring(1)).toString()
: sb.toString();
+ } else {
+ return sb.toString();
+ }
}
private boolean writeAnnotations(boolean interfaceIsGenerated) {
@@ -638,7 +642,11 @@ public class SourceGenerator {
boolean responseTypeAvailable = true;
if (methodNameLowerCase.length() > 0) {
responseTypeAvailable = writeResponseType(responseEls, sbCode,
imports, info);
- sbCode.append(id + suffixName);
+ String genMethodName = id + suffixName;
+ if (methodNameLowerCase.equals(genMethodName)) {
+ genMethodName +=
firstCharToUpperCase(currentPath.replaceAll("/", ""));
+ }
+ sbCode.append(genMethodName);
} else {
boolean expandedQName = id.startsWith("{");
QName qname = convertToQName(id, expandedQName);
Modified:
cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java?rev=1337204&r1=1337203&r2=1337204&view=diff
==============================================================================
---
cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
(original)
+++
cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java
Fri May 11 15:18:52 2012
@@ -332,6 +332,66 @@ public class JAXRSContainerTest extends
}
@Test
+ public void testCodeGenNoIds3() {
+ try {
+ JAXRSContainer container = new JAXRSContainer(null);
+
+ ToolContext context = new ToolContext();
+ context.put(WadlToolConstants.CFG_OUTPUTDIR,
output.getCanonicalPath());
+ context.put(WadlToolConstants.CFG_WADLURL,
getLocation("/wadl/resourcesNoId.xml"));
+ context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+ container.setContext(context);
+ container.execute();
+
+ assertNotNull(output.list());
+
+ List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." +
"java" + "$");
+ assertEquals(1, javaFiles.size());
+ assertTrue(checkContains(javaFiles,
"application.TestRsResource.java"));
+ List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\."
+ "class" + "$");
+ assertEquals(1, classFiles.size());
+ assertTrue(checkContains(classFiles,
"application.TestRsResource.class"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+
+ @Test
+ public void testCodeTwoSchemasSameTargetNs() {
+ try {
+ JAXRSContainer container = new JAXRSContainer(null);
+
+ ToolContext context = new ToolContext();
+ context.put(WadlToolConstants.CFG_OUTPUTDIR,
output.getCanonicalPath());
+ context.put(WadlToolConstants.CFG_WADLURL,
getLocation("/wadl/resourceSameTargetNsSchemas.xml"));
+ context.put(WadlToolConstants.CFG_COMPILE, "true");
+
+ container.setContext(context);
+ container.execute();
+
+ List<File> javaFiles = FileUtils.getFilesRecurse(output, ".+\\." +
"java" + "$");
+ assertEquals(4, javaFiles.size());
+ assertTrue(checkContains(javaFiles, "application.Resource.java"));
+ assertTrue(checkContains(javaFiles,
"com.example.test.ObjectFactory.java"));
+ assertTrue(checkContains(javaFiles,
"com.example.test.package-info.java"));
+ assertTrue(checkContains(javaFiles,
"com.example.test.TestCompositeObject.java"));
+ List<File> classFiles = FileUtils.getFilesRecurse(output, ".+\\."
+ "class" + "$");
+ assertEquals(4, classFiles.size());
+ assertTrue(checkContains(classFiles,
"application.Resource.class"));
+ assertTrue(checkContains(classFiles,
"com.example.test.ObjectFactory.class"));
+ assertTrue(checkContains(classFiles,
"com.example.test.package-info.class"));
+ assertTrue(checkContains(classFiles,
"com.example.test.TestCompositeObject.class"));
+
+
+ assertNotNull(output.list());
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail();
+ }
+ }
+ @Test
public void testCodeGenWithResourceSet() {
try {
JAXRSContainer container = new JAXRSContainer(null);
Added:
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourceSameTargetNsSchemas.xml
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourceSameTargetNsSchemas.xml?rev=1337204&view=auto
==============================================================================
---
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourceSameTargetNsSchemas.xml
(added)
+++
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourceSameTargetNsSchemas.xml
Fri May 11 15:18:52 2012
@@ -0,0 +1,31 @@
+<application xmlns="http://wadl.dev.java.net/2009/02"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:ns1="http://example.com/test"><doc title="My Application"/>
+ <grammars>
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified"
+ elementFormDefault="unqualified"
targetNamespace="http://example.com/test">
+ <xs:complexType name="testCompositeObject">
+ <xs:sequence>
+ <xs:element name="id" type="xs:int"/>
+ <xs:element minOccurs="0" name="name" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:schema>
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://example.com/test" attributeFormDefault="unqualified"
elementFormDefault="unqualified" targetNamespace="http://example.com/test">
+ <xs:import/>
+ <xs:element name="test" type="testCompositeObject"/>
+ </xs:schema>
+</grammars>
+<resources base="http://localhost:8080/baz">
+<resource path="/"><resource path="setTest3"><method name="PUT">
+ <request>
+ <representation mediaType="application/xml" element="ns1:test"/>
+ </request>
+ <response>
+ <representation mediaType="application/xml" element="ns1:test"/>
+ </response>
+ </method>
+ </resource>
+ </resource>
+</resources>
+</application>
\ No newline at end of file
Propchange:
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourceSameTargetNsSchemas.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourceSameTargetNsSchemas.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange:
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourceSameTargetNsSchemas.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourcesNoId.xml
URL:
http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourcesNoId.xml?rev=1337204&view=auto
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourcesNoId.xml
(added)
+++ cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourcesNoId.xml Fri
May 11 15:18:52 2012
@@ -0,0 +1,25 @@
+<application xmlns="http://wadl.dev.java.net/2009/02"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+ <resources base="http://localhost:8080/baz">
+ <resource path="/TestRs">
+ <resource path="/helloWorld">
+ <method name="GET">
+ <response>
+ <representation mediaType="application/octet-stream">
+ <param name="result" style="plain" type="xs:string"/>
+ </representation></response>
+ </method>
+ </resource>
+ <resource path="/helloWorld2">
+ <method name="GET">
+ <response>
+ <representation mediaType="application/octet-stream">
+ <param name="result" style="plain" type="xs:string"/>
+ </representation>
+ </response>
+ </method>
+ </resource>
+ </resource>
+ </resources>
+</application>
\ No newline at end of file
Propchange:
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourcesNoId.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourcesNoId.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange:
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourcesNoId.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml