You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/05/18 12:12:36 UTC
svn commit: r1124167 - in /cxf/trunk:
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/
tools/wadlto/jaxrs/src/test/resources/wadl/
Author: sergeyb
Date: Wed May 18 10:12:36 2011
New Revision: 1124167
URL: http://svn.apache.org/viewvc?rev=1124167&view=rev
Log:
[CXF-3948] More consistent support for simple and extended QName resource ids
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/CodeGeneratorProvider.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImport.xml
cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImportCatalog.xml
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/CodeGeneratorProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/CodeGeneratorProvider.java?rev=1124167&r1=1124166&r2=1124167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/CodeGeneratorProvider.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/CodeGeneratorProvider.java Wed May 18 10:12:36 2011
@@ -40,6 +40,7 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
+import org.apache.cxf.Bus;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.helpers.FileUtils;
import org.apache.cxf.helpers.IOUtils;
@@ -67,14 +68,20 @@ public class CodeGeneratorProvider imple
private Comparator<String> importsComparator;
private UriInfo ui;
+ private String resourcePackageName;
+ private String resourceName;
private boolean generateInterfaces = true;
-
+ private Bus bus;
@Context
public void setUriInfo(UriInfo uriInfo) {
this.ui = uriInfo;
}
+ public void setBus(Bus bus) {
+ this.bus = bus;
+ }
+
public Response handleRequest(Message m, ClassResourceInfo resourceClass) {
if (!"GET".equals(m.get(Message.HTTP_REQUEST_METHOD))) {
@@ -126,6 +133,9 @@ public class CodeGeneratorProvider imple
SourceGenerator sg = new SourceGenerator(properties);
sg.setGenerateInterfaces(generateInterfaces);
sg.setImportsComparator(importsComparator);
+ sg.setResourceName(resourceName);
+ sg.setPackageName(resourcePackageName);
+ sg.setBus(bus);
sg.generateSource(wadl, srcDir, codeType);
zipSource(srcDir, zipDir);
@@ -260,4 +270,11 @@ public class CodeGeneratorProvider imple
this.generateInterfaces = generateInterfaces;
}
+ public void setPackageName(String name) {
+ this.resourcePackageName = name;
+ }
+
+ public void setResourceName(String name) {
+ this.resourceName = name;
+ }
}
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java?rev=1124167&r1=1124166&r2=1124167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/codegen/SourceGenerator.java Wed May 18 10:12:36 2011
@@ -253,14 +253,11 @@ public class SourceGenerator {
if (resourceId.length() == 0) {
resourceId = DEFAULT_RESOURCE_NAME;
}
- //TODO: if it's expanded QName then use PackageUtils.getPackageNameByNameSpaceURI
- // otherwise assume the last segment after the last dot is the name of the class
- // and the package name is before the last dot
- QName qname = JAXRSUtils.convertStringToQName(resourceId);
- String namespaceURI = qname.getNamespaceURI();
+ boolean expandedQName = resourceId.startsWith("{") ? true : false;
+ QName qname = convertToQName(resourceId, expandedQName);
+ String namespaceURI = possiblyConvertNamespaceURI(qname.getNamespaceURI(), expandedQName);
- if (getSchemaClassName(PackageUtils.getPackageNameByNameSpaceURI(namespaceURI),
- gInfo, qname.getLocalPart(), typeClassNames) != null) {
+ if (getSchemaClassName(namespaceURI, gInfo, qname.getLocalPart(), typeClassNames) != null) {
return;
}
@@ -303,12 +300,26 @@ public class SourceGenerator {
for (Element subEl : childEls) {
String id = subEl.getAttribute("id");
- if (id.length() > 0 && !resourceId.equals(id) && !id.startsWith("{java")) {
+ if (id.length() > 0 && !resourceId.equals(id) && !id.startsWith("{java")
+ && !id.startsWith("java")) {
writeResourceClass(subEl, typeClassNames, gInfo, src, false, interfaceIsGenerated);
}
}
}
+ private QName convertToQName(String resourceId, boolean expandedQName) {
+ QName qname = null;
+ if (expandedQName) {
+ qname = JAXRSUtils.convertStringToQName(resourceId);
+ } else {
+ int lastIndex = resourceId.lastIndexOf(".");
+ qname = lastIndex == -1 ? new QName(resourceId)
+ : new QName(resourceId.substring(0, lastIndex),
+ resourceId.substring(lastIndex + 1));
+ }
+ return qname;
+ }
+
private String getClassType(boolean interfaceIsGenerated) {
return interfaceIsGenerated ? "interface" : "class";
}
@@ -444,13 +455,15 @@ public class SourceGenerator {
responseTypeAvailable = writeResponseType(responseEls, sbCode, imports, typeClassNames, gInfo);
sbCode.append(id);
} else {
- QName qname = JAXRSUtils.convertStringToQName(id);
- String packageName = PackageUtils.getPackageNameByNameSpaceURI(qname.getNamespaceURI());
+ boolean expandedQName = id.startsWith("{");
+ QName qname = convertToQName(id, expandedQName);
+ String packageName = possiblyConvertNamespaceURI(qname.getNamespaceURI(), expandedQName);
+
String clsSimpleName = getSchemaClassName(packageName, gInfo, qname.getLocalPart(),
typeClassNames);
String localName = clsSimpleName == null ? qname.getLocalPart()
: clsSimpleName.substring(packageName.length() + 1);
- String subResponseNs = clsSimpleName == null ? getClassPackageName(qname.getNamespaceURI())
+ String subResponseNs = clsSimpleName == null ? getClassPackageName(packageName)
: clsSimpleName.substring(0, packageName.length());
String parentId = ((Element)resourceEl.getParentNode()).getAttribute("id");
writeSubResponseType(id.equals(parentId), subResponseNs, localName, sbCode, imports);
@@ -476,6 +489,10 @@ public class SourceGenerator {
sbCode.append(getLineSep()).append(getLineSep());
}
+ private String possiblyConvertNamespaceURI(String nsURI, boolean expandedQName) {
+ return expandedQName ? PackageUtils.getPackageNameByNameSpaceURI(nsURI) : nsURI;
+ }
+
private void generateEmptyMethodBody(StringBuilder sbCode, boolean responseTypeAvailable) {
sbCode.append(" {");
sbCode.append(getLineSep()).append(TAB).append(TAB);
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java?rev=1124167&r1=1124166&r2=1124167&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java Wed May 18 10:12:36 2011
@@ -272,7 +272,8 @@ public class WadlGenerator implements Re
: jaxbQname.getNamespaceURI();
String localName = jaxbQname == null ? serviceClass.getSimpleName()
: jaxbQname.getLocalPart();
- sb.append(" id=\"").append("{" + pName + "}" + localName).append("\"");
+ String finalName = jaxbQname == null ? pName + "." : "{" + pName + "}";
+ sb.append(" id=\"").append(finalName + localName).append("\"");
}
sb.append(">");
}
Modified: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml?rev=1124167&r1=1124166&r2=1124167&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstore.xml Wed May 18 10:12:36 2011
@@ -46,7 +46,7 @@
</xs:schema>
</grammars>
<resources base="http://localhost:8080/baz">
- <resource path="/bookstore/{id}" id="{org.apache.cxf.jaxrs.model.wadl}BookStore">
+ <resource path="/bookstore/{id}" id="org.apache.cxf.jaxrs.model.wadl.BookStore">
<doc xml:lang="en-us" title="book store resource">super resource</doc>
<param name="id" style="template" type="xs:long"/>
@@ -145,7 +145,7 @@
</resource>
<!-- Dynamic subresource -->
- <resource path="/books/{bookid}" id="{java.lang}Object">
+ <resource path="/books/{bookid}" id="java.lang.Object">
<param name="id" style="template" type="xs:int"/>
<param name="bookid" style="template" type="xs:int"/>
<param name="mid" style="matrix" type="xs:int"/>
@@ -207,7 +207,7 @@
</resource>
</resource>
- <resource path="/form" id="{org.apache.cxf.jaxrs.model.wadl}FormInterface">
+ <resource path="/form" id="org.apache.cxf.jaxrs.model.wadl.FormInterface">
<resource path="/form1">
<method name="POST" id="form1">
@@ -235,7 +235,7 @@
</resource>
<!-- Recursive subresource -->
- <resource path="/itself" id="{org.apache.cxf.jaxrs.model.wadl}BookStore">
+ <resource path="/itself" id="org.apache.cxf.jaxrs.model.wadl.BookStore">
</resource>
</resource>
Modified: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImport.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImport.xml?rev=1124167&r1=1124166&r2=1124167&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImport.xml (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImport.xml Wed May 18 10:12:36 2011
@@ -23,7 +23,7 @@
<include href="schemas/book.xsd"/>
</grammars>
<resources base="http://localhost:8080/baz">
- <resource path="/bookstore" id="{org.apache.cxf.jaxrs.model.wadl}BookStore">
+ <resource path="/bookstore" id="{wadl.model.jaxrs.cxf.apache.org}BookStore">
<resource path="/books/{bookid}">
<param name="bookid" style="template" type="xs:int"/>
Modified: cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImportCatalog.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImportCatalog.xml?rev=1124167&r1=1124166&r2=1124167&view=diff
==============================================================================
--- cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImportCatalog.xml (original)
+++ cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/bookstoreImportCatalog.xml Wed May 18 10:12:36 2011
@@ -23,7 +23,7 @@
<include href="http://schemas/books/book.xsd"/>
</grammars>
<resources base="http://localhost:8080/baz">
- <resource path="/bookstore" id="{org.apache.cxf.jaxrs.model.wadl}BookStore">
+ <resource path="/bookstore" id="{http://wadl.model.jaxrs.cxf.apache.org}BookStore">
<resource path="/books/{bookid}">
<param name="bookid" style="template" type="xs:int"/>