Repository: camel Updated Branches: refs/heads/master 5fca7ac4d -> 69abfd77a
resolving rest todos Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b3efc44e Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b3efc44e Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b3efc44e Branch: refs/heads/master Commit: b3efc44ef9059b14c16942c92cfad051a2c67547 Parents: 5fca7ac Author: sebi <s...@softvision.ro> Authored: Tue May 19 09:23:03 2015 +0300 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue May 19 08:57:05 2015 +0200 ---------------------------------------------------------------------- .../apache/camel/model/rest/RestDefinition.java | 34 ++- .../camel/model/rest/RestOperationParam.java | 143 ----------- .../rest/RestOperationParamDefinition.java | 241 +++++++++++++++++++ .../camel/model/rest/RestParamDefinition.java | 94 -------- .../apache/camel/model/rest/VerbDefinition.java | 37 +-- .../component/swagger/RestSwaggerReader.scala | 4 +- 6 files changed, 279 insertions(+), 274 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/b3efc44e/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java index 385cbdc..f3729d5 100644 --- a/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestDefinition.java @@ -32,6 +32,7 @@ import org.apache.camel.model.OptionalIdentifiedDefinition; import org.apache.camel.model.RouteDefinition; import org.apache.camel.model.ToDefinition; import org.apache.camel.spi.Metadata; +import org.apache.camel.util.FileUtil; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.URISupport; @@ -267,12 +268,12 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition> return this; } - public RestParamDefinition restParam() { + public RestOperationParamDefinition restParam() { if (getVerbs().isEmpty()) { throw new IllegalArgumentException("Must add verb first, such as get/post/delete"); } VerbDefinition verb = getVerbs().get(getVerbs().size() - 1); - return new RestParamDefinition(verb); + return new RestOperationParamDefinition(verb); } public RestDefinition produces(String mediaType) { @@ -540,6 +541,35 @@ public class RestDefinition extends OptionalIdentifiedDefinition<RestDefinition> from = from + "?" + query; } + String path = getPath(); + String s1 = FileUtil.stripTrailingSeparator(path); + String s2 = FileUtil.stripLeadingSeparator(verb.getUri()); + String allPath; + if (s1 != null && s2 != null) { + allPath = s1 + "/" + s2; + } else if (path != null) { + allPath = path; + } else { + allPath = verb.getUri(); + } + + // each {} is a parameter + String[] arr = allPath.split("\\/"); + for (String a : arr) { + if (a.startsWith("{") && a.endsWith("}")) { + String key = a.substring(1, a.length() - 1); + restParam().name(key).type(RestParamType.path).endParam(); + } + } + + if( verb.getType() != null ) { + String bodyType = verb.getType(); + if (bodyType.endsWith("[]")) { + bodyType = "List[" + bodyType.substring(0, bodyType.length() - 2) + "]"; + } + restParam().name(RestParamType.body.name()).type(RestParamType.body).dataType(bodyType).endParam(); + } + // the route should be from this rest endpoint route.fromRest(from); route.setRestDefinition(this); http://git-wip-us.apache.org/repos/asf/camel/blob/b3efc44e/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParam.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParam.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParam.java deleted file mode 100644 index 1a9c437..0000000 --- a/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParam.java +++ /dev/null @@ -1,143 +0,0 @@ -/** - * 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.camel.model.rest; - -import java.util.ArrayList; -import java.util.List; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlRootElement; - -import org.apache.camel.spi.Metadata; - -// TODO: rename to Definition as this is what this is -// TODO: Do not set default values, but infer those -// TODO: add javadoc on the setter methods -// TODO: add @Metadata to define the default values -// TODO: add required=true if its required (such as name and paramType I would assume) - -@Metadata(label = "rest") -@XmlRootElement(name = "param") -@XmlAccessorType(XmlAccessType.FIELD) -public class RestOperationParam { - @XmlAttribute - RestParamType paramType = RestParamType.query; - - @XmlAttribute - String name; - - @XmlAttribute - String description = ""; - - @XmlAttribute - String defaultValue = ""; - - @XmlAttribute - Boolean required = true; - - @XmlAttribute - Boolean allowMultiple = false; - - @XmlAttribute - String dataType = "string"; - - @XmlElementWrapper(name = "allowableValues") - @XmlElement(name = "value") - List<String> allowableValues = new ArrayList<String>(); - - @XmlAttribute - String paramAccess; - - public RestOperationParam() { - } - - public RestParamType getParamType() { - return paramType; - } - - public void setParamType(RestParamType paramType) { - this.paramType = paramType; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getDefaultValue() { - return defaultValue; - } - - public void setDefaultValue(String defaultValue) { - this.defaultValue = defaultValue; - } - - public Boolean getRequired() { - return required; - } - - public void setRequired(Boolean required) { - this.required = required; - } - - public Boolean getAllowMultiple() { - return allowMultiple; - } - - public void setAllowMultiple(Boolean allowMultiple) { - this.allowMultiple = allowMultiple; - } - - public String getDataType() { - return dataType; - } - - public void setDataType(String dataType) { - this.dataType = dataType; - } - - public List<String> getAllowableValues() { - return allowableValues; - } - - public void setAllowableValues(List<String> allowableValues) { - this.allowableValues = allowableValues; - } - - public String getParamAccess() { - return paramAccess; - } - - public void setParamAccess(String paramAccess) { - this.paramAccess = paramAccess; - } -} http://git-wip-us.apache.org/repos/asf/camel/blob/b3efc44e/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParamDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParamDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParamDefinition.java new file mode 100644 index 0000000..ee2edf5 --- /dev/null +++ b/camel-core/src/main/java/org/apache/camel/model/rest/RestOperationParamDefinition.java @@ -0,0 +1,241 @@ +/** + * 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.camel.model.rest; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; + + +import org.apache.camel.spi.Metadata; + +/** + * This maps to the Swagger Parameter Object. + * see com.wordnik.swagger.model.Parameter + * and https://github.com/swagger-api/swagger-spec/blob/master/versions/1.2.md#524-parameter-object. + */ +@Metadata(label = "rest") +@XmlRootElement(name = "param") +@XmlAccessorType(XmlAccessType.FIELD) +public class RestOperationParamDefinition { + + @XmlTransient + private VerbDefinition verb; + + @XmlAttribute + @Metadata(required = "true") + RestParamType paramType; + + @XmlAttribute + @Metadata(required = "true") + String name; + + @XmlAttribute + String description = ""; + + @XmlAttribute + String defaultValue = ""; + + @XmlAttribute + Boolean required = true; + + @XmlAttribute + Boolean allowMultiple = false; + + @XmlAttribute + @Metadata(defaultValue = "string") + String dataType; + + @XmlElementWrapper(name = "allowableValues") + @XmlElement(name = "value") + List<String> allowableValues; + + @XmlAttribute + String paramAccess; + + + public RestOperationParamDefinition(VerbDefinition verb) { + this.verb = verb; + } + + public RestOperationParamDefinition() { + } + + public RestParamType getParamType() { + if (paramType != null) + return paramType; + return RestParamType.path; + } + /** + * Sets the Swagger Parameter type. + */ + public void setParamType(RestParamType paramType) { + this.paramType = paramType; + } + + public String getName() { + return name; + } + /** + * Sets the Swagger Parameter name. + */ + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + /** + * Sets the Swagger Parameter description. + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * Sets the Swagger Parameter default value. + */ + public String getDefaultValue() { + return defaultValue; + } + + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + public Boolean getRequired() { + return required; + } + + /** + * Sets the Swagger Parameter required flag. + */ + public void setRequired(Boolean required) { + this.required = required; + } + + public Boolean getAllowMultiple() { + return allowMultiple; + } + + /** + * Sets the Swagger Parameter allowMultiple flag. + */ + public void setAllowMultiple(Boolean allowMultiple) { + this.allowMultiple = allowMultiple; + } + + public String getDataType() { + if(dataType!=null) { + return dataType; + } + return "string"; + } + + /** + * Sets the Swagger Parameter data type. + */ + public void setDataType(String dataType) { + this.dataType = dataType; + } + + public List<String> getAllowableValues() { + if (allowableValues != null) { + return allowableValues; + } + + return new ArrayList<String>(); + } + + /** + * Sets the Swagger Parameter alist of allowable values. + */ + public void setAllowableValues(List<String> allowableValues) { + this.allowableValues = allowableValues; + } + + public String getParamAccess() { + return paramAccess; + } + + /** + * Sets the Swagger Parameter paramAccess flag. + */ + public void setParamAccess(String paramAccess) { + this.paramAccess = paramAccess; + } + + public RestOperationParamDefinition name(String name) { + setName(name); + return this; + } + + public RestOperationParamDefinition description(String name) { + setDescription(name); + return this; + } + + public RestOperationParamDefinition defaultValue(String name) { + setDefaultValue(name); + return this; + } + + public RestOperationParamDefinition required(Boolean required) { + setRequired(required); + return this; + } + + public RestOperationParamDefinition allowMultiple(Boolean allowMultiple) { + setAllowMultiple(allowMultiple); + return this; + } + + public RestOperationParamDefinition dataType(String type) { + setDataType(type); + return this; + } + + public RestOperationParamDefinition allowableValues(List<String> allowableValues) { + setAllowableValues(allowableValues); + return this; + } + + public RestOperationParamDefinition type(RestParamType type) { + setParamType(type); + return this; + } + + public RestOperationParamDefinition paramAccess(String paramAccess) { + setParamAccess(paramAccess); + return this; + } + + public RestDefinition endParam() { + verb.getParams().add(this); + return verb.getRest(); + } + +} http://git-wip-us.apache.org/repos/asf/camel/blob/b3efc44e/camel-core/src/main/java/org/apache/camel/model/rest/RestParamDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/RestParamDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/RestParamDefinition.java deleted file mode 100644 index c9078d6..0000000 --- a/camel-core/src/main/java/org/apache/camel/model/rest/RestParamDefinition.java +++ /dev/null @@ -1,94 +0,0 @@ -/** - * 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.camel.model.rest; - -import java.util.List; - -import javax.xml.bind.annotation.XmlTransient; - -import org.apache.camel.model.OptionalIdentifiedDefinition; - -// TODO: Should not be a Definition as its a builder for Java DSL instead. -// instead the builder methods should be on RestOperationParam - -@XmlTransient -public class RestParamDefinition extends OptionalIdentifiedDefinition<RestParamDefinition> { - - private RestOperationParam parameter = new RestOperationParam(); - private VerbDefinition verb; - - public RestParamDefinition(VerbDefinition verb) { - this.verb = verb; - } - - @Override - public String getLabel() { - return "param"; - } - - - public RestParamDefinition name(String name) { - parameter.setName(name); - return this; - } - - public RestParamDefinition description(String name) { - parameter.setDescription(name); - return this; - } - - public RestParamDefinition defaultValue(String name) { - parameter.setDefaultValue(name); - return this; - } - - public RestParamDefinition required(Boolean required) { - parameter.setRequired(required); - return this; - } - - public RestParamDefinition allowMultiple(Boolean allowMultiple) { - parameter.setAllowMultiple(allowMultiple); - return this; - } - - public RestParamDefinition dataType(String type) { - parameter.setDataType(type); - return this; - } - - public RestParamDefinition allowableValues(List<String> allowableValues) { - parameter.setAllowableValues(allowableValues); - return this; - } - - public RestParamDefinition type(RestParamType type) { - parameter.setParamType(type); - return this; - } - - public RestParamDefinition paramAccess(String paramAccess) { - parameter.setParamAccess(paramAccess); - return this; - } - - public RestDefinition endParam() { - verb.getParams().add(parameter); - return verb.getRest(); - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/b3efc44e/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java index 56a4d89..45b950f 100644 --- a/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/rest/VerbDefinition.java @@ -33,7 +33,6 @@ import org.apache.camel.model.OptionalIdentifiedDefinition; import org.apache.camel.model.RouteDefinition; import org.apache.camel.model.ToDefinition; import org.apache.camel.spi.Metadata; -import org.apache.camel.util.FileUtil; /** * Rest command @@ -47,7 +46,7 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition> private String method; @XmlElementRef - private List<RestOperationParam> params = new ArrayList<RestOperationParam>(); + private List<RestOperationParamDefinition> params = new ArrayList<RestOperationParamDefinition>(); @XmlAttribute private String uri; @@ -99,7 +98,7 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition> } } - public List<RestOperationParam> getParams() { + public List<RestOperationParamDefinition> getParams() { return params; } @@ -123,31 +122,6 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition> */ public void setUri(String uri) { this.uri = uri; - String path = this.rest.getPath(); - - // TODO: The setter should be a plain setter. - // this logic should be moved to - // org.apache.camel.model.rest.RestDefinition.asRouteDefinition() - - String s1 = FileUtil.stripTrailingSeparator(path); - String s2 = FileUtil.stripLeadingSeparator(uri); - String allPath; - if (s1 != null && s2 != null) { - allPath = s1 + "/" + s2; - } else if (path != null) { - allPath = path; - } else { - allPath = uri; - } - - // each {} is a parameter - String[] arr = allPath.split("\\/"); - for (String a : arr) { - if (a.startsWith("{") && a.endsWith("}")) { - String key = a.substring(1, a.length() - 1); - rest.restParam().name(key).type(RestParamType.path).endParam(); - } - } } public String getConsumes() { @@ -225,11 +199,6 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition> */ public void setType(String type) { this.type = type; - String bodyType = type; - if (type.endsWith("[]")) { - bodyType = "List[" + bodyType.substring(0, type.length() - 2) + "]"; - } - rest.restParam().name("body").type(RestParamType.body).dataType(bodyType).endParam(); } public String getOutType() { @@ -362,4 +331,6 @@ public class VerbDefinition extends OptionalIdentifiedDefinition<VerbDefinition> } } + + } http://git-wip-us.apache.org/repos/asf/camel/blob/b3efc44e/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/RestSwaggerReader.scala ---------------------------------------------------------------------- diff --git a/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/RestSwaggerReader.scala b/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/RestSwaggerReader.scala index 33a801a..88d3eea 100644 --- a/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/RestSwaggerReader.scala +++ b/components/camel-swagger/src/main/scala/org/apache/camel/component/swagger/RestSwaggerReader.scala @@ -23,7 +23,7 @@ import com.wordnik.swagger.model._ import com.wordnik.swagger.core.util.ModelUtil import com.wordnik.swagger.core.SwaggerSpec -import org.apache.camel.model.rest.{RestOperationParam, VerbDefinition, RestDefinition} +import org.apache.camel.model.rest.{RestOperationParamDefinition, VerbDefinition, RestDefinition} import org.apache.camel.util.FileUtil import org.slf4j.LoggerFactory @@ -176,7 +176,7 @@ class RestSwaggerReader { def createParameters(verb: VerbDefinition): List[Parameter] = { val parameters = new ListBuffer[Parameter] - for (param:RestOperationParam <- verb.getParams.asScala) { + for (param:RestOperationParamDefinition <- verb.getParams.asScala) { var allowValues=AnyAllowableValues if(!param.getAllowableValues.isEmpty){