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 <[email protected]> Authored: Wed Mar 29 15:14:43 2017 +0200 Committer: Zoran Regvart <[email protected]> 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); }
