Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B454AD4AB for ; Thu, 23 Aug 2012 17:58:45 +0000 (UTC) Received: (qmail 76220 invoked by uid 500); 23 Aug 2012 17:58:45 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 76163 invoked by uid 500); 23 Aug 2012 17:58:45 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 76153 invoked by uid 99); 23 Aug 2012 17:58:45 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Aug 2012 17:58:45 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Aug 2012 17:58:44 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 437B6238896F; Thu, 23 Aug 2012 17:58:01 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1376613 - in /cxf/trunk/tools/wadlto/jaxrs/src: main/java/org/apache/cxf/tools/wadlto/ main/java/org/apache/cxf/tools/wadlto/jaxrs/ test/java/org/apache/cxf/tools/wadlto/jaxrs/ test/resources/wadl/ Date: Thu, 23 Aug 2012 17:58:00 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120823175801.437B6238896F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Thu Aug 23 17:58:00 2012 New Revision: 1376613 URL: http://svn.apache.org/viewvc?rev=1376613&view=rev Log: [CXF-4485] Support for inheriting resource-level parameters Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/SourceGenerator.java cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml cxf/trunk/tools/wadlto/jaxrs/src/test/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainerTest.java cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/resourcesNoId.xml cxf/trunk/tools/wadlto/jaxrs/src/test/resources/wadl/singleResourceWithRefs.xml Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java?rev=1376613&r1=1376612&r2=1376613&view=diff ============================================================================== --- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java (original) +++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/WadlToolConstants.java Thu Aug 23 17:58:00 2012 @@ -49,6 +49,7 @@ public final class WadlToolConstants { public static final String CFG_WADL_NAMESPACE = "wadlNamespace"; public static final String CFG_GENERATE_ENUMS = "generateEnums"; + public static final String CFG_INHERIT_PARAMS = "inheritResourceParams"; public static final String CFG_WADLURL = "wadl"; Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java?rev=1376613&r1=1376612&r2=1376613&view=diff ============================================================================== --- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java (original) +++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/JAXRSContainer.java Thu Aug 23 17:58:00 2012 @@ -149,9 +149,8 @@ public class JAXRSContainer extends Abst sg.setSchemaTypeMap(getSchemaTypeMap()); sg.setMediaTypeMap(getMediaTypeMap()); - if (context.optionSet(WadlToolConstants.CFG_GENERATE_ENUMS)) { - sg.setGenerateEnums(true); - } + sg.setGenerateEnums(context.optionSet(WadlToolConstants.CFG_GENERATE_ENUMS)); + sg.setInheritResourceParams(context.optionSet(WadlToolConstants.CFG_INHERIT_PARAMS)); sg.setSkipSchemaGeneration(context.optionSet(WadlToolConstants.CFG_NO_TYPES)); // generate 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=1376613&r1=1376612&r2=1376613&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 Thu Aug 23 17:58:00 2012 @@ -176,6 +176,7 @@ public class SourceGenerator { private String wadlNamespace = WadlGenerator.WADL_NS; private boolean generateEnums; private boolean skipSchemaGeneration; + private boolean inheritResourceParams; private Map properties; @@ -556,15 +557,23 @@ public class SourceGenerator { String currentPath) { //CHECKSTYLE:ON List methodEls = getWadlElements(rElement, "method"); - + + List currentInheritedParams = inheritResourceParams + ? new LinkedList(info.getInheritedParams()) : Collections.emptyList(); for (Element methodEl : methodEls) { writeResourceMethod(methodEl, classPackage, imports, sbCode, info, isRoot, currentPath); } + if (inheritResourceParams && methodEls.isEmpty()) { + info.getInheritedParams().addAll(getWadlElements(rElement, "param")); + } List childEls = getWadlElements(rElement, "resource"); for (Element childEl : childEls) { String path = childEl.getAttribute("path"); - String newPath = (currentPath + path).replace("//", "/"); + if (!path.startsWith("/")) { + path = "/" + path; + } + String newPath = currentPath + path.replace("//", "/"); String id = childEl.getAttribute("id"); if (id.length() == 0) { writeMethods(childEl, classPackage, imports, sbCode, info, id, false, newPath); @@ -572,6 +581,8 @@ public class SourceGenerator { writeResourceMethod(childEl, classPackage, imports, sbCode, info, false, newPath); } } + info.getInheritedParams().clear(); + info.getInheritedParams().addAll(currentInheritedParams); } private void writeAnnotation(StringBuilder sbCode, Set imports, @@ -702,7 +713,7 @@ public class SourceGenerator { sbCode.append("("); - List inParamElements = getParameters(resourceEl, + List inParamElements = getParameters(resourceEl, info.getInheritedParams(), !isRoot && !isResourceElement && resourceEl.getAttribute("id").length() > 0); Element repElement = getActualRepElement(allRequestReps, inXmlRep); @@ -734,15 +745,24 @@ public class SourceGenerator { return xmlReps; } - private List getParameters(Element resourceEl, boolean isSubresourceMethod) { + private List getParameters(Element resourceEl, List inheritedParams, + boolean isSubresourceMethod) { List inParamElements = new LinkedList(); List allParamElements = getWadlElements(resourceEl, "param"); + List newInheritedParams = inheritResourceParams ? new LinkedList() + : Collections.emptyList(); for (Element el : allParamElements) { - if (isSubresourceMethod && RESOURCE_LEVEL_PARAMS.contains(el.getAttribute("style"))) { + boolean isResourceLevelParam = RESOURCE_LEVEL_PARAMS.contains(el.getAttribute("style")); + if (isSubresourceMethod && isResourceLevelParam) { continue; } + if (inheritResourceParams && isResourceLevelParam) { + newInheritedParams.add(el); + } inParamElements.add(el); } + inParamElements.addAll(inheritedParams); + inheritedParams.addAll(newInheritedParams); return inParamElements; } @@ -1433,6 +1453,10 @@ public class SourceGenerator { this.compilerArgs = args; } + public void setInheritResourceParams(boolean inherit) { + this.inheritResourceParams = inherit; + } + public void setSchemaPackageMap(Map map) { this.schemaPackageMap = map; } @@ -1544,6 +1568,7 @@ public class SourceGenerator { private Set resourceClassNames = new HashSet(); private Application rootApp; private File srcDir; + private List inheritedParams = new LinkedList(); public ContextInfo(Application rootApp, File srcDir, @@ -1556,6 +1581,9 @@ public class SourceGenerator { this.rootApp = rootApp; this.srcDir = srcDir; } + public List getInheritedParams() { + return inheritedParams; + } public Application getApp() { return rootApp; } Modified: cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml?rev=1376613&r1=1376612&r2=1376613&view=diff ============================================================================== --- cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml (original) +++ cxf/trunk/tools/wadlto/jaxrs/src/main/java/org/apache/cxf/tools/wadlto/jaxrs/jaxrs-toolspec.xml Thu Aug 23 17:58:00 2012 @@ -170,6 +170,14 @@ Examples: generateEnums + +