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);
     }