You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by zr...@apache.org on 2017/03/29 13:14:48 UTC
camel git commit: CAMEL-11006 Auto generate REST DSL for Camel fr...
Repository: camel
Updated Branches:
refs/heads/master 2212ca4ad -> 2bbc9813d
CAMEL-11006 Auto generate REST DSL for Camel fr...
...om Swagger2.0/OAI specification
Refactored `directRouteGenerator` to `destinationGenerator` in remaining
places. Refactored `Function<Operation, String>` to
`DestinationGenerator` makes for nicer interface.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2bbc9813
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2bbc9813
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2bbc9813
Branch: refs/heads/master
Commit: 2bbc9813d32ce936455e2825cab233bfb0012be0
Parents: 2212ca4
Author: Zoran Regvart <zr...@apache.org>
Authored: Wed Mar 29 15:14:43 2017 +0200
Committer: Zoran Regvart <zr...@apache.org>
Committed: Wed Mar 29 15:14:43 2017 +0200
----------------------------------------------------------------------
.../generator/swagger/DestinationGenerator.java | 26 ++++++++++++++
.../generator/swagger/DirectToOperationId.java | 37 ++++++++++++++++++++
.../generator/swagger/OperationVisitor.java | 10 +++---
.../camel/generator/swagger/PathVisitor.java | 11 +++---
.../generator/swagger/RestDslGenerator.java | 20 ++---------
5 files changed, 74 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/2bbc9813/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/DestinationGenerator.java
----------------------------------------------------------------------
diff --git a/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/DestinationGenerator.java b/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/DestinationGenerator.java
new file mode 100644
index 0000000..0cd27b8
--- /dev/null
+++ b/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/DestinationGenerator.java
@@ -0,0 +1,26 @@
+/**
+ * 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.generator.swagger;
+
+import io.swagger.models.Operation;
+
+@FunctionalInterface
+public interface DestinationGenerator {
+
+ String generateDestinationFor(Operation operation);
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/2bbc9813/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/DirectToOperationId.java
----------------------------------------------------------------------
diff --git a/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/DirectToOperationId.java b/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/DirectToOperationId.java
new file mode 100644
index 0000000..e8d4dbd
--- /dev/null
+++ b/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/DirectToOperationId.java
@@ -0,0 +1,37 @@
+/**
+ * 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.generator.swagger;
+
+import java.util.Optional;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import io.swagger.models.Operation;
+
+public final class DirectToOperationId implements DestinationGenerator {
+
+ private final AtomicInteger directRouteCount = new AtomicInteger(0);
+
+ @Override
+ public String generateDestinationFor(final Operation operation) {
+ return "direct:" + Optional.ofNullable(operation.getOperationId()).orElseGet(this::generateDirectName);
+ }
+
+ String generateDirectName() {
+ return "rest" + directRouteCount.incrementAndGet();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/2bbc9813/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/OperationVisitor.java
----------------------------------------------------------------------
diff --git a/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/OperationVisitor.java b/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/OperationVisitor.java
index 37390d1..d811066 100644
--- a/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/OperationVisitor.java
+++ b/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/OperationVisitor.java
@@ -19,7 +19,6 @@ package org.apache.camel.generator.swagger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.function.Function;
import io.swagger.models.HttpMethod;
import io.swagger.models.Operation;
@@ -33,17 +32,16 @@ import org.apache.camel.util.ObjectHelper;
class OperationVisitor<T> {
- private final Function<Operation, String> directRouteGenerator;
+ private final DestinationGenerator destinationGenerator;
private final CodeEmitter<T> emitter;
private final String path;
- OperationVisitor(final CodeEmitter<T> emitter, final String path,
- final Function<Operation, String> directRouteGenerator) {
+ OperationVisitor(final CodeEmitter<T> emitter, final String path, final DestinationGenerator destinationGenerator) {
this.emitter = emitter;
this.path = path;
- this.directRouteGenerator = directRouteGenerator;
+ this.destinationGenerator = destinationGenerator;
}
List<String> asStringList(final List<?> values) {
@@ -117,6 +115,6 @@ class OperationVisitor<T> {
emit(parameter);
});
- emitter.emit("to", directRouteGenerator.apply(operation));
+ emitter.emit("to", destinationGenerator.generateDestinationFor(operation));
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/2bbc9813/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/PathVisitor.java
----------------------------------------------------------------------
diff --git a/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/PathVisitor.java b/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/PathVisitor.java
index 1745189..5bb46bd 100644
--- a/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/PathVisitor.java
+++ b/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/PathVisitor.java
@@ -16,26 +16,23 @@
*/
package org.apache.camel.generator.swagger;
-import java.util.function.Function;
-
-import io.swagger.models.Operation;
import io.swagger.models.Path;
class PathVisitor<T> {
- private final Function<Operation, String> directRouteGenerator;
+ private final DestinationGenerator destinationGenerator;
private final CodeEmitter<T> emitter;
- PathVisitor(final CodeEmitter<T> emitter, final Function<Operation, String> directRouteGenerator) {
+ PathVisitor(final CodeEmitter<T> emitter, final DestinationGenerator destinationGenerator) {
this.emitter = emitter;
- this.directRouteGenerator = directRouteGenerator;
+ this.destinationGenerator = destinationGenerator;
emitter.emit("rest");
}
void visit(final String path, final Path definition) {
- final OperationVisitor<T> restDslOperation = new OperationVisitor<>(emitter, path, directRouteGenerator);
+ final OperationVisitor<T> restDslOperation = new OperationVisitor<>(emitter, path, destinationGenerator);
definition.getOperationMap().forEach(restDslOperation::visit);
}
http://git-wip-us.apache.org/repos/asf/camel/blob/2bbc9813/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/RestDslGenerator.java
----------------------------------------------------------------------
diff --git a/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/RestDslGenerator.java b/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/RestDslGenerator.java
index 5972f86..237a506 100644
--- a/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/RestDslGenerator.java
+++ b/tooling/swagger-rest-dsl-generator/src/main/java/org/apache/camel/generator/swagger/RestDslGenerator.java
@@ -17,13 +17,9 @@
package org.apache.camel.generator.swagger;
import java.nio.file.Path;
-import java.util.Optional;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.Function;
import javax.annotation.processing.Filer;
-import io.swagger.models.Operation;
import io.swagger.models.Swagger;
import org.apache.camel.model.rest.RestsDefinition;
@@ -38,15 +34,13 @@ public abstract class RestDslGenerator<G> {
final Swagger swagger;
- private final AtomicInteger directRouteCount = new AtomicInteger(0);
-
- private Function<Operation, String> destinationGenerator = this::generateDirectRouteName;
+ private DestinationGenerator destinationGenerator = new DirectToOperationId();
RestDslGenerator(final Swagger swagger) {
this.swagger = notNull(swagger, "swagger");
}
- public G withDestinationGenerator(final Function<Operation, String> directRouteGenerator) {
+ public G withDestinationGenerator(final DestinationGenerator directRouteGenerator) {
notNull(directRouteGenerator, "directRouteGenerator");
this.destinationGenerator = directRouteGenerator;
@@ -56,18 +50,10 @@ public abstract class RestDslGenerator<G> {
return that;
}
- Function<Operation, String> destinationGenerator() {
+ DestinationGenerator destinationGenerator() {
return destinationGenerator;
}
- String generateDirectName() {
- return "rest" + directRouteCount.incrementAndGet();
- }
-
- String generateDirectRouteName(final Operation operation) {
- return "direct:" + Optional.ofNullable(operation.getOperationId()).orElseGet(this::generateDirectName);
- }
-
public static RestDslSourceCodeGenerator<Appendable> toAppendable(final Swagger swagger) {
return new AppendableGenerator(swagger);
}