You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/12/05 12:28:59 UTC
[1/6] camel git commit: CAMEL-10559: route parser for java and xml to
parse source code. Donated from fabric8 project.
Repository: camel
Updated Branches:
refs/heads/parser 1348cf6e1 -> 550186e97
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyNettyTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyNettyTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyNettyTest.java
deleted file mode 100644
index 603d96f..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyNettyTest.java
+++ /dev/null
@@ -1,57 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterMyNettyTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterMyNettyTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyNettyTest.java"));
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("netty-http:http://0.0.0.0:{{port}}/foo", list.get(0).getElement());
- Assert.assertEquals("netty-http:http://0.0.0.0:{{getNextPort}}/bar", list.get(1).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("mock:input1", list.get(0).getElement());
- Assert.assertEquals("netty-http:http://0.0.0.0:{{getNextPort}}/bar", list.get(1).getElement());
- Assert.assertEquals("mock:input2", list.get(2).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineConstRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineConstRouteBuilderConfigureTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineConstRouteBuilderConfigureTest.java
deleted file mode 100644
index 3b7cb69..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineConstRouteBuilderConfigureTest.java
+++ /dev/null
@@ -1,55 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterNewLineConstRouteBuilderConfigureTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterNewLineConstRouteBuilderConfigureTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyNewLineConstRouteBuilder.java"));
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, false);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("timer:foo", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, false);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("file:output?fileExist=Append&chmod=777&allowNullBody=true", list.get(0).getElement());
- Assert.assertEquals("log:b", list.get(1).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineRouteBuilderConfigureTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineRouteBuilderConfigureTest.java
deleted file mode 100644
index eeb320f..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineRouteBuilderConfigureTest.java
+++ /dev/null
@@ -1,55 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterNewLineRouteBuilderConfigureTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterNewLineRouteBuilderConfigureTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyNewLineRouteBuilder.java"));
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, false);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("timer:foo", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, false);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("file:output?fileExist=Append&chmod=777&allowNullBody=true", list.get(0).getElement());
- Assert.assertEquals("log:b", list.get(1).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderCamelTestSupportTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderCamelTestSupportTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderCamelTestSupportTest.java
deleted file mode 100644
index 9760f66..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderCamelTestSupportTest.java
+++ /dev/null
@@ -1,54 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterRouteBuilderCamelTestSupportTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterRouteBuilderCamelTestSupportTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyRouteTest.java"));
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, false);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("direct:foo", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, false);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("mock:foo", list.get(0).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderConfigureTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderConfigureTest.java
deleted file mode 100644
index af9cb2e..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderConfigureTest.java
+++ /dev/null
@@ -1,56 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterRouteBuilderConfigureTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterRouteBuilderConfigureTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyRouteBuilder.java"));
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, false);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("timer:foo", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, false);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("log:a", list.get(0).getElement());
- Assert.assertEquals("mock:tap", list.get(1).getElement());
- Assert.assertEquals("log:b", list.get(2).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderEmptyUriTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderEmptyUriTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderEmptyUriTest.java
deleted file mode 100644
index 3d97c65..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderEmptyUriTest.java
+++ /dev/null
@@ -1,55 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterRouteBuilderEmptyUriTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterRouteBuilderEmptyUriTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyRouteEmptyUriTest.java"));
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, false);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("direct:foo", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, false);
- Assert.assertEquals(1, list.size());
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- Assert.assertFalse("Should be invalid", result.isParsed());
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleProcessorTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleProcessorTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleProcessorTest.java
deleted file mode 100644
index c83d89a..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleProcessorTest.java
+++ /dev/null
@@ -1,64 +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.parser.java;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.RouteBuilderParser;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.apache.camel.parser.model.CamelEndpointDetails;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterSimpleProcessorTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterSimpleProcessorTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java"));
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
-
- List<CamelEndpointDetails> details = new ArrayList<CamelEndpointDetails>();
- RouteBuilderParser.parseRouteBuilderEndpoints(clazz, ".", "src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java", details);
- LOG.info("{}", details);
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("direct:start", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals(0, list.size());
-
- Assert.assertEquals(1, details.size());
- Assert.assertEquals("direct:start", details.get(0).getEndpointUri());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleRouteBuilderConfigureTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleRouteBuilderConfigureTest.java
deleted file mode 100644
index 14d63af..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleRouteBuilderConfigureTest.java
+++ /dev/null
@@ -1,71 +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.parser.java;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterSimpleRouteBuilderConfigureTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterSimpleRouteBuilderConfigureTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java"));
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelSimpleExpressions(method);
- for (ParserResult simple : list) {
- LOG.info("Simple: " + simple.getElement());
- LOG.info(" Line: " + findLineNumber(simple.getPosition()));
- }
- Assert.assertEquals("${body} > 100", list.get(0).getElement());
- Assert.assertEquals(27, findLineNumber(list.get(0).getPosition()));
- Assert.assertEquals("${body} > 200", list.get(1).getElement());
- Assert.assertEquals(30, findLineNumber(list.get(1).getPosition()));
- }
-
- public static int findLineNumber(int pos) throws Exception {
- int lines = 0;
- int current = 0;
- File file = new File("src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java");
- try (BufferedReader br = new BufferedReader(new FileReader(file))) {
- String line;
- while ((line = br.readLine()) != null) {
- lines++;
- current += line.length();
- if (current > pos) {
- return lines;
- }
- }
- }
- return -1;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToDTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToDTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToDTest.java
deleted file mode 100644
index aeea6cf..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToDTest.java
+++ /dev/null
@@ -1,73 +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.parser.java;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.RouteBuilderParser;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.apache.camel.parser.model.CamelEndpointDetails;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterSimpleToDTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterSimpleToDTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java"));
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
-
- List<CamelEndpointDetails> details = new ArrayList<>();
- RouteBuilderParser.parseRouteBuilderEndpoints(clazz, ".", "src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java", details);
- LOG.info("{}", details);
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("direct:start", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("toD", list.get(0).getNode());
- Assert.assertEquals("log:a", list.get(0).getElement());
- Assert.assertEquals("to", list.get(1).getNode());
- Assert.assertEquals("log:b", list.get(1).getElement());
- Assert.assertEquals("to", list.get(2).getNode());
- Assert.assertEquals("log:c", list.get(2).getElement());
- Assert.assertEquals(3, list.size());
-
- Assert.assertEquals(4, details.size());
- Assert.assertEquals("direct:start", details.get(0).getEndpointUri());
- Assert.assertEquals("log:a", details.get(1).getEndpointUri());
- Assert.assertEquals("log:b", details.get(2).getEndpointUri());
- Assert.assertEquals("log:c", details.get(3).getEndpointUri());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToFTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToFTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToFTest.java
deleted file mode 100644
index 82d9f75..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToFTest.java
+++ /dev/null
@@ -1,67 +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.parser.java;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.RouteBuilderParser;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.apache.camel.parser.model.CamelEndpointDetails;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterSimpleToFTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterSimpleToFTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java"));
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
-
- List<CamelEndpointDetails> details = new ArrayList<>();
- RouteBuilderParser.parseRouteBuilderEndpoints(clazz, ".", "src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java", details);
- LOG.info("{}", details);
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("direct:start", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("toF", list.get(0).getNode());
- Assert.assertEquals("log:a?level={{%s}}", list.get(0).getElement());
- Assert.assertEquals(1, list.size());
-
- Assert.assertEquals(2, details.size());
- Assert.assertEquals("direct:start", details.get(0).getEndpointUri());
- Assert.assertEquals("log:a?level={{%s}}", details.get(1).getEndpointUri());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSplitTokenizeTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSplitTokenizeTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSplitTokenizeTest.java
deleted file mode 100644
index ef8bde8..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterSplitTokenizeTest.java
+++ /dev/null
@@ -1,75 +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.parser.java;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.RouteBuilderParser;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.apache.camel.parser.model.CamelEndpointDetails;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterSplitTokenizeTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterSplitTokenizeTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/SplitTokenizeTest.java"));
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
-
- List<CamelEndpointDetails> details = new ArrayList<>();
- RouteBuilderParser.parseRouteBuilderEndpoints(clazz, "src/test/java", "org/apache/camel/parser/SplitTokenizeTest.java", details);
- LOG.info("{}", details);
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("direct:a", list.get(0).getElement());
- Assert.assertEquals("direct:b", list.get(1).getElement());
- Assert.assertEquals("direct:c", list.get(2).getElement());
- Assert.assertEquals("direct:d", list.get(3).getElement());
- Assert.assertEquals("direct:e", list.get(4).getElement());
- Assert.assertEquals("direct:f", list.get(5).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("mock:split", list.get(0).getElement());
- Assert.assertEquals("mock:split", list.get(1).getElement());
- Assert.assertEquals("mock:split", list.get(2).getElement());
- Assert.assertEquals("mock:split", list.get(3).getElement());
- Assert.assertEquals("mock:split", list.get(4).getElement());
- Assert.assertEquals("mock:split", list.get(5).getElement());
-
- Assert.assertEquals(12, details.size());
- Assert.assertEquals("direct:a", details.get(0).getEndpointUri());
- Assert.assertEquals("mock:split", details.get(11).getEndpointUri());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java
deleted file mode 100644
index de37bf8..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java
+++ /dev/null
@@ -1,45 +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.parser.java;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-
-public class SimpleProcessorTest extends CamelTestSupport {
-
- public void testProcess() throws Exception {
- String out = template.requestBody("direct:start", "Hello World", String.class);
- assertEquals("Bye World", out);
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- from("direct:start").process(new Processor() {
- public void process(Exchange exchange) throws Exception {
- exchange.getOut().setBody("Bye World");
- }
- });
- }
- };
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/SplitTokenizeTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/SplitTokenizeTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/SplitTokenizeTest.java
deleted file mode 100644
index 4243dff..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/SplitTokenizeTest.java
+++ /dev/null
@@ -1,126 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-
-public class SplitTokenizeTest extends CamelTestSupport {
-
- public void testSplitTokenizerA() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:split");
- mock.expectedBodiesReceived("Claus", "James", "Willem");
-
- template.sendBody("direct:a", "Claus,James,Willem");
-
- assertMockEndpointsSatisfied();
- }
-
- public void testSplitTokenizerB() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:split");
- mock.expectedBodiesReceived("Claus", "James", "Willem");
-
- template.sendBodyAndHeader("direct:b", "Hello World", "myHeader", "Claus,James,Willem");
-
- assertMockEndpointsSatisfied();
- }
-
- public void testSplitTokenizerC() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:split");
- mock.expectedBodiesReceived("Claus", "James", "Willem");
-
- template.sendBody("direct:c", "Claus James Willem");
-
- assertMockEndpointsSatisfied();
- }
-
- public void testSplitTokenizerD() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:split");
- mock.expectedBodiesReceived("[Claus]", "[James]", "[Willem]");
-
- template.sendBody("direct:d", "[Claus][James][Willem]");
-
- assertMockEndpointsSatisfied();
- }
-
- public void testSplitTokenizerE() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:split");
- mock.expectedBodiesReceived("<person>Claus</person>", "<person>James</person>", "<person>Willem</person>");
-
- String xml = "<persons><person>Claus</person><person>James</person><person>Willem</person></persons>";
- template.sendBody("direct:e", xml);
-
- assertMockEndpointsSatisfied();
- }
-
- public void testSplitTokenizerEWithSlash() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:split");
- String xml = "<persons><person attr='/' /></persons>";
- mock.expectedBodiesReceived("<person attr='/' />");
- template.sendBody("direct:e", xml);
- mock.assertIsSatisfied();
- assertMockEndpointsSatisfied();
- }
-
- public void testSplitTokenizerF() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:split");
- mock.expectedBodiesReceived("<person name=\"Claus\"/>", "<person>James</person>", "<person>Willem</person>");
-
- String xml = "<persons><person/><person name=\"Claus\"/><person>James</person><person>Willem</person></persons>";
- template.sendBody("direct:f", xml);
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
-
- from("direct:a")
- .split().tokenize(",")
- .to("mock:split");
-
- from("direct:b")
- .split().tokenize(",", "myHeader")
- .to("mock:split");
-
- from("direct:c")
- .split().tokenize("(\\W+)\\s*", null, true)
- .to("mock:split");
-
- from("direct:d")
- .split().tokenizePair("[", "]", true)
- .to("mock:split");
-
- from("direct:e")
- .split().tokenizeXML("person")
- .to("mock:split");
-
- from("direct:f")
- .split().xpath("//person")
- // To test the body is not empty
- // it will call the ObjectHelper.evaluateValuePredicate()
- .filter().simple("${body}")
- .to("mock:split");
-
- }
- };
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/FindElementInRoutesTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/FindElementInRoutesTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/FindElementInRoutesTest.java
deleted file mode 100644
index f15dd0e..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/FindElementInRoutesTest.java
+++ /dev/null
@@ -1,45 +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.parser.xml;
-
-import java.io.FileInputStream;
-import java.io.InputStream;
-
-import org.w3c.dom.Element;
-
-import org.apache.camel.parser.helper.CamelXmlHelper;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.Assert.assertNotNull;
-
-public class FindElementInRoutesTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(FindElementInRoutesTest.class);
-
- @Test
- public void testXml() throws Exception {
- InputStream is = new FileInputStream("src/test/resources/org/apache/camel/parser/xml/myroutes.xml");
- String key = "_camelContext1/cbr-route/_from1";
- Element element = CamelXmlHelper.getSelectedCamelElementNode(key, is);
- assertNotNull("Could not find Element for key " + key, element);
-
- LOG.info("Found element " + element.getTagName());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/XmlOnExceptionRouteTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/XmlOnExceptionRouteTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/XmlOnExceptionRouteTest.java
deleted file mode 100644
index 6f8aeb6..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/XmlOnExceptionRouteTest.java
+++ /dev/null
@@ -1,55 +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.parser.xml;
-
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.parser.XmlRouteParser;
-import org.apache.camel.parser.model.CamelEndpointDetails;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class XmlOnExceptionRouteTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(XmlOnExceptionRouteTest.class);
-
- @Test
- public void testXml() throws Exception {
- List<CamelEndpointDetails> endpoints = new ArrayList<>();
-
- InputStream is = new FileInputStream("src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml");
- String fqn = "src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml";
- String baseDir = "src/test/resources";
- XmlRouteParser.parseXmlRouteEndpoints(is, baseDir, fqn, endpoints);
-
- for (CamelEndpointDetails detail : endpoints) {
- LOG.info(detail.getEndpointUri());
- }
-
- Assert.assertEquals("log:all", endpoints.get(0).getEndpointUri());
- Assert.assertEquals("mock:dead", endpoints.get(1).getEndpointUri());
- Assert.assertEquals("log:done", endpoints.get(2).getEndpointUri());
- Assert.assertEquals("stream:in?promptMessage=Enter something:", endpoints.get(3).getEndpointUri());
- Assert.assertEquals("stream:out", endpoints.get(4).getEndpointUri());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/XmlRouteTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/XmlRouteTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/XmlRouteTest.java
deleted file mode 100644
index 05be852..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/xml/XmlRouteTest.java
+++ /dev/null
@@ -1,51 +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.parser.xml;
-
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.parser.XmlRouteParser;
-import org.apache.camel.parser.model.CamelEndpointDetails;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class XmlRouteTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(XmlRouteTest.class);
-
- @Test
- public void testXml() throws Exception {
- List<CamelEndpointDetails> endpoints = new ArrayList<>();
-
- InputStream is = new FileInputStream("src/test/resources/org/apache/camel/parser/xml/mycamel.xml");
- String fqn = "src/test/resources/org/apache/camel/camel/parser/xml/mycamel.xml";
- String baseDir = "src/test/resources";
- XmlRouteParser.parseXmlRouteEndpoints(is, baseDir, fqn, endpoints);
-
- for (CamelEndpointDetails detail : endpoints) {
- LOG.info(detail.getEndpointUri());
- }
- Assert.assertEquals("stream:in?promptMessage=Enter something:", endpoints.get(0).getEndpointUri());
- Assert.assertEquals("stream:out", endpoints.get(1).getEndpointUri());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/resources/log4j2.properties
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/resources/log4j2.properties b/tooling/route-parser/src/test/resources/log4j2.properties
deleted file mode 100644
index 2f66eb5..0000000
--- a/tooling/route-parser/src/test/resources/log4j2.properties
+++ /dev/null
@@ -1,30 +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.
-## ---------------------------------------------------------------------------
-
-appender.file.type = File
-appender.file.name = file
-appender.file.fileName = target/route-parser-test.log
-appender.file.layout.type = PatternLayout
-appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-appender.out.type = Console
-appender.out.name = out
-appender.out.layout.type = PatternLayout
-appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-logger.parser.name = org.apache.camel.parser
-logger.parser.level = DEBUG
-rootLogger.level = INFO
-rootLogger.appenderRef.file.ref = file
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml b/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml
deleted file mode 100644
index 14a370f..0000000
--- a/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
-
- <camelContext xmlns="http://camel.apache.org/schema/spring">
-
- <endpoint id="logger" uri="log:all"/>
-
- <onException>
- <exception>java.lang.Exception</exception>
- <handled>
- <constant>true</constant>
- </handled>
- <to uri="mock:dead"/>
- </onException>
-
- <onCompletion>
- <to uri="log:done"/>
- </onCompletion>
-
- <route>
- <from uri="stream:in?promptMessage=Enter something: "/>
- <transform>
- <simple>Hello ${body.toUpperCase()}</simple>
- </transform>
- <to uri="stream:out"/>
- </route>
- </camelContext>
-
-</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel.xml
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel.xml b/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel.xml
deleted file mode 100644
index f243369..0000000
--- a/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
-
- <!-- START SNIPPET: e1 -->
- <!-- camelContext is the Camel runtime, where we can host Camel routes -->
- <camelContext xmlns="http://camel.apache.org/schema/spring">
- <route>
- <!-- read input from the console using the stream component -->
- <from
- uri="stream:in?promptMessage=Enter something: "/>
- <!-- transform the input to upper case using the simple language -->
- <!-- you can also use other languages such as groovy, ognl, mvel, javascript etc. -->
- <transform>
- <simple>Hello ${body.toUpperCase()}</simple>
- </transform>
- <!-- and then print to the console -->
- <to uri="stream:out"/>
- </route>
- </camelContext>
- <!-- END SNIPPET: e1 -->
-
-</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/myroutes.xml
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/myroutes.xml b/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/myroutes.xml
deleted file mode 100644
index c132e34..0000000
--- a/tooling/route-parser/src/test/resources/org/apache/camel/parser/xml/myroutes.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<routes xmlns="http://camel.apache.org/schema/spring">
- <route id="cbr-route">
- <from uri="timer:foo?period=5000"/>
- <!-- generate random number message, using a 3 digit number -->
- <transform>
- <method bean="myTransformer"/>
- </transform>
- <choice>
- <when>
- <simple>${body} > 500</simple>
- <log message="High priority message : ${body}"/>
- </when>
- <otherwise>
- <log message="Low priority message : ${body}"/>
- </otherwise>
- </choice>
- </route>
-</routes>
[6/6] camel git commit: CAMEL-10559: route parser for java and xml to
parse source code. Donated from fabric8 project.
Posted by da...@apache.org.
CAMEL-10559: route parser for java and xml to parse source code. Donated from fabric8 project.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/550186e9
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/550186e9
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/550186e9
Branch: refs/heads/parser
Commit: 550186e9764c1f90a1284efd3903c02221f57022
Parents: 1348cf6
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Dec 5 13:28:49 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Dec 5 13:28:49 2016 +0100
----------------------------------------------------------------------
apache-camel/pom.xml | 4 +
.../src/main/descriptors/common-bin.xml | 1 +
parent/pom.xml | 5 +
tooling/camel-route-parser/pom.xml | 99 +++
.../org/apache/camel/parser/ParserResult.java | 72 +++
.../apache/camel/parser/RouteBuilderParser.java | 310 +++++++++
.../org/apache/camel/parser/XmlRouteParser.java | 169 +++++
.../parser/helper/CamelJavaParserHelper.java | 638 +++++++++++++++++++
.../camel/parser/helper/CamelXmlHelper.java | 268 ++++++++
.../parser/helper/XmlLineNumberParser.java | 197 ++++++
.../parser/model/CamelEndpointDetails.java | 175 +++++
.../model/CamelSimpleExpressionDetails.java | 101 +++
.../parser/roaster/AnonymousMethodSource.java | 426 +++++++++++++
.../parser/roaster/StatementFieldSource.java | 278 ++++++++
.../src/main/resources/META-INF/LICENSE.txt | 203 ++++++
.../src/main/resources/META-INF/NOTICE.txt | 11 +
.../parser/java/MyBasePortRouteBuilder.java | 27 +
.../parser/java/MyCdiConcatRouteBuilder.java | 49 ++
.../camel/parser/java/MyCdiRouteBuilder.java | 46 ++
.../parser/java/MyConcatFieldRouteBuilder.java | 31 +
.../java/MyFieldMethodCallRouteBuilder.java | 33 +
.../camel/parser/java/MyFieldRouteBuilder.java | 31 +
.../parser/java/MyLocalAddRouteBuilderTest.java | 52 ++
.../parser/java/MyMethodCallRouteBuilder.java | 33 +
.../apache/camel/parser/java/MyNettyTest.java | 52 ++
.../parser/java/MyNewLineConstRouteBuilder.java | 34 +
.../parser/java/MyNewLineRouteBuilder.java | 31 +
.../camel/parser/java/MyRouteBuilder.java | 31 +
.../camel/parser/java/MyRouteEmptyUriTest.java | 42 ++
.../apache/camel/parser/java/MyRouteTest.java | 40 ++
.../camel/parser/java/MySimpleRouteBuilder.java | 34 +
.../camel/parser/java/MySimpleToDRoute.java | 34 +
.../camel/parser/java/MySimpleToFRoute.java | 28 +
...asterCdiConcatRouteBuilderConfigureTest.java | 55 ++
.../RoasterCdiRouteBuilderConfigureTest.java | 55 ++
...terConcatFieldRouteBuilderConfigureTest.java | 54 ++
.../parser/java/RoasterEndpointInjectTest.java | 73 +++
.../RoasterFieldRouteBuilderConfigureTest.java | 55 ++
...sterMethodCallRouteBuilderConfigureTest.java | 55 ++
...ieldMethodCallRouteBuilderConfigureTest.java | 57 ++
.../java/RoasterMyLocalAddRouteBuilderTest.java | 57 ++
.../camel/parser/java/RoasterMyNettyTest.java | 57 ++
...erNewLineConstRouteBuilderConfigureTest.java | 55 ++
...RoasterNewLineRouteBuilderConfigureTest.java | 55 ++
...RoasterRouteBuilderCamelTestSupportTest.java | 54 ++
.../java/RoasterRouteBuilderConfigureTest.java | 56 ++
.../java/RoasterRouteBuilderEmptyUriTest.java | 55 ++
.../parser/java/RoasterSimpleProcessorTest.java | 64 ++
.../RoasterSimpleRouteBuilderConfigureTest.java | 71 +++
.../camel/parser/java/RoasterSimpleToDTest.java | 73 +++
.../camel/parser/java/RoasterSimpleToFTest.java | 67 ++
.../parser/java/RoasterSplitTokenizeTest.java | 75 +++
.../camel/parser/java/SimpleProcessorTest.java | 45 ++
.../camel/parser/java/SplitTokenizeTest.java | 126 ++++
.../parser/xml/FindElementInRoutesTest.java | 45 ++
.../parser/xml/XmlOnExceptionRouteTest.java | 55 ++
.../apache/camel/parser/xml/XmlRouteTest.java | 51 ++
.../src/test/resources/log4j2.properties | 30 +
.../camel/parser/xml/mycamel-onexception.xml | 33 +
.../org/apache/camel/parser/xml/mycamel.xml | 26 +
.../org/apache/camel/parser/xml/myroutes.xml | 19 +
tooling/pom.xml | 2 +-
tooling/route-parser/pom.xml | 99 ---
.../org/apache/camel/parser/ParserResult.java | 72 ---
.../apache/camel/parser/RouteBuilderParser.java | 310 ---------
.../org/apache/camel/parser/XmlRouteParser.java | 169 -----
.../parser/helper/CamelJavaParserHelper.java | 638 -------------------
.../camel/parser/helper/CamelXmlHelper.java | 268 --------
.../parser/helper/XmlLineNumberParser.java | 197 ------
.../parser/model/CamelEndpointDetails.java | 175 -----
.../model/CamelSimpleExpressionDetails.java | 101 ---
.../parser/roaster/AnonymousMethodSource.java | 426 -------------
.../parser/roaster/StatementFieldSource.java | 278 --------
.../src/main/resources/META-INF/LICENSE.txt | 203 ------
.../src/main/resources/META-INF/NOTICE.txt | 11 -
.../parser/java/MyBasePortRouteBuilder.java | 27 -
.../parser/java/MyCdiConcatRouteBuilder.java | 49 --
.../camel/parser/java/MyCdiRouteBuilder.java | 46 --
.../parser/java/MyConcatFieldRouteBuilder.java | 31 -
.../java/MyFieldMethodCallRouteBuilder.java | 33 -
.../camel/parser/java/MyFieldRouteBuilder.java | 31 -
.../parser/java/MyLocalAddRouteBuilderTest.java | 52 --
.../parser/java/MyMethodCallRouteBuilder.java | 33 -
.../apache/camel/parser/java/MyNettyTest.java | 52 --
.../parser/java/MyNewLineConstRouteBuilder.java | 34 -
.../parser/java/MyNewLineRouteBuilder.java | 31 -
.../camel/parser/java/MyRouteBuilder.java | 31 -
.../camel/parser/java/MyRouteEmptyUriTest.java | 42 --
.../apache/camel/parser/java/MyRouteTest.java | 40 --
.../camel/parser/java/MySimpleRouteBuilder.java | 34 -
.../camel/parser/java/MySimpleToDRoute.java | 34 -
.../camel/parser/java/MySimpleToFRoute.java | 28 -
...asterCdiConcatRouteBuilderConfigureTest.java | 55 --
.../RoasterCdiRouteBuilderConfigureTest.java | 55 --
...terConcatFieldRouteBuilderConfigureTest.java | 54 --
.../parser/java/RoasterEndpointInjectTest.java | 73 ---
.../RoasterFieldRouteBuilderConfigureTest.java | 55 --
...sterMethodCallRouteBuilderConfigureTest.java | 55 --
...ieldMethodCallRouteBuilderConfigureTest.java | 57 --
.../java/RoasterMyLocalAddRouteBuilderTest.java | 57 --
.../camel/parser/java/RoasterMyNettyTest.java | 57 --
...erNewLineConstRouteBuilderConfigureTest.java | 55 --
...RoasterNewLineRouteBuilderConfigureTest.java | 55 --
...RoasterRouteBuilderCamelTestSupportTest.java | 54 --
.../java/RoasterRouteBuilderConfigureTest.java | 56 --
.../java/RoasterRouteBuilderEmptyUriTest.java | 55 --
.../parser/java/RoasterSimpleProcessorTest.java | 64 --
.../RoasterSimpleRouteBuilderConfigureTest.java | 71 ---
.../camel/parser/java/RoasterSimpleToDTest.java | 73 ---
.../camel/parser/java/RoasterSimpleToFTest.java | 67 --
.../parser/java/RoasterSplitTokenizeTest.java | 75 ---
.../camel/parser/java/SimpleProcessorTest.java | 45 --
.../camel/parser/java/SplitTokenizeTest.java | 126 ----
.../parser/xml/FindElementInRoutesTest.java | 45 --
.../parser/xml/XmlOnExceptionRouteTest.java | 55 --
.../apache/camel/parser/xml/XmlRouteTest.java | 51 --
.../src/test/resources/log4j2.properties | 30 -
.../camel/parser/xml/mycamel-onexception.xml | 33 -
.../org/apache/camel/parser/xml/mycamel.xml | 26 -
.../org/apache/camel/parser/xml/myroutes.xml | 19 -
120 files changed, 5159 insertions(+), 5149 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/apache-camel/pom.xml
----------------------------------------------------------------------
diff --git a/apache-camel/pom.xml b/apache-camel/pom.xml
index 839ba04..66d9c53 100644
--- a/apache-camel/pom.xml
+++ b/apache-camel/pom.xml
@@ -2166,6 +2166,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-commands-spring-boot</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-route-parser</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/apache-camel/src/main/descriptors/common-bin.xml
----------------------------------------------------------------------
diff --git a/apache-camel/src/main/descriptors/common-bin.xml b/apache-camel/src/main/descriptors/common-bin.xml
index 3717e70..d5146b4 100644
--- a/apache-camel/src/main/descriptors/common-bin.xml
+++ b/apache-camel/src/main/descriptors/common-bin.xml
@@ -280,6 +280,7 @@
<include>org.apache.camel:camel-commands-jolokia</include>
<include>org.apache.camel:camel-commands-spring-boot</include>
<include>org.apache.camel.karaf:camel-karaf-commands</include>
+ <include>org.apache.camel:camel-route-parser</include>
</includes>
</dependencySet>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index db7cabb..a706c34 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -1990,6 +1990,11 @@
<artifactId>camel-karaf-commands</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-route-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<!-- camel misc -->
<dependency>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/pom.xml b/tooling/camel-route-parser/pom.xml
new file mode 100644
index 0000000..f042fca
--- /dev/null
+++ b/tooling/camel-route-parser/pom.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>tooling</artifactId>
+ <version>2.19.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>camel-route-parser</artifactId>
+ <name>Camel :: Tooling :: Camel Route Parser</name>
+ <description>Java and XML source code parser for Camel routes</description>
+
+ <dependencies>
+
+ <!-- the roaster-jdt is set as provided as different runtimes may have it out of the box -->
+ <dependency>
+ <groupId>org.jboss.forge.roaster</groupId>
+ <artifactId>roaster-jdt</artifactId>
+ <version>${roaster-version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- only test scopes for camel as we have no runtime dependency on camel -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-core</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-spring</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-cdi</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-cdi</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+</project>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/ParserResult.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/ParserResult.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/ParserResult.java
new file mode 100644
index 0000000..4ef2fc4
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/ParserResult.java
@@ -0,0 +1,72 @@
+/**
+ * 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.parser;
+
+/**
+ * Result of parsing Camel RouteBuilder or XML routes from the source code.
+ */
+public class ParserResult {
+
+ private final String node;
+ private boolean parsed;
+ private int position;
+ private String element;
+
+ public ParserResult(String node, int position, String element) {
+ this(node, position, element, true);
+ }
+
+ public ParserResult(String node, int position, String element, boolean parsed) {
+ this.node = node;
+ this.position = position;
+ this.element = element;
+ this.parsed = parsed;
+ }
+
+ /**
+ * Character based position in the source code (not line based).
+ */
+ public int getPosition() {
+ return position;
+ }
+
+ /**
+ * The element such as a Camel endpoint uri
+ */
+ public String getElement() {
+ return element;
+ }
+
+ /**
+ * Whether the element was successfully parsed. If the parser cannot parse
+ * the element for whatever reason this will return <tt>false</tt>.
+ */
+ public boolean isParsed() {
+ return parsed;
+ }
+
+ /**
+ * The node which is typically a Camel EIP name such as <tt>to</tt>, <tt>wireTap</tt> etc.
+ */
+ public String getNode() {
+ return node;
+ }
+
+ public String toString() {
+ return element;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
new file mode 100644
index 0000000..36fc443
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
@@ -0,0 +1,310 @@
+/**
+ * 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.parser;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.apache.camel.parser.model.CamelEndpointDetails;
+import org.apache.camel.parser.model.CamelSimpleExpressionDetails;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ASTNode;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.Expression;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.MemberValuePair;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+import org.jboss.forge.roaster.model.Annotation;
+import org.jboss.forge.roaster.model.source.FieldSource;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.jboss.forge.roaster.model.util.Strings;
+
+/**
+ * A Camel RouteBuilder parser that parses Camel Java routes source code.
+ * <p/>
+ * This implementation is higher level details, and uses the lower level parser {@link CamelJavaParserHelper}.
+ */
+public final class RouteBuilderParser {
+
+ private RouteBuilderParser() {
+ }
+
+ /**
+ * Parses the java source class to discover Camel endpoints.
+ *
+ * @param clazz the java source class
+ * @param baseDir the base of the source code
+ * @param fullyQualifiedFileName the fully qualified source code file name
+ * @param endpoints list to add discovered and parsed endpoints
+ */
+ public static void parseRouteBuilderEndpoints(JavaClassSource clazz, String baseDir, String fullyQualifiedFileName,
+ List<CamelEndpointDetails> endpoints) {
+ parseRouteBuilderEndpoints(clazz, baseDir, fullyQualifiedFileName, endpoints, null, false);
+ }
+
+ /**
+ * Parses the java source class to discover Camel endpoints.
+ *
+ * @param clazz the java source class
+ * @param baseDir the base of the source code
+ * @param fullyQualifiedFileName the fully qualified source code file name
+ * @param endpoints list to add discovered and parsed endpoints
+ * @param unparsable list of unparsable nodes
+ * @param includeInlinedRouteBuilders whether to include inlined route builders in the parsing
+ */
+ public static void parseRouteBuilderEndpoints(JavaClassSource clazz, String baseDir, String fullyQualifiedFileName,
+ List<CamelEndpointDetails> endpoints, List<String> unparsable, boolean includeInlinedRouteBuilders) {
+
+ // look for fields which are not used in the route
+ for (FieldSource<JavaClassSource> field : clazz.getFields()) {
+
+ // is the field annotated with a Camel endpoint
+ String uri = null;
+ Expression exp = null;
+ for (Annotation ann : field.getAnnotations()) {
+ boolean valid = "org.apache.camel.EndpointInject".equals(ann.getQualifiedName()) || "org.apache.camel.cdi.Uri".equals(ann.getQualifiedName());
+ if (valid) {
+ exp = (Expression) ann.getInternal();
+ if (exp instanceof SingleMemberAnnotation) {
+ exp = ((SingleMemberAnnotation) exp).getValue();
+ } else if (exp instanceof NormalAnnotation) {
+ List values = ((NormalAnnotation) exp).values();
+ for (Object value : values) {
+ MemberValuePair pair = (MemberValuePair) value;
+ if ("uri".equals(pair.getName().toString())) {
+ exp = pair.getValue();
+ break;
+ }
+ }
+ }
+ uri = CamelJavaParserHelper.getLiteralValue(clazz, null, exp);
+ }
+ }
+
+ // we only want to add fields which are not used in the route
+ if (!Strings.isBlank(uri) && findEndpointByUri(endpoints, uri) == null) {
+
+ // we only want the relative dir name from the
+ String fileName = fullyQualifiedFileName;
+ if (fileName.startsWith(baseDir)) {
+ fileName = fileName.substring(baseDir.length() + 1);
+ }
+ String id = field.getName();
+
+ CamelEndpointDetails detail = new CamelEndpointDetails();
+ detail.setFileName(fileName);
+ detail.setClassName(clazz.getQualifiedName());
+ detail.setEndpointInstance(id);
+ detail.setEndpointUri(uri);
+ detail.setEndpointComponentName(endpointComponentName(uri));
+
+ // favor the position of the expression which had the actual uri
+ Object internal = exp != null ? exp : field.getInternal();
+
+ // find position of field/expression
+ if (internal instanceof ASTNode) {
+ int pos = ((ASTNode) internal).getStartPosition();
+ int line = findLineNumber(fullyQualifiedFileName, pos);
+ if (line > -1) {
+ detail.setLineNumber("" + line);
+ }
+ }
+ // we do not know if this field is used as consumer or producer only, but we try
+ // to find out by scanning the route in the configure method below
+ endpoints.add(detail);
+ }
+ }
+
+ // find all the configure methods
+ List<MethodSource<JavaClassSource>> methods = new ArrayList<>();
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+ if (method != null) {
+ methods.add(method);
+ }
+ if (includeInlinedRouteBuilders) {
+ List<MethodSource<JavaClassSource>> inlinedMethods = CamelJavaParserHelper.findInlinedConfigureMethods(clazz);
+ if (!inlinedMethods.isEmpty()) {
+ methods.addAll(inlinedMethods);
+ }
+ }
+
+ // look if any of these fields are used in the route only as consumer or producer, as then we can
+ // determine this to ensure when we edit the endpoint we should only the options accordingly
+ for (MethodSource<JavaClassSource> configureMethod : methods) {
+ // consumers only
+ List<ParserResult> uris = CamelJavaParserHelper.parseCamelConsumerUris(configureMethod, true, true);
+ for (ParserResult result : uris) {
+ if (!result.isParsed()) {
+ if (unparsable != null) {
+ unparsable.add(result.getElement());
+ }
+ } else {
+ CamelEndpointDetails detail = findEndpointByUri(endpoints, result.getElement());
+ if (detail != null) {
+ // its a consumer only
+ detail.setConsumerOnly(true);
+ } else {
+ String fileName = fullyQualifiedFileName;
+ if (fileName.startsWith(baseDir)) {
+ fileName = fileName.substring(baseDir.length() + 1);
+ }
+
+ detail = new CamelEndpointDetails();
+ detail.setFileName(fileName);
+ detail.setClassName(clazz.getQualifiedName());
+ detail.setMethodName(configureMethod.getName());
+ detail.setEndpointInstance(null);
+ detail.setEndpointUri(result.getElement());
+ int line = findLineNumber(fullyQualifiedFileName, result.getPosition());
+ if (line > -1) {
+ detail.setLineNumber("" + line);
+ }
+ detail.setEndpointComponentName(endpointComponentName(result.getElement()));
+ detail.setConsumerOnly(true);
+ detail.setProducerOnly(false);
+ endpoints.add(detail);
+ }
+ }
+ }
+ // producer only
+ uris = CamelJavaParserHelper.parseCamelProducerUris(configureMethod, true, true);
+ for (ParserResult result : uris) {
+ if (!result.isParsed()) {
+ if (unparsable != null) {
+ unparsable.add(result.getElement());
+ }
+ } else {
+ CamelEndpointDetails detail = findEndpointByUri(endpoints, result.getElement());
+ if (detail != null) {
+ if (detail.isConsumerOnly()) {
+ // its both a consumer and producer
+ detail.setConsumerOnly(false);
+ detail.setProducerOnly(false);
+ } else {
+ // its a producer only
+ detail.setProducerOnly(true);
+ }
+ }
+ // the same endpoint uri may be used in multiple places in the same route
+ // so we should maybe add all of them
+ String fileName = fullyQualifiedFileName;
+ if (fileName.startsWith(baseDir)) {
+ fileName = fileName.substring(baseDir.length() + 1);
+ }
+
+ detail = new CamelEndpointDetails();
+ detail.setFileName(fileName);
+ detail.setClassName(clazz.getQualifiedName());
+ detail.setMethodName(configureMethod.getName());
+ detail.setEndpointInstance(null);
+ detail.setEndpointUri(result.getElement());
+ int line = findLineNumber(fullyQualifiedFileName, result.getPosition());
+ if (line > -1) {
+ detail.setLineNumber("" + line);
+ }
+ detail.setEndpointComponentName(endpointComponentName(result.getElement()));
+ detail.setConsumerOnly(false);
+ detail.setProducerOnly(true);
+ endpoints.add(detail);
+ }
+ }
+ }
+ }
+
+ /**
+ * Parses the java source class to discover Camel simple expressions.
+ *
+ * @param clazz the java source class
+ * @param baseDir the base of the source code
+ * @param fullyQualifiedFileName the fully qualified source code file name
+ * @param simpleExpressions list to add discovered and parsed simple expressions
+ */
+ public static void parseRouteBuilderSimpleExpressions(JavaClassSource clazz, String baseDir, String fullyQualifiedFileName,
+ List<CamelSimpleExpressionDetails> simpleExpressions) {
+
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+ if (method != null) {
+ List<ParserResult> expressions = CamelJavaParserHelper.parseCamelSimpleExpressions(method);
+ for (ParserResult result : expressions) {
+ if (result.isParsed()) {
+ String fileName = fullyQualifiedFileName;
+ if (fileName.startsWith(baseDir)) {
+ fileName = fileName.substring(baseDir.length() + 1);
+ }
+
+ CamelSimpleExpressionDetails details = new CamelSimpleExpressionDetails();
+ details.setFileName(fileName);
+ details.setClassName(clazz.getQualifiedName());
+ details.setMethodName("configure");
+ int line = findLineNumber(fullyQualifiedFileName, result.getPosition());
+ if (line > -1) {
+ details.setLineNumber("" + line);
+ }
+ details.setSimple(result.getElement());
+
+ simpleExpressions.add(details);
+ }
+ }
+ }
+ }
+
+ private static CamelEndpointDetails findEndpointByUri(List<CamelEndpointDetails> endpoints, String uri) {
+ for (CamelEndpointDetails detail : endpoints) {
+ if (uri.equals(detail.getEndpointUri())) {
+ return detail;
+ }
+ }
+ return null;
+ }
+
+ private static int findLineNumber(String fullyQualifiedFileName, int position) {
+ int lines = 0;
+
+ try {
+ int current = 0;
+ try (BufferedReader br = new BufferedReader(new FileReader(new File(fullyQualifiedFileName)))) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ lines++;
+ current += line.length() + 1; // add 1 for line feed
+ if (current >= position) {
+ return lines;
+ }
+ }
+ }
+ } catch (Exception e) {
+ // ignore
+ return -1;
+ }
+
+ return lines;
+ }
+
+ private static String endpointComponentName(String uri) {
+ if (uri != null) {
+ int idx = uri.indexOf(":");
+ if (idx > 0) {
+ return uri.substring(0, idx);
+ }
+ }
+ return null;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/XmlRouteParser.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/XmlRouteParser.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/XmlRouteParser.java
new file mode 100644
index 0000000..2cca9df
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/XmlRouteParser.java
@@ -0,0 +1,169 @@
+/**
+ * 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.parser;
+
+import java.io.InputStream;
+import java.util.List;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.apache.camel.parser.helper.CamelXmlHelper;
+import org.apache.camel.parser.helper.XmlLineNumberParser;
+
+import org.apache.camel.parser.model.CamelEndpointDetails;
+import org.apache.camel.parser.model.CamelSimpleExpressionDetails;
+import org.jboss.forge.roaster.model.util.Strings;
+
+import static org.apache.camel.parser.helper.CamelXmlHelper.getSafeAttribute;
+
+/**
+ * A Camel XML parser that parses Camel XML routes source code.
+ * <p/>
+ * This implementation is higher level details, and uses the lower level parser {@link CamelJavaParserHelper}.
+ */
+public final class XmlRouteParser {
+
+ private XmlRouteParser() {
+ }
+
+ /**
+ * Parses the XML source to discover Camel endpoints.
+ *
+ * @param xml the xml file as input stream
+ * @param baseDir the base of the source code
+ * @param fullyQualifiedFileName the fully qualified source code file name
+ * @param endpoints list to add discovered and parsed endpoints
+ */
+ public static void parseXmlRouteEndpoints(InputStream xml, String baseDir, String fullyQualifiedFileName,
+ List<CamelEndpointDetails> endpoints) throws Exception {
+
+ // find all the endpoints (currently only <endpoint> and within <route>)
+ // try parse it as dom
+ Document dom = null;
+ try {
+ dom = XmlLineNumberParser.parseXml(xml);
+ } catch (Exception e) {
+ // ignore as the xml file may not be valid at this point
+ }
+ if (dom != null) {
+ List<Node> nodes = CamelXmlHelper.findAllEndpoints(dom);
+ for (Node node : nodes) {
+ String uri = getSafeAttribute(node, "uri");
+ if (uri != null) {
+ // trim and remove whitespace noise
+ uri = trimEndpointUri(uri);
+ }
+ if (!Strings.isBlank(uri)) {
+ String id = getSafeAttribute(node, "id");
+ String lineNumber = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER);
+ String lineNumberEnd = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER_END);
+
+ // we only want the relative dir name from the resource directory, eg META-INF/spring/foo.xml
+ String fileName = fullyQualifiedFileName;
+ if (fileName.startsWith(baseDir)) {
+ fileName = fileName.substring(baseDir.length() + 1);
+ }
+
+ boolean consumerOnly = false;
+ boolean producerOnly = false;
+ String nodeName = node.getNodeName();
+ if ("from".equals(nodeName) || "pollEnrich".equals(nodeName)) {
+ consumerOnly = true;
+ } else if ("to".equals(nodeName) || "enrich".equals(nodeName) || "wireTap".equals(nodeName)) {
+ producerOnly = true;
+ }
+
+ CamelEndpointDetails detail = new CamelEndpointDetails();
+ detail.setFileName(fileName);
+ detail.setLineNumber(lineNumber);
+ detail.setLineNumberEnd(lineNumberEnd);
+ detail.setEndpointInstance(id);
+ detail.setEndpointUri(uri);
+ detail.setEndpointComponentName(endpointComponentName(uri));
+ detail.setConsumerOnly(consumerOnly);
+ detail.setProducerOnly(producerOnly);
+ endpoints.add(detail);
+ }
+ }
+ }
+ }
+
+ /**
+ * Parses the XML source to discover Camel endpoints.
+ *
+ * @param xml the xml file as input stream
+ * @param baseDir the base of the source code
+ * @param fullyQualifiedFileName the fully qualified source code file name
+ * @param simpleExpressions list to add discovered and parsed simple expressions
+ */
+ public static void parseXmlRouteSimpleExpressions(InputStream xml, String baseDir, String fullyQualifiedFileName,
+ List<CamelSimpleExpressionDetails> simpleExpressions) throws Exception {
+
+ // find all the simple expressions
+ // try parse it as dom
+ Document dom = null;
+ try {
+ dom = XmlLineNumberParser.parseXml(xml);
+ } catch (Exception e) {
+ // ignore as the xml file may not be valid at this point
+ }
+ if (dom != null) {
+ List<Node> nodes = CamelXmlHelper.findAllSimpleExpressions(dom);
+ for (Node node : nodes) {
+ String simple = node.getTextContent();
+ String lineNumber = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER);
+ String lineNumberEnd = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER_END);
+
+ // we only want the relative dir name from the resource directory, eg META-INF/spring/foo.xml
+ String fileName = fullyQualifiedFileName;
+ if (fileName.startsWith(baseDir)) {
+ fileName = fileName.substring(baseDir.length() + 1);
+ }
+
+ CamelSimpleExpressionDetails detail = new CamelSimpleExpressionDetails();
+ detail.setFileName(fileName);
+ detail.setLineNumber(lineNumber);
+ detail.setLineNumberEnd(lineNumberEnd);
+ detail.setSimple(simple);
+ simpleExpressions.add(detail);
+ }
+ }
+ }
+
+ private static String endpointComponentName(String uri) {
+ if (uri != null) {
+ int idx = uri.indexOf(":");
+ if (idx > 0) {
+ return uri.substring(0, idx);
+ }
+ }
+ return null;
+ }
+
+
+ private static String trimEndpointUri(String uri) {
+ uri = uri.trim();
+ // if the uri is using new-lines then remove whitespace noise before & and ? separator
+ uri = uri.replaceAll("(\\s+)(\\&)", "$2");
+ uri = uri.replaceAll("(\\&)(\\s+)", "$1");
+ uri = uri.replaceAll("(\\?)(\\s+)", "$1");
+ return uri;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaParserHelper.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaParserHelper.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaParserHelper.java
new file mode 100644
index 0000000..6df709a
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaParserHelper.java
@@ -0,0 +1,638 @@
+/**
+ * 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.parser.helper;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.RouteBuilderParser;
+import org.apache.camel.parser.roaster.AnonymousMethodSource;
+import org.apache.camel.parser.roaster.StatementFieldSource;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ASTNode;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.AnonymousClassDeclaration;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.Block;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.BooleanLiteral;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ClassInstanceCreation;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.Expression;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ExpressionStatement;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.FieldDeclaration;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.InfixExpression;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.MemberValuePair;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.MethodDeclaration;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.MethodInvocation;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.NormalAnnotation;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.NumberLiteral;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ParenthesizedExpression;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.QualifiedName;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ReturnStatement;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.SimpleName;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.SimpleType;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.SingleMemberAnnotation;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.Statement;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.StringLiteral;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.Type;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.VariableDeclaration;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.VariableDeclarationFragment;
+import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.VariableDeclarationStatement;
+import org.jboss.forge.roaster.model.Annotation;
+import org.jboss.forge.roaster.model.source.AnnotationSource;
+import org.jboss.forge.roaster.model.source.FieldSource;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.jboss.forge.roaster.model.util.Strings;
+
+/**
+ * A Camel Java parser that only depends on the Roaster API.
+ * <p/>
+ * This implementation is lower level details. For a higher level parser see {@link RouteBuilderParser}.
+ */
+public final class CamelJavaParserHelper {
+
+ private CamelJavaParserHelper() {
+ // utility class
+ }
+
+ public static MethodSource<JavaClassSource> findConfigureMethod(JavaClassSource clazz) {
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+ // must be public void configure()
+ if (method != null && method.isPublic() && method.getParameters().isEmpty() && method.getReturnType().isType("void")) {
+ return method;
+ }
+
+ // maybe the route builder is from unit testing with camel-test as an anonymous inner class
+ // there is a bit of code to dig out this using the eclipse jdt api
+ method = findCreateRouteBuilderMethod(clazz);
+ if (method != null) {
+ return findConfigureMethodInCreateRouteBuilder(clazz, method);
+ }
+
+ return null;
+ }
+
+ public static List<MethodSource<JavaClassSource>> findInlinedConfigureMethods(JavaClassSource clazz) {
+ List<MethodSource<JavaClassSource>> answer = new ArrayList<>();
+
+ List<MethodSource<JavaClassSource>> methods = clazz.getMethods();
+ if (methods != null) {
+ for (MethodSource<JavaClassSource> method : methods) {
+ if (method.isPublic()
+ && (method.getParameters() == null || method.getParameters().isEmpty())
+ && (method.getReturnType() == null || method.getReturnType().isType("void"))) {
+ // maybe the method contains an inlined createRouteBuilder usually from an unit test method
+ MethodSource<JavaClassSource> builder = findConfigureMethodInCreateRouteBuilder(clazz, method);
+ if (builder != null) {
+ answer.add(builder);
+ }
+ }
+ }
+ }
+
+ return answer;
+ }
+
+ private static MethodSource<JavaClassSource> findCreateRouteBuilderMethod(JavaClassSource clazz) {
+ MethodSource method = clazz.getMethod("createRouteBuilder");
+ if (method != null && (method.isPublic() || method.isProtected()) && method.getParameters().isEmpty()) {
+ return method;
+ }
+ return null;
+ }
+
+ private static MethodSource<JavaClassSource> findConfigureMethodInCreateRouteBuilder(JavaClassSource clazz, MethodSource<JavaClassSource> method) {
+ // find configure inside the code
+ MethodDeclaration md = (MethodDeclaration) method.getInternal();
+ Block block = md.getBody();
+ if (block != null) {
+ List statements = block.statements();
+ for (int i = 0; i < statements.size(); i++) {
+ Statement stmt = (Statement) statements.get(i);
+ Expression exp = null;
+ if (stmt instanceof ReturnStatement) {
+ ReturnStatement rs = (ReturnStatement) stmt;
+ exp = rs.getExpression();
+ } else if (stmt instanceof ExpressionStatement) {
+ ExpressionStatement es = (ExpressionStatement) stmt;
+ exp = es.getExpression();
+ if (exp instanceof MethodInvocation) {
+ MethodInvocation mi = (MethodInvocation) exp;
+ for (Object arg : mi.arguments()) {
+ if (arg instanceof ClassInstanceCreation) {
+ exp = (Expression) arg;
+ break;
+ }
+ }
+ }
+ }
+ if (exp != null && exp instanceof ClassInstanceCreation) {
+ ClassInstanceCreation cic = (ClassInstanceCreation) exp;
+ boolean isRouteBuilder = false;
+ if (cic.getType() instanceof SimpleType) {
+ SimpleType st = (SimpleType) cic.getType();
+ isRouteBuilder = "RouteBuilder".equals(st.getName().toString());
+ }
+ if (isRouteBuilder && cic.getAnonymousClassDeclaration() != null) {
+ List body = cic.getAnonymousClassDeclaration().bodyDeclarations();
+ for (int j = 0; j < body.size(); j++) {
+ Object line = body.get(j);
+ if (line instanceof MethodDeclaration) {
+ MethodDeclaration amd = (MethodDeclaration) line;
+ if ("configure".equals(amd.getName().toString())) {
+ return new AnonymousMethodSource(clazz, amd);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public static List<ParserResult> parseCamelConsumerUris(MethodSource<JavaClassSource> method, boolean strings, boolean fields) {
+ return doParseCamelUris(method, true, false, strings, fields);
+ }
+
+ public static List<ParserResult> parseCamelProducerUris(MethodSource<JavaClassSource> method, boolean strings, boolean fields) {
+ return doParseCamelUris(method, false, true, strings, fields);
+ }
+
+ private static List<ParserResult> doParseCamelUris(MethodSource<JavaClassSource> method, boolean consumers, boolean producers,
+ boolean strings, boolean fields) {
+
+ List<ParserResult> answer = new ArrayList<ParserResult>();
+
+ if (method != null) {
+ MethodDeclaration md = (MethodDeclaration) method.getInternal();
+ Block block = md.getBody();
+ if (block != null) {
+ for (Object statement : md.getBody().statements()) {
+ // must be a method call expression
+ if (statement instanceof ExpressionStatement) {
+ ExpressionStatement es = (ExpressionStatement) statement;
+ Expression exp = es.getExpression();
+
+ List<ParserResult> uris = new ArrayList<ParserResult>();
+ parseExpression(method.getOrigin(), block, exp, uris, consumers, producers, strings, fields);
+ if (!uris.isEmpty()) {
+ // reverse the order as we will grab them from last->first
+ Collections.reverse(uris);
+ answer.addAll(uris);
+ }
+ }
+ }
+ }
+ }
+
+ return answer;
+ }
+
+ private static void parseExpression(JavaClassSource clazz, Block block, Expression exp, List<ParserResult> uris,
+ boolean consumers, boolean producers, boolean strings, boolean fields) {
+ if (exp == null) {
+ return;
+ }
+ if (exp instanceof MethodInvocation) {
+ MethodInvocation mi = (MethodInvocation) exp;
+ doParseCamelUris(clazz, block, mi, uris, consumers, producers, strings, fields);
+ // if the method was called on another method, then recursive
+ exp = mi.getExpression();
+ parseExpression(clazz, block, exp, uris, consumers, producers, strings, fields);
+ }
+ }
+
+ private static void doParseCamelUris(JavaClassSource clazz, Block block, MethodInvocation mi, List<ParserResult> uris,
+ boolean consumers, boolean producers, boolean strings, boolean fields) {
+ String name = mi.getName().getIdentifier();
+
+ if (consumers) {
+ if ("from".equals(name)) {
+ List args = mi.arguments();
+ if (args != null) {
+ for (Object arg : args) {
+ if (isValidArgument(name, arg)) {
+ extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
+ }
+ }
+ }
+ }
+ if ("fromF".equals(name)) {
+ List args = mi.arguments();
+ // the first argument is where the uri is
+ if (args != null && args.size() >= 1) {
+ Object arg = args.get(0);
+ if (isValidArgument(name, arg)) {
+ extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
+ }
+ }
+ }
+ if ("pollEnrich".equals(name)) {
+ List args = mi.arguments();
+ // the first argument is where the uri is
+ if (args != null && args.size() >= 1) {
+ Object arg = args.get(0);
+ if (isValidArgument(name, arg)) {
+ extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
+ }
+ }
+ }
+ }
+
+ if (producers) {
+ if ("to".equals(name) || "toD".equals(name)) {
+ List args = mi.arguments();
+ if (args != null) {
+ for (Object arg : args) {
+ // skip if the arg is a boolean, ExchangePattern or Iterateable, type
+ if (isValidArgument(name, arg)) {
+ extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
+ }
+ }
+ }
+ }
+ if ("toF".equals(name)) {
+ List args = mi.arguments();
+ // the first argument is where the uri is
+ if (args != null && args.size() >= 1) {
+ Object arg = args.get(0);
+ if (isValidArgument(name, arg)) {
+ extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
+ }
+ }
+ }
+ if ("enrich".equals(name) || "wireTap".equals(name)) {
+ List args = mi.arguments();
+ // the first argument is where the uri is
+ if (args != null && args.size() >= 1) {
+ Object arg = args.get(0);
+ if (isValidArgument(name, arg)) {
+ extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
+ }
+ }
+ }
+ }
+ }
+
+ private static boolean isValidArgument(String node, Object arg) {
+ // skip boolean argument, as toD can accept a boolean value
+ if (arg instanceof BooleanLiteral) {
+ return false;
+ }
+ // skip ExchangePattern argument
+ if (arg instanceof QualifiedName) {
+ QualifiedName qn = (QualifiedName) arg;
+ String name = qn.getFullyQualifiedName();
+ if (name.startsWith("ExchangePattern")) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static void extractEndpointUriFromArgument(String node, JavaClassSource clazz, Block block, List<ParserResult> uris, Object arg, boolean strings, boolean fields) {
+ if (strings) {
+ String uri = getLiteralValue(clazz, block, (Expression) arg);
+ if (!Strings.isBlank(uri)) {
+ int position = ((Expression) arg).getStartPosition();
+
+ // if the node is fromF or toF, then replace all %s with {{%s}} as we cannot parse that value
+ if ("fromF".equals(node) || "toF".equals(node)) {
+ uri = uri.replaceAll("\\%s", "\\{\\{\\%s\\}\\}");
+ }
+
+ uris.add(new ParserResult(node, position, uri));
+ return;
+ }
+ }
+ if (fields && arg instanceof SimpleName) {
+ FieldSource field = getField(clazz, block, (SimpleName) arg);
+ if (field != null) {
+ // find the endpoint uri from the annotation
+ AnnotationSource annotation = field.getAnnotation("org.apache.camel.cdi.Uri");
+ if (annotation == null) {
+ annotation = field.getAnnotation("org.apache.camel.EndpointInject");
+ }
+ if (annotation != null) {
+ Expression exp = (Expression) annotation.getInternal();
+ if (exp instanceof SingleMemberAnnotation) {
+ exp = ((SingleMemberAnnotation) exp).getValue();
+ } else if (exp instanceof NormalAnnotation) {
+ List values = ((NormalAnnotation) exp).values();
+ for (Object value : values) {
+ MemberValuePair pair = (MemberValuePair) value;
+ if ("uri".equals(pair.getName().toString())) {
+ exp = pair.getValue();
+ break;
+ }
+ }
+ }
+ String uri = CamelJavaParserHelper.getLiteralValue(clazz, block, exp);
+ if (!Strings.isBlank(uri)) {
+ int position = ((SimpleName) arg).getStartPosition();
+ uris.add(new ParserResult(node, position, uri));
+ }
+ } else {
+ // the field may be initialized using variables, so we need to evaluate those expressions
+ Object fi = field.getInternal();
+ if (fi instanceof VariableDeclaration) {
+ Expression exp = ((VariableDeclaration) fi).getInitializer();
+ String uri = CamelJavaParserHelper.getLiteralValue(clazz, block, exp);
+ if (!Strings.isBlank(uri)) {
+ // we want the position of the field, and not in the route
+ int position = ((VariableDeclaration) fi).getStartPosition();
+ uris.add(new ParserResult(node, position, uri));
+ }
+ }
+ }
+ }
+ }
+
+ // cannot parse it so add a failure
+ uris.add(new ParserResult(node, -1, arg.toString(), false));
+ }
+
+ public static List<ParserResult> parseCamelSimpleExpressions(MethodSource<JavaClassSource> method) {
+ List<ParserResult> answer = new ArrayList<ParserResult>();
+
+ MethodDeclaration md = (MethodDeclaration) method.getInternal();
+ Block block = md.getBody();
+ if (block != null) {
+ for (Object statement : block.statements()) {
+ // must be a method call expression
+ if (statement instanceof ExpressionStatement) {
+ ExpressionStatement es = (ExpressionStatement) statement;
+ Expression exp = es.getExpression();
+
+ List<ParserResult> expressions = new ArrayList<ParserResult>();
+ parseExpression(null, method.getOrigin(), block, exp, expressions);
+ if (!expressions.isEmpty()) {
+ // reverse the order as we will grab them from last->first
+ Collections.reverse(expressions);
+ answer.addAll(expressions);
+ }
+ }
+ }
+ }
+
+ return answer;
+ }
+
+ private static void parseExpression(String node, JavaClassSource clazz, Block block, Expression exp, List<ParserResult> expressions) {
+ if (exp == null) {
+ return;
+ }
+ if (exp instanceof MethodInvocation) {
+ MethodInvocation mi = (MethodInvocation) exp;
+ doParseCamelSimple(node, clazz, block, mi, expressions);
+ // if the method was called on another method, then recursive
+ exp = mi.getExpression();
+ parseExpression(node, clazz, block, exp, expressions);
+ }
+ }
+
+ private static void doParseCamelSimple(String node, JavaClassSource clazz, Block block, MethodInvocation mi, List<ParserResult> expressions) {
+ String name = mi.getName().getIdentifier();
+
+ if ("simple".equals(name)) {
+ List args = mi.arguments();
+ // the first argument is a string parameter for the simple expression
+ if (args != null && args.size() >= 1) {
+ // it is a String type
+ Object arg = args.get(0);
+ String simple = getLiteralValue(clazz, block, (Expression) arg);
+ if (!Strings.isBlank(simple)) {
+ int position = ((Expression) arg).getStartPosition();
+ expressions.add(new ParserResult(node, position, simple));
+ }
+ }
+ }
+
+ // simple maybe be passed in as an argument
+ List args = mi.arguments();
+ if (args != null) {
+ for (Object arg : args) {
+ if (arg instanceof MethodInvocation) {
+ MethodInvocation ami = (MethodInvocation) arg;
+ doParseCamelSimple(node, clazz, block, ami, expressions);
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private static FieldSource<JavaClassSource> getField(JavaClassSource clazz, Block block, SimpleName ref) {
+ String fieldName = ref.getIdentifier();
+ if (fieldName != null) {
+ // find field in class
+ FieldSource field = clazz != null ? clazz.getField(fieldName) : null;
+ if (field == null) {
+ field = findFieldInBlock(clazz, block, fieldName);
+ }
+ return field;
+ }
+ return null;
+ }
+
+ @SuppressWarnings("unchecked")
+ private static FieldSource<JavaClassSource> findFieldInBlock(JavaClassSource clazz, Block block, String fieldName) {
+ for (Object statement : block.statements()) {
+ // try local statements first in the block
+ if (statement instanceof VariableDeclarationStatement) {
+ final Type type = ((VariableDeclarationStatement) statement).getType();
+ for (Object obj : ((VariableDeclarationStatement) statement).fragments()) {
+ if (obj instanceof VariableDeclarationFragment) {
+ VariableDeclarationFragment fragment = (VariableDeclarationFragment) obj;
+ SimpleName name = fragment.getName();
+ if (name != null && fieldName.equals(name.getIdentifier())) {
+ return new StatementFieldSource(clazz, fragment, type);
+ }
+ }
+ }
+ }
+
+ // okay the field may be burried inside an anonymous inner class as a field declaration
+ // outside the configure method, so lets go back to the parent and see what we can find
+ ASTNode node = block.getParent();
+ if (node instanceof MethodDeclaration) {
+ node = node.getParent();
+ }
+ if (node instanceof AnonymousClassDeclaration) {
+ List declarations = ((AnonymousClassDeclaration) node).bodyDeclarations();
+ for (Object dec : declarations) {
+ if (dec instanceof FieldDeclaration) {
+ FieldDeclaration fd = (FieldDeclaration) dec;
+ final Type type = fd.getType();
+ for (Object obj : fd.fragments()) {
+ if (obj instanceof VariableDeclarationFragment) {
+ VariableDeclarationFragment fragment = (VariableDeclarationFragment) obj;
+ SimpleName name = fragment.getName();
+ if (name != null && fieldName.equals(name.getIdentifier())) {
+ return new StatementFieldSource(clazz, fragment, type);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public static String getLiteralValue(JavaClassSource clazz, Block block, Expression expression) {
+ // unwrap parenthesis
+ if (expression instanceof ParenthesizedExpression) {
+ expression = ((ParenthesizedExpression) expression).getExpression();
+ }
+
+ if (expression instanceof StringLiteral) {
+ return ((StringLiteral) expression).getLiteralValue();
+ } else if (expression instanceof BooleanLiteral) {
+ return "" + ((BooleanLiteral) expression).booleanValue();
+ } else if (expression instanceof NumberLiteral) {
+ return ((NumberLiteral) expression).getToken();
+ }
+
+ // if it a method invocation then add a dummy value assuming the method invocation will return a valid response
+ if (expression instanceof MethodInvocation) {
+ String name = ((MethodInvocation) expression).getName().getIdentifier();
+ return "{{" + name + "}}";
+ }
+
+ // if its a qualified name (usually a constant field in another class)
+ // then add a dummy value as we cannot find the field value in other classes and maybe even outside the
+ // source code we have access to
+ if (expression instanceof QualifiedName) {
+ QualifiedName qn = (QualifiedName) expression;
+ String name = qn.getFullyQualifiedName();
+ return "{{" + name + "}}";
+ }
+
+ if (expression instanceof SimpleName) {
+ FieldSource<JavaClassSource> field = getField(clazz, block, (SimpleName) expression);
+ if (field != null) {
+ // is the field annotated with a Camel endpoint
+ if (field.getAnnotations() != null) {
+ for (Annotation ann : field.getAnnotations()) {
+ boolean valid = "org.apache.camel.EndpointInject".equals(ann.getQualifiedName()) || "org.apache.camel.cdi.Uri".equals(ann.getQualifiedName());
+ if (valid) {
+ Expression exp = (Expression) ann.getInternal();
+ if (exp instanceof SingleMemberAnnotation) {
+ exp = ((SingleMemberAnnotation) exp).getValue();
+ } else if (exp instanceof NormalAnnotation) {
+ List values = ((NormalAnnotation) exp).values();
+ for (Object value : values) {
+ MemberValuePair pair = (MemberValuePair) value;
+ if ("uri".equals(pair.getName().toString())) {
+ exp = pair.getValue();
+ break;
+ }
+ }
+ }
+ if (exp != null) {
+ return getLiteralValue(clazz, block, exp);
+ }
+ }
+ }
+ }
+ // is the field an org.apache.camel.Endpoint type?
+ if ("Endpoint".equals(field.getType().getSimpleName())) {
+ // then grab the uri from the first argument
+ VariableDeclarationFragment vdf = (VariableDeclarationFragment) field.getInternal();
+ expression = vdf.getInitializer();
+ if (expression instanceof MethodInvocation) {
+ MethodInvocation mi = (MethodInvocation) expression;
+ List args = mi.arguments();
+ if (args != null && args.size() > 0) {
+ // the first argument has the endpoint uri
+ expression = (Expression) args.get(0);
+ return getLiteralValue(clazz, block, expression);
+ }
+ }
+ } else {
+ // no annotations so try its initializer
+ VariableDeclarationFragment vdf = (VariableDeclarationFragment) field.getInternal();
+ expression = vdf.getInitializer();
+ if (expression == null) {
+ // its a field which has no initializer, then add a dummy value assuming the field will be initialized at runtime
+ return "{{" + field.getName() + "}}";
+ } else {
+ return getLiteralValue(clazz, block, expression);
+ }
+ }
+ } else {
+ // we could not find the field in this class/method, so its maybe from some other super class, so insert a dummy value
+ final String fieldName = ((SimpleName) expression).getIdentifier();
+ return "{{" + fieldName + "}}";
+ }
+ } else if (expression instanceof InfixExpression) {
+ String answer = null;
+ // is it a string that is concat together?
+ InfixExpression ie = (InfixExpression) expression;
+ if (InfixExpression.Operator.PLUS.equals(ie.getOperator())) {
+
+ String val1 = getLiteralValue(clazz, block, ie.getLeftOperand());
+ String val2 = getLiteralValue(clazz, block, ie.getRightOperand());
+
+ // if numeric then we plus the values, otherwise we string concat
+ boolean numeric = isNumericOperator(clazz, block, ie.getLeftOperand()) && isNumericOperator(clazz, block, ie.getRightOperand());
+ if (numeric) {
+ Long num1 = val1 != null ? Long.valueOf(val1) : 0;
+ Long num2 = val2 != null ? Long.valueOf(val2) : 0;
+ answer = "" + (num1 + num2);
+ } else {
+ answer = (val1 != null ? val1 : "") + (val2 != null ? val2 : "");
+ }
+
+ if (!answer.isEmpty()) {
+ // include extended when we concat on 2 or more lines
+ List extended = ie.extendedOperands();
+ if (extended != null) {
+ for (Object ext : extended) {
+ String val3 = getLiteralValue(clazz, block, (Expression) ext);
+ if (numeric) {
+ Long num3 = val3 != null ? Long.valueOf(val3) : 0;
+ Long num = Long.valueOf(answer);
+ answer = "" + (num + num3);
+ } else {
+ answer += val3 != null ? val3 : "";
+ }
+ }
+ }
+ }
+ }
+ return answer;
+ }
+
+ return null;
+ }
+
+ private static boolean isNumericOperator(JavaClassSource clazz, Block block, Expression expression) {
+ if (expression instanceof NumberLiteral) {
+ return true;
+ } else if (expression instanceof SimpleName) {
+ FieldSource field = getField(clazz, block, (SimpleName) expression);
+ if (field != null) {
+ return field.getType().isType("int") || field.getType().isType("long")
+ || field.getType().isType("Integer") || field.getType().isType("Long");
+ }
+ }
+ return false;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlHelper.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlHelper.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlHelper.java
new file mode 100644
index 0000000..53d4783
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlHelper.java
@@ -0,0 +1,268 @@
+/**
+ * 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.parser.helper;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.jboss.forge.roaster.model.util.Strings;
+
+/**
+ * Various XML helper methods used for parsing XML routes.
+ */
+public final class CamelXmlHelper {
+
+ private CamelXmlHelper() {
+ // utility class
+ }
+
+ public static String getSafeAttribute(Node node, String key) {
+ if (node != null) {
+ Node attr = node.getAttributes().getNamedItem(key);
+ if (attr != null) {
+ return attr.getNodeValue();
+ }
+ }
+ return null;
+ }
+
+ public static List<Node> findAllEndpoints(Document dom) {
+ List<Node> nodes = new ArrayList<>();
+
+ NodeList list = dom.getElementsByTagName("endpoint");
+ for (int i = 0; i < list.getLength(); i++) {
+ Node child = list.item(i);
+ if ("endpoint".equals(child.getNodeName())) {
+ // it may not be a camel namespace, so skip those
+ String ns = child.getNamespaceURI();
+ if (ns == null) {
+ NamedNodeMap attrs = child.getAttributes();
+ if (attrs != null) {
+ Node node = attrs.getNamedItem("xmlns");
+ if (node != null) {
+ ns = node.getNodeValue();
+ }
+ }
+ }
+ // assume no namespace its for camel
+ if (ns == null || ns.contains("camel")) {
+ nodes.add(child);
+ }
+ }
+ }
+
+ list = dom.getElementsByTagName("onException");
+ for (int i = 0; i < list.getLength(); i++) {
+ Node child = list.item(i);
+ findAllUrisRecursive(child, nodes);
+ }
+ list = dom.getElementsByTagName("onCompletion");
+ for (int i = 0; i < list.getLength(); i++) {
+ Node child = list.item(i);
+ findAllUrisRecursive(child, nodes);
+ }
+ list = dom.getElementsByTagName("intercept");
+ for (int i = 0; i < list.getLength(); i++) {
+ Node child = list.item(i);
+ findAllUrisRecursive(child, nodes);
+ }
+ list = dom.getElementsByTagName("interceptFrom");
+ for (int i = 0; i < list.getLength(); i++) {
+ Node child = list.item(i);
+ findAllUrisRecursive(child, nodes);
+ }
+ list = dom.getElementsByTagName("interceptSendToEndpoint");
+ for (int i = 0; i < list.getLength(); i++) {
+ Node child = list.item(i);
+ findAllUrisRecursive(child, nodes);
+ }
+ list = dom.getElementsByTagName("rest");
+ for (int i = 0; i < list.getLength(); i++) {
+ Node child = list.item(i);
+ if ("route".equals(child.getNodeName()) || "to".equals(child.getNodeName())) {
+ findAllUrisRecursive(child, nodes);
+ }
+ }
+ list = dom.getElementsByTagName("route");
+ for (int i = 0; i < list.getLength(); i++) {
+ Node child = list.item(i);
+ if ("route".equals(child.getNodeName())) {
+ findAllUrisRecursive(child, nodes);
+ }
+ }
+
+ return nodes;
+ }
+
+ private static void findAllUrisRecursive(Node node, List<Node> nodes) {
+ // okay its a route so grab all uri attributes we can find
+ String url = getSafeAttribute(node, "uri");
+ if (url != null) {
+ nodes.add(node);
+ }
+
+ NodeList children = node.getChildNodes();
+ if (children != null) {
+ for (int i = 0; i < children.getLength(); i++) {
+ Node child = children.item(i);
+ if (child.getNodeType() == Node.ELEMENT_NODE) {
+ findAllUrisRecursive(child, nodes);
+ }
+ }
+ }
+ }
+
+ public static List<Node> findAllSimpleExpressions(Document dom) {
+ List<Node> nodes = new ArrayList<>();
+
+ NodeList list = dom.getElementsByTagName("route");
+ for (int i = 0; i < list.getLength(); i++) {
+ Node child = list.item(i);
+ if ("route".equals(child.getNodeName())) {
+ findAllSimpleExpressionsRecursive(child, nodes);
+ }
+ }
+
+ return nodes;
+ }
+
+ private static void findAllSimpleExpressionsRecursive(Node node, List<Node> nodes) {
+ // okay its a route so grab if its <simple>
+ if ("simple".equals(node.getNodeName())) {
+ nodes.add(node);
+ }
+
+ NodeList children = node.getChildNodes();
+ if (children != null) {
+ for (int i = 0; i < children.getLength(); i++) {
+ Node child = children.item(i);
+ if (child.getNodeType() == Node.ELEMENT_NODE) {
+ findAllSimpleExpressionsRecursive(child, nodes);
+ }
+ }
+ }
+ }
+
+ public static Element getSelectedCamelElementNode(String key, InputStream resourceInputStream) throws Exception {
+ Document root = loadCamelXmlFileAsDom(resourceInputStream);
+ Element selectedElement = null;
+ if (root != null) {
+ Node selectedNode = findCamelNodeInDocument(root, key);
+ if (selectedNode instanceof Element) {
+ selectedElement = (Element) selectedNode;
+ }
+ }
+ return selectedElement;
+ }
+
+ private static Document loadCamelXmlFileAsDom(InputStream resourceInputStream) throws Exception {
+ // must enforce the namespace to be http://camel.apache.org/schema/spring which is what the camel-core JAXB model uses
+ Document root = XmlLineNumberParser.parseXml(resourceInputStream, "camelContext,routes,rests", "http://camel.apache.org/schema/spring");
+ return root;
+ }
+
+ private static Node findCamelNodeInDocument(Document root, String key) {
+ Node selectedNode = null;
+ if (root != null && !Strings.isBlank(key)) {
+ String[] paths = key.split("/");
+ NodeList camels = getCamelContextElements(root);
+ if (camels != null) {
+ Map<String, Integer> rootNodeCounts = new HashMap<>();
+ for (int i = 0, size = camels.getLength(); i < size; i++) {
+ Node node = camels.item(i);
+ boolean first = true;
+ for (String path : paths) {
+ if (first) {
+ first = false;
+ String actual = getIdOrIndex(node, rootNodeCounts);
+ if (!equal(actual, path)) {
+ node = null;
+ }
+ } else {
+ node = findCamelNodeForPath(node, path);
+ }
+ if (node == null) {
+ break;
+ }
+ }
+ if (node != null) {
+ return node;
+ }
+ }
+ }
+ }
+ return selectedNode;
+ }
+
+ private static Node findCamelNodeForPath(Node node, String path) {
+ NodeList childNodes = node.getChildNodes();
+ if (childNodes != null) {
+ Map<String, Integer> nodeCounts = new HashMap<>();
+ for (int i = 0, size = childNodes.getLength(); i < size; i++) {
+ Node child = childNodes.item(i);
+ if (child instanceof Element) {
+ String actual = getIdOrIndex(child, nodeCounts);
+ if (equal(actual, path)) {
+ return child;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ private static String getIdOrIndex(Node node, Map<String, Integer> nodeCounts) {
+ String answer = null;
+ if (node instanceof Element) {
+ Element element = (Element) node;
+ String elementName = element.getTagName();
+ if ("routes".equals(elementName)) {
+ elementName = "camelContext";
+ }
+ Integer countObject = nodeCounts.get(elementName);
+ int count = countObject != null ? countObject.intValue() : 0;
+ nodeCounts.put(elementName, ++count);
+ answer = element.getAttribute("id");
+ if (Strings.isBlank(answer)) {
+ answer = "_" + elementName + count;
+ }
+ }
+ return answer;
+ }
+
+ private static NodeList getCamelContextElements(Document dom) {
+ NodeList camels = dom.getElementsByTagName("camelContext");
+ if (camels == null || camels.getLength() == 0) {
+ camels = dom.getElementsByTagName("routes");
+ }
+ return camels;
+ }
+
+ private static boolean equal(Object a, Object b) {
+ return a == b ? true : a != null && b != null && a.equals(b);
+ }
+
+}
[5/6] camel git commit: CAMEL-10559: route parser for java and xml to
parse source code. Donated from fabric8 project.
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/XmlLineNumberParser.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/XmlLineNumberParser.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/XmlLineNumberParser.java
new file mode 100644
index 0000000..b214b1e
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/helper/XmlLineNumberParser.java
@@ -0,0 +1,197 @@
+/**
+ * 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.parser.helper;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.util.Stack;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * An XML parser that uses SAX to include line and column number for each XML element in the parsed Document.
+ * <p/>
+ * The line number and column number can be obtained from a Node/Element using
+ * <pre>
+ * String lineNumber = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER);
+ * String lineNumberEnd = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER_END);
+ * String columnNumber = (String) node.getUserData(XmlLineNumberParser.COLUMN_NUMBER);
+ * String columnNumberEnd = (String) node.getUserData(XmlLineNumberParser.COLUMN_NUMBER_END);
+ * </pre>
+ */
+public final class XmlLineNumberParser {
+
+ public static final String LINE_NUMBER = "lineNumber";
+ public static final String COLUMN_NUMBER = "colNumber";
+ public static final String LINE_NUMBER_END = "lineNumberEnd";
+ public static final String COLUMN_NUMBER_END = "colNumberEnd";
+
+ private XmlLineNumberParser() {
+ }
+
+ /**
+ * Parses the XML.
+ *
+ * @param is the XML content as an input stream
+ * @return the DOM model
+ * @throws Exception is thrown if error parsing
+ */
+ public static Document parseXml(final InputStream is) throws Exception {
+ return parseXml(is, null, null);
+ }
+
+ /**
+ * Parses the XML.
+ *
+ * @param is the XML content as an input stream
+ * @param rootNames one or more root names that is used as baseline for beginning the parsing, for example camelContext to start parsing
+ * when Camel is discovered. Multiple names can be defined separated by comma
+ * @param forceNamespace an optional namespace to force assign to each node. This may be needed for JAXB unmarshalling from XML -> POJO.
+ * @return the DOM model
+ * @throws Exception is thrown if error parsing
+ */
+ public static Document parseXml(final InputStream is, final String rootNames, final String forceNamespace) throws Exception {
+ final Document doc;
+ SAXParser parser;
+ final SAXParserFactory factory = SAXParserFactory.newInstance();
+ parser = factory.newSAXParser();
+ final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ // turn off validator and loading external dtd
+ dbf.setValidating(false);
+ dbf.setNamespaceAware(true);
+ dbf.setFeature("http://xml.org/sax/features/namespaces", false);
+ dbf.setFeature("http://xml.org/sax/features/validation", false);
+ dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
+ dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
+ dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
+ dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
+ final DocumentBuilder docBuilder = dbf.newDocumentBuilder();
+ doc = docBuilder.newDocument();
+
+ final Stack<Element> elementStack = new Stack<Element>();
+ final StringBuilder textBuffer = new StringBuilder();
+ final DefaultHandler handler = new DefaultHandler() {
+ private Locator locator;
+ private boolean found;
+
+ @Override
+ public void setDocumentLocator(final Locator locator) {
+ this.locator = locator; // Save the locator, so that it can be used later for line tracking when traversing nodes.
+ this.found = rootNames == null;
+ }
+
+ private boolean isRootName(String qName) {
+ for (String root : rootNames.split(",")) {
+ if (qName.equals(root)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) throws SAXException {
+ addTextIfNeeded();
+
+ if (rootNames != null && !found) {
+ if (isRootName(qName)) {
+ found = true;
+ }
+ }
+
+ if (found) {
+ Element el;
+ if (forceNamespace != null) {
+ el = doc.createElementNS(forceNamespace, qName);
+ } else {
+ el = doc.createElement(qName);
+ }
+
+ for (int i = 0; i < attributes.getLength(); i++) {
+ el.setAttribute(attributes.getQName(i), attributes.getValue(i));
+ }
+
+ el.setUserData(LINE_NUMBER, String.valueOf(this.locator.getLineNumber()), null);
+ el.setUserData(COLUMN_NUMBER, String.valueOf(this.locator.getColumnNumber()), null);
+ elementStack.push(el);
+ }
+ }
+
+ @Override
+ public void endElement(final String uri, final String localName, final String qName) {
+ if (!found) {
+ return;
+ }
+
+ addTextIfNeeded();
+
+ final Element closedEl = elementStack.isEmpty() ? null : elementStack.pop();
+ if (closedEl != null) {
+ if (elementStack.isEmpty()) {
+ // Is this the root element?
+ doc.appendChild(closedEl);
+ } else {
+ final Element parentEl = elementStack.peek();
+ parentEl.appendChild(closedEl);
+ }
+
+ closedEl.setUserData(LINE_NUMBER_END, String.valueOf(this.locator.getLineNumber()), null);
+ closedEl.setUserData(COLUMN_NUMBER_END, String.valueOf(this.locator.getColumnNumber()), null);
+ }
+ }
+
+ @Override
+ public void characters(final char ch[], final int start, final int length) throws SAXException {
+ textBuffer.append(ch, start, length);
+ }
+
+ @Override
+ public InputSource resolveEntity(String publicId, String systemId) throws IOException, SAXException {
+ // do not resolve external dtd
+ return new InputSource(new StringReader(""));
+ }
+
+ // Outputs text accumulated under the current node
+ private void addTextIfNeeded() {
+ if (textBuffer.length() > 0) {
+ final Element el = elementStack.isEmpty() ? null : elementStack.peek();
+ if (el != null) {
+ final Node textNode = doc.createTextNode(textBuffer.toString());
+ el.appendChild(textNode);
+ textBuffer.delete(0, textBuffer.length());
+ }
+ }
+ }
+ };
+ parser.parse(is, handler);
+
+ return doc;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelEndpointDetails.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelEndpointDetails.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelEndpointDetails.java
new file mode 100644
index 0000000..3b112a4
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelEndpointDetails.java
@@ -0,0 +1,175 @@
+/**
+ * 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.parser.model;
+
+/**
+ * Details about a parsed and discovered Camel endpoint.
+ */
+public class CamelEndpointDetails {
+
+ private String fileName;
+ private String lineNumber;
+ private String lineNumberEnd;
+ private String className;
+ private String methodName;
+ private String endpointComponentName;
+ private String endpointInstance;
+ private String endpointUri;
+ private boolean consumerOnly;
+ private boolean producerOnly;
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public String getLineNumber() {
+ return lineNumber;
+ }
+
+ public void setLineNumber(String lineNumber) {
+ this.lineNumber = lineNumber;
+ }
+
+ public String getLineNumberEnd() {
+ return lineNumberEnd;
+ }
+
+ public void setLineNumberEnd(String lineNumberEnd) {
+ this.lineNumberEnd = lineNumberEnd;
+ }
+
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ public String getMethodName() {
+ return methodName;
+ }
+
+ public void setMethodName(String methodName) {
+ this.methodName = methodName;
+ }
+
+ public String getEndpointComponentName() {
+ return endpointComponentName;
+ }
+
+ public void setEndpointComponentName(String endpointComponentName) {
+ this.endpointComponentName = endpointComponentName;
+ }
+
+ public String getEndpointInstance() {
+ return endpointInstance;
+ }
+
+ public void setEndpointInstance(String endpointInstance) {
+ this.endpointInstance = endpointInstance;
+ }
+
+ public String getEndpointUri() {
+ return endpointUri;
+ }
+
+ public void setEndpointUri(String endpointUri) {
+ this.endpointUri = endpointUri;
+ }
+
+ public boolean isConsumerOnly() {
+ return consumerOnly;
+ }
+
+ public void setConsumerOnly(boolean consumerOnly) {
+ this.consumerOnly = consumerOnly;
+ }
+
+ public boolean isProducerOnly() {
+ return producerOnly;
+ }
+
+ public void setProducerOnly(boolean producerOnly) {
+ this.producerOnly = producerOnly;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ CamelEndpointDetails that = (CamelEndpointDetails) o;
+
+ if (!fileName.equals(that.fileName)) {
+ return false;
+ }
+ if (lineNumber != null ? !lineNumber.equals(that.lineNumber) : that.lineNumber != null) {
+ return false;
+ }
+ if (lineNumberEnd != null ? !lineNumberEnd.equals(that.lineNumberEnd) : that.lineNumberEnd != null) {
+ return false;
+ }
+ if (!className.equals(that.className)) {
+ return false;
+ }
+ if (methodName != null ? !methodName.equals(that.methodName) : that.methodName != null) {
+ return false;
+ }
+ if (endpointInstance != null ? !endpointInstance.equals(that.endpointInstance) : that.endpointInstance != null) {
+ return false;
+ }
+ return endpointUri.equals(that.endpointUri);
+
+ }
+
+ @Override
+ public int hashCode() {
+ int result = fileName.hashCode();
+ result = 31 * result + (lineNumber != null ? lineNumber.hashCode() : 0);
+ result = 31 * result + (lineNumberEnd != null ? lineNumberEnd.hashCode() : 0);
+ result = 31 * result + className.hashCode();
+ result = 31 * result + (methodName != null ? methodName.hashCode() : 0);
+ result = 31 * result + (endpointInstance != null ? endpointInstance.hashCode() : 0);
+ result = 31 * result + endpointUri.hashCode();
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "CamelEndpointDetails["
+ + "fileName='" + fileName + '\''
+ + ", lineNumber='" + lineNumber + '\''
+ + ", lineNumberEnd='" + lineNumberEnd + '\''
+ + ", className='" + className + '\''
+ + ", methodName='" + methodName + '\''
+ + ", endpointComponentName='" + endpointComponentName + '\''
+ + ", endpointInstance='" + endpointInstance + '\''
+ + ", endpointUri='" + endpointUri + '\''
+ + ", consumerOnly=" + consumerOnly
+ + ", producerOnly=" + producerOnly
+ + ']';
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelSimpleExpressionDetails.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelSimpleExpressionDetails.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelSimpleExpressionDetails.java
new file mode 100644
index 0000000..9d6db11
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/model/CamelSimpleExpressionDetails.java
@@ -0,0 +1,101 @@
+/**
+ * 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.parser.model;
+
+/**
+ * Details about a parsed and discovered Camel simple expression.
+ */
+public class CamelSimpleExpressionDetails {
+
+ private String fileName;
+ private String lineNumber;
+ private String lineNumberEnd;
+ private String className;
+ private String methodName;
+ private String simple;
+ private boolean predicate;
+ private boolean expression;
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public String getLineNumber() {
+ return lineNumber;
+ }
+
+ public void setLineNumber(String lineNumber) {
+ this.lineNumber = lineNumber;
+ }
+
+ public String getLineNumberEnd() {
+ return lineNumberEnd;
+ }
+
+ public void setLineNumberEnd(String lineNumberEnd) {
+ this.lineNumberEnd = lineNumberEnd;
+ }
+
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ public String getMethodName() {
+ return methodName;
+ }
+
+ public void setMethodName(String methodName) {
+ this.methodName = methodName;
+ }
+
+ public String getSimple() {
+ return simple;
+ }
+
+ public void setSimple(String simple) {
+ this.simple = simple;
+ }
+
+ public boolean isPredicate() {
+ return predicate;
+ }
+
+ public void setPredicate(boolean predicate) {
+ this.predicate = predicate;
+ }
+
+ public boolean isExpression() {
+ return expression;
+ }
+
+ public void setExpression(boolean expression) {
+ this.expression = expression;
+ }
+
+ @Override
+ public String toString() {
+ return simple;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/roaster/AnonymousMethodSource.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/roaster/AnonymousMethodSource.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/roaster/AnonymousMethodSource.java
new file mode 100644
index 0000000..234082a
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/roaster/AnonymousMethodSource.java
@@ -0,0 +1,426 @@
+/**
+ * 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.parser.roaster;
+
+import java.lang.annotation.Annotation;
+import java.util.List;
+
+import org.jboss.forge.roaster.model.JavaType;
+import org.jboss.forge.roaster.model.Type;
+import org.jboss.forge.roaster.model.TypeVariable;
+import org.jboss.forge.roaster.model.Visibility;
+import org.jboss.forge.roaster.model.source.AnnotationSource;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.JavaDocSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.jboss.forge.roaster.model.source.ParameterSource;
+import org.jboss.forge.roaster.model.source.TypeVariableSource;
+
+/**
+ * In use when we have discovered a RouteBuilder being as anonymous inner class
+ */
+public class AnonymousMethodSource implements MethodSource<JavaClassSource> {
+
+ // this implementation should only implement the needed logic to support the parser
+
+ private final JavaClassSource origin;
+ private final Object internal;
+
+ public AnonymousMethodSource(JavaClassSource origin, Object internal) {
+ this.origin = origin;
+ this.internal = internal;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setDefault(boolean b) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setSynchronized(boolean b) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setNative(boolean b) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setReturnType(Class<?> aClass) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setReturnType(String s) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setReturnType(JavaType<?> javaType) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setReturnTypeVoid() {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setBody(String s) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setConstructor(boolean b) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setParameters(String s) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> addThrows(String s) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> addThrows(Class<? extends Exception> aClass) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> removeThrows(String s) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> removeThrows(Class<? extends Exception> aClass) {
+ return null;
+ }
+
+ @Override
+ public boolean isSynchronized() {
+ return false;
+ }
+
+ @Override
+ public boolean isNative() {
+ return false;
+ }
+
+ @Override
+ public String getBody() {
+ return null;
+ }
+
+ @Override
+ public boolean isConstructor() {
+ return false;
+ }
+
+ @Override
+ public Type<JavaClassSource> getReturnType() {
+ return null;
+ }
+
+ @Override
+ public boolean isReturnTypeVoid() {
+ return false;
+ }
+
+ @Override
+ public List<ParameterSource<JavaClassSource>> getParameters() {
+ return null;
+ }
+
+ @Override
+ public String toSignature() {
+ return null;
+ }
+
+ @Override
+ public List<String> getThrownExceptions() {
+ return null;
+ }
+
+ @Override
+ public boolean isDefault() {
+ return false;
+ }
+
+ @Override
+ public ParameterSource<JavaClassSource> addParameter(Class<?> aClass, String s) {
+ return null;
+ }
+
+ @Override
+ public ParameterSource<JavaClassSource> addParameter(String s, String s1) {
+ return null;
+ }
+
+ @Override
+ public ParameterSource<JavaClassSource> addParameter(JavaType<?> javaType, String s) {
+ return null;
+ }
+
+ @Override
+ public void removeAllAnnotations() {
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> removeParameter(ParameterSource<JavaClassSource> parameterSource) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> removeParameter(Class<?> aClass, String s) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> removeParameter(String s, String s1) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> removeParameter(JavaType<?> javaType, String s) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setAbstract(boolean b) {
+ return null;
+ }
+
+ @Override
+ public List<AnnotationSource<JavaClassSource>> getAnnotations() {
+ return null;
+ }
+
+ @Override
+ public boolean hasAnnotation(Class<? extends Annotation> aClass) {
+ return false;
+ }
+
+ @Override
+ public boolean hasAnnotation(String s) {
+ return false;
+ }
+
+ @Override
+ public AnnotationSource<JavaClassSource> getAnnotation(Class<? extends Annotation> aClass) {
+ return null;
+ }
+
+ @Override
+ public AnnotationSource<JavaClassSource> getAnnotation(String s) {
+ return null;
+ }
+
+ @Override
+ public AnnotationSource<JavaClassSource> addAnnotation() {
+ return null;
+ }
+
+ @Override
+ public AnnotationSource<JavaClassSource> addAnnotation(Class<? extends Annotation> aClass) {
+ return null;
+ }
+
+ @Override
+ public AnnotationSource<JavaClassSource> addAnnotation(String s) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> removeAnnotation(org.jboss.forge.roaster.model.Annotation<JavaClassSource> annotation) {
+ return null;
+ }
+
+ @Override
+ public List<TypeVariableSource<JavaClassSource>> getTypeVariables() {
+ return null;
+ }
+
+ @Override
+ public TypeVariableSource<JavaClassSource> getTypeVariable(String s) {
+ return null;
+ }
+
+ @Override
+ public TypeVariableSource<JavaClassSource> addTypeVariable() {
+ return null;
+ }
+
+ @Override
+ public TypeVariableSource<JavaClassSource> addTypeVariable(String s) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> removeTypeVariable(String s) {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> removeTypeVariable(TypeVariable<?> typeVariable) {
+ return null;
+ }
+
+ @Override
+ public boolean hasJavaDoc() {
+ return false;
+ }
+
+ @Override
+ public boolean isAbstract() {
+ return false;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setFinal(boolean b) {
+ return null;
+ }
+
+ @Override
+ public boolean isFinal() {
+ return false;
+ }
+
+ @Override
+ public Object getInternal() {
+ return internal;
+ }
+
+ @Override
+ public JavaDocSource<MethodSource<JavaClassSource>> getJavaDoc() {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> removeJavaDoc() {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setName(String s) {
+ return null;
+ }
+
+ @Override
+ public String getName() {
+ return null;
+ }
+
+ @Override
+ public JavaClassSource getOrigin() {
+ return origin;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setStatic(boolean b) {
+ return null;
+ }
+
+ @Override
+ public boolean isStatic() {
+ return false;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setPackagePrivate() {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setPublic() {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setPrivate() {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setProtected() {
+ return null;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setVisibility(Visibility visibility) {
+ return null;
+ }
+
+ @Override
+ public boolean isPackagePrivate() {
+ return false;
+ }
+
+ @Override
+ public boolean isPublic() {
+ return false;
+ }
+
+ @Override
+ public boolean isPrivate() {
+ return false;
+ }
+
+ @Override
+ public boolean isProtected() {
+ return false;
+ }
+
+ @Override
+ public Visibility getVisibility() {
+ return null;
+ }
+
+ @Override
+ public int getColumnNumber() {
+ return 0;
+ }
+
+ @Override
+ public int getStartPosition() {
+ return 0;
+ }
+
+ @Override
+ public int getEndPosition() {
+ return 0;
+ }
+
+ @Override
+ public int getLineNumber() {
+ return 0;
+ }
+
+ @Override
+ public boolean hasTypeVariable(String arg0) {
+ return false;
+ }
+
+ @Override
+ public MethodSource<JavaClassSource> setReturnType(Type<?> arg0) {
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/roaster/StatementFieldSource.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/roaster/StatementFieldSource.java b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/roaster/StatementFieldSource.java
new file mode 100644
index 0000000..cbfcedc
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/java/org/apache/camel/parser/roaster/StatementFieldSource.java
@@ -0,0 +1,278 @@
+/**
+ * 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.parser.roaster;
+
+import java.util.List;
+
+import org.jboss.forge.roaster.model.Annotation;
+import org.jboss.forge.roaster.model.JavaType;
+import org.jboss.forge.roaster.model.Type;
+import org.jboss.forge.roaster.model.Visibility;
+import org.jboss.forge.roaster.model.impl.TypeImpl;
+import org.jboss.forge.roaster.model.source.AnnotationSource;
+import org.jboss.forge.roaster.model.source.FieldSource;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.JavaDocSource;
+
+public class StatementFieldSource implements FieldSource {
+
+ // this implementation should only implement the needed logic to support the parser
+
+ private final JavaClassSource origin;
+ private final Object internal;
+ private final Type type;
+
+ public StatementFieldSource(JavaClassSource origin, Object internal, Object typeInternal) {
+ this.origin = origin;
+ this.internal = internal;
+ this.type = new TypeImpl(origin, typeInternal);
+ }
+
+ @Override
+ public FieldSource setType(Class clazz) {
+ return null;
+ }
+
+ @Override
+ public FieldSource setType(String type) {
+ return null;
+ }
+
+ @Override
+ public FieldSource setLiteralInitializer(String value) {
+ return null;
+ }
+
+ @Override
+ public FieldSource setStringInitializer(String value) {
+ return null;
+ }
+
+ @Override
+ public FieldSource setTransient(boolean value) {
+ return null;
+ }
+
+ @Override
+ public FieldSource setVolatile(boolean value) {
+ return null;
+ }
+
+ @Override
+ public FieldSource setType(JavaType entity) {
+ return null;
+ }
+
+ @Override
+ public List<AnnotationSource> getAnnotations() {
+ return null;
+ }
+
+ @Override
+ public boolean hasAnnotation(String type) {
+ return false;
+ }
+
+ @Override
+ public boolean hasAnnotation(Class type) {
+ return false;
+ }
+
+ @Override
+ public AnnotationSource getAnnotation(String type) {
+ return null;
+ }
+
+ @Override
+ public AnnotationSource addAnnotation() {
+ return null;
+ }
+
+ @Override
+ public AnnotationSource addAnnotation(String className) {
+ return null;
+ }
+
+ @Override
+ public void removeAllAnnotations() {
+ }
+
+ @Override
+ public Object removeAnnotation(Annotation annotation) {
+ return null;
+ }
+
+ @Override
+ public AnnotationSource addAnnotation(Class type) {
+ return null;
+ }
+
+ @Override
+ public AnnotationSource getAnnotation(Class type) {
+ return null;
+ }
+
+ @Override
+ public Type getType() {
+ return type;
+ }
+
+ @Override
+ public String getStringInitializer() {
+ return null;
+ }
+
+ @Override
+ public String getLiteralInitializer() {
+ return null;
+ }
+
+ @Override
+ public boolean isTransient() {
+ return false;
+ }
+
+ @Override
+ public boolean isVolatile() {
+ return false;
+ }
+
+ @Override
+ public Object setFinal(boolean finl) {
+ return null;
+ }
+
+ @Override
+ public boolean isFinal() {
+ return false;
+ }
+
+ @Override
+ public Object getInternal() {
+ return internal;
+ }
+
+ @Override
+ public JavaDocSource getJavaDoc() {
+ return null;
+ }
+
+ @Override
+ public boolean hasJavaDoc() {
+ return false;
+ }
+
+ @Override
+ public Object removeJavaDoc() {
+ return null;
+ }
+
+ @Override
+ public Object setName(String name) {
+ return null;
+ }
+
+ @Override
+ public String getName() {
+ return null;
+ }
+
+ @Override
+ public Object getOrigin() {
+ return origin;
+ }
+
+ @Override
+ public Object setStatic(boolean value) {
+ return null;
+ }
+
+ @Override
+ public boolean isStatic() {
+ return false;
+ }
+
+ @Override
+ public Object setPackagePrivate() {
+ return null;
+ }
+
+ @Override
+ public Object setPublic() {
+ return null;
+ }
+
+ @Override
+ public Object setPrivate() {
+ return null;
+ }
+
+ @Override
+ public Object setProtected() {
+ return null;
+ }
+
+ @Override
+ public Object setVisibility(Visibility scope) {
+ return null;
+ }
+
+ @Override
+ public boolean isPackagePrivate() {
+ return false;
+ }
+
+ @Override
+ public boolean isPublic() {
+ return false;
+ }
+
+ @Override
+ public boolean isPrivate() {
+ return false;
+ }
+
+ @Override
+ public boolean isProtected() {
+ return false;
+ }
+
+ @Override
+ public Visibility getVisibility() {
+ return null;
+ }
+
+ @Override
+ public int getColumnNumber() {
+ return 0;
+ }
+
+ @Override
+ public int getStartPosition() {
+ return 0;
+ }
+
+ @Override
+ public int getEndPosition() {
+ return 0;
+ }
+
+ @Override
+ public int getLineNumber() {
+ return 0;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/resources/META-INF/LICENSE.txt
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/resources/META-INF/LICENSE.txt b/tooling/camel-route-parser/src/main/resources/META-INF/LICENSE.txt
new file mode 100755
index 0000000..6b0b127
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,203 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/main/resources/META-INF/NOTICE.txt
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/main/resources/META-INF/NOTICE.txt b/tooling/camel-route-parser/src/main/resources/META-INF/NOTICE.txt
new file mode 100644
index 0000000..2e215bf
--- /dev/null
+++ b/tooling/camel-route-parser/src/main/resources/META-INF/NOTICE.txt
@@ -0,0 +1,11 @@
+ =========================================================================
+ == NOTICE file corresponding to the section 4 d of ==
+ == the Apache License, Version 2.0, ==
+ == in this case for the Apache Camel distribution. ==
+ =========================================================================
+
+ This product includes software developed by
+ The Apache Software Foundation (http://www.apache.org/).
+
+ Please read the different LICENSE files present in the licenses directory of
+ this distribution.
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyBasePortRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyBasePortRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyBasePortRouteBuilder.java
new file mode 100644
index 0000000..e5fb01c
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyBasePortRouteBuilder.java
@@ -0,0 +1,27 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public abstract class MyBasePortRouteBuilder extends RouteBuilder {
+
+ public int getNextPort() {
+ return 8080;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyCdiConcatRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyCdiConcatRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyCdiConcatRouteBuilder.java
new file mode 100644
index 0000000..374ffb9
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyCdiConcatRouteBuilder.java
@@ -0,0 +1,49 @@
+/**
+ * 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.parser.java;
+
+import javax.inject.Inject;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.cdi.Uri;
+
+public class MyCdiConcatRouteBuilder extends RouteBuilder {
+
+ private static final int DELAY = 4999;
+ private static final int PORT = 80;
+
+ @Inject
+ @Uri("timer:foo?period=" + DELAY)
+ private Endpoint inputEndpoint;
+
+ @Inject
+ @Uri("log:a")
+ private Endpoint loga;
+
+ @EndpointInject(uri = "netty4-http:http:someserver:" + PORT + "/hello")
+ private Endpoint mynetty;
+
+ @Override
+ public void configure() throws Exception {
+ from(inputEndpoint)
+ .log("I was here")
+ .to(loga)
+ .to(mynetty);
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java
new file mode 100644
index 0000000..2bf3e78
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java
@@ -0,0 +1,46 @@
+/**
+ * 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.parser.java;
+
+import javax.inject.Inject;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.cdi.Uri;
+
+public class MyCdiRouteBuilder extends RouteBuilder {
+
+ @Inject
+ @Uri("timer:foo?period=4999")
+ private Endpoint inputEndpoint;
+
+ @Inject
+ @Uri("log:a")
+ private Endpoint loga;
+
+ @Inject
+ @Uri("netty4-http:http:someserver:80/hello")
+ private Endpoint mynetty;
+
+ @Override
+ public void configure() throws Exception {
+ from(inputEndpoint)
+ .log("I was here")
+ .to(loga)
+ .to(mynetty);
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyConcatFieldRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyConcatFieldRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyConcatFieldRouteBuilder.java
new file mode 100644
index 0000000..4322689
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyConcatFieldRouteBuilder.java
@@ -0,0 +1,31 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class MyConcatFieldRouteBuilder extends RouteBuilder {
+
+ private int ftpPort;
+ private String ftp = "ftp:localhost:" + ftpPort + "/myapp?password=admin&username=admin";
+
+ @Override
+ public void configure() throws Exception {
+ from(ftp)
+ .to("log:b");
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyFieldMethodCallRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyFieldMethodCallRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyFieldMethodCallRouteBuilder.java
new file mode 100644
index 0000000..2a13f19
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyFieldMethodCallRouteBuilder.java
@@ -0,0 +1,33 @@
+/**
+ * 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.parser.java;
+
+public class MyFieldMethodCallRouteBuilder extends MyBasePortRouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+ int port2 = getNextPort();
+
+ from("netty-http:http://0.0.0.0:{{port}}/foo")
+ .to("mock:input1")
+ .to("netty-http:http://0.0.0.0:" + port2 + "/bar");
+ from("netty-http:http://0.0.0.0:" + port2 + "/bar")
+ .to("mock:input2")
+ .transform().constant("Bye World");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyFieldRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyFieldRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyFieldRouteBuilder.java
new file mode 100644
index 0000000..b56595b
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyFieldRouteBuilder.java
@@ -0,0 +1,31 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class MyFieldRouteBuilder extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+ String exists = "Override";
+
+ from("timer:foo")
+ .toD("file:output?fileExist=" + exists)
+ .to("log:b");
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyLocalAddRouteBuilderTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyLocalAddRouteBuilderTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyLocalAddRouteBuilderTest.java
new file mode 100644
index 0000000..4a8de07
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyLocalAddRouteBuilderTest.java
@@ -0,0 +1,52 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Ignore;
+import org.junit.Test;
+
+@Ignore
+public class MyLocalAddRouteBuilderTest extends CamelTestSupport {
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
+ }
+
+ @Test
+ public void testFoo() throws Exception {
+ log.info("Adding a route locally");
+
+ context.addRoutes(new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .to("mock:foo");
+ }
+ });
+ context.start();
+
+ getMockEndpoint("mock:foo").expectedMessageCount(1);
+
+ template.sendBody("direct:start", "Hello World");
+
+ assertMockEndpointsSatisfied();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyMethodCallRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyMethodCallRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyMethodCallRouteBuilder.java
new file mode 100644
index 0000000..f54541f
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyMethodCallRouteBuilder.java
@@ -0,0 +1,33 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class MyMethodCallRouteBuilder extends RouteBuilder {
+
+ private String whatToDoWhenExists() {
+ return "Override";
+ }
+
+ @Override
+ public void configure() throws Exception {
+ from("timer:foo")
+ .to("file:output?fileExist=" + whatToDoWhenExists())
+ .to("log:b");
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNettyTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNettyTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNettyTest.java
new file mode 100644
index 0000000..4391576
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNettyTest.java
@@ -0,0 +1,52 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Ignore;
+import org.junit.Test;
+
+@Ignore
+public class MyNettyTest extends CamelTestSupport {
+
+ public int getNextPort() {
+ return 8080;
+ }
+
+ @Test
+ public void testFoo() throws Exception {
+ // noop
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ int port2 = getNextPort();
+
+ @Override
+ public void configure() throws Exception {
+ from("netty-http:http://0.0.0.0:{{port}}/foo")
+ .to("mock:input1")
+ .to("netty-http:http://0.0.0.0:" + port2 + "/bar");
+ from("netty-http:http://0.0.0.0:" + port2 + "/bar")
+ .to("mock:input2")
+ .transform().constant("Bye World");
+ }
+ };
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineConstRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineConstRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineConstRouteBuilder.java
new file mode 100644
index 0000000..4701c2e
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineConstRouteBuilder.java
@@ -0,0 +1,34 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class MyNewLineConstRouteBuilder extends RouteBuilder {
+
+ private static final String EXISTS = "Append";
+ private static final int MOD = 770;
+
+ @Override
+ public void configure() throws Exception {
+ from("timer:foo")
+ .toD("file:output?fileExist=" + EXISTS
+ + "&chmod=" + (MOD + 6 + 1)
+ + "&allowNullBody=true")
+ .to("log:b");
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineRouteBuilder.java
new file mode 100644
index 0000000..8213244
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineRouteBuilder.java
@@ -0,0 +1,31 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class MyNewLineRouteBuilder extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+ from("timer:foo")
+ .toD("file:output?fileExist=Append"
+ + "&chmod=777"
+ + "&allowNullBody=true")
+ .to("log:b");
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteBuilder.java
new file mode 100644
index 0000000..9c44803
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteBuilder.java
@@ -0,0 +1,31 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class MyRouteBuilder extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+ from("timer:foo")
+ .log("I was here")
+ .toD("log:a")
+ .wireTap("mock:tap")
+ .to("log:b");
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteEmptyUriTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteEmptyUriTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteEmptyUriTest.java
new file mode 100644
index 0000000..12a797d
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteEmptyUriTest.java
@@ -0,0 +1,42 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Ignore;
+import org.junit.Test;
+
+@Ignore
+public class MyRouteEmptyUriTest extends CamelTestSupport {
+
+ @Test
+ public void testFoo() throws Exception {
+ // noop
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:foo")
+ .to(""); // is empty on purpose
+ }
+ };
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteTest.java
new file mode 100644
index 0000000..a6c4923
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MyRouteTest.java
@@ -0,0 +1,40 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class MyRouteTest extends CamelTestSupport {
+
+ @Test
+ public void testFoo() throws Exception {
+ // noop
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:foo")
+ .to("mock:foo");
+ }
+ };
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java
new file mode 100644
index 0000000..85bbe14
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java
@@ -0,0 +1,34 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class MySimpleRouteBuilder extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+ from("timer:foo")
+ .filter(simple("${body} > 100"))
+ .toD("log:a")
+ .end()
+ .filter().simple("${body} > 200")
+ .to("log:b")
+ .end()
+ .to("log:c");
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java
new file mode 100644
index 0000000..2825070
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java
@@ -0,0 +1,34 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.builder.RouteBuilder;
+
+public class MySimpleToDRoute extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+
+ String uri = "log:c";
+
+ from("direct:start")
+ .toD("log:a", true)
+ .to(ExchangePattern.InOnly, "log:b")
+ .to(uri);
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java
new file mode 100644
index 0000000..3e43655
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java
@@ -0,0 +1,28 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class MySimpleToFRoute extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+ from("direct:start")
+ .toF("log:a?level=%s", "info");
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiConcatRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiConcatRouteBuilderConfigureTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiConcatRouteBuilderConfigureTest.java
new file mode 100644
index 0000000..7d9abe4
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiConcatRouteBuilderConfigureTest.java
@@ -0,0 +1,55 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterCdiConcatRouteBuilderConfigureTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterCdiConcatRouteBuilderConfigureTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyCdiConcatRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("timer:foo?period=4999", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("log:a", list.get(0).getElement());
+ Assert.assertEquals("netty4-http:http:someserver:80/hello", list.get(1).getElement());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiRouteBuilderConfigureTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiRouteBuilderConfigureTest.java
new file mode 100644
index 0000000..6abd424
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiRouteBuilderConfigureTest.java
@@ -0,0 +1,55 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterCdiRouteBuilderConfigureTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterCdiRouteBuilderConfigureTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("timer:foo?period=4999", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("log:a", list.get(0).getElement());
+ Assert.assertEquals("netty4-http:http:someserver:80/hello", list.get(1).getElement());
+ }
+
+}
[2/6] camel git commit: CAMEL-10559: route parser for java and xml to
parse source code. Donated from fabric8 project.
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/java/org/apache/camel/parser/roaster/AnonymousMethodSource.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/java/org/apache/camel/parser/roaster/AnonymousMethodSource.java b/tooling/route-parser/src/main/java/org/apache/camel/parser/roaster/AnonymousMethodSource.java
deleted file mode 100644
index 234082a..0000000
--- a/tooling/route-parser/src/main/java/org/apache/camel/parser/roaster/AnonymousMethodSource.java
+++ /dev/null
@@ -1,426 +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.parser.roaster;
-
-import java.lang.annotation.Annotation;
-import java.util.List;
-
-import org.jboss.forge.roaster.model.JavaType;
-import org.jboss.forge.roaster.model.Type;
-import org.jboss.forge.roaster.model.TypeVariable;
-import org.jboss.forge.roaster.model.Visibility;
-import org.jboss.forge.roaster.model.source.AnnotationSource;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.JavaDocSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.jboss.forge.roaster.model.source.ParameterSource;
-import org.jboss.forge.roaster.model.source.TypeVariableSource;
-
-/**
- * In use when we have discovered a RouteBuilder being as anonymous inner class
- */
-public class AnonymousMethodSource implements MethodSource<JavaClassSource> {
-
- // this implementation should only implement the needed logic to support the parser
-
- private final JavaClassSource origin;
- private final Object internal;
-
- public AnonymousMethodSource(JavaClassSource origin, Object internal) {
- this.origin = origin;
- this.internal = internal;
- }
-
- @Override
- public MethodSource<JavaClassSource> setDefault(boolean b) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setSynchronized(boolean b) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setNative(boolean b) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setReturnType(Class<?> aClass) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setReturnType(String s) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setReturnType(JavaType<?> javaType) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setReturnTypeVoid() {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setBody(String s) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setConstructor(boolean b) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setParameters(String s) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> addThrows(String s) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> addThrows(Class<? extends Exception> aClass) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> removeThrows(String s) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> removeThrows(Class<? extends Exception> aClass) {
- return null;
- }
-
- @Override
- public boolean isSynchronized() {
- return false;
- }
-
- @Override
- public boolean isNative() {
- return false;
- }
-
- @Override
- public String getBody() {
- return null;
- }
-
- @Override
- public boolean isConstructor() {
- return false;
- }
-
- @Override
- public Type<JavaClassSource> getReturnType() {
- return null;
- }
-
- @Override
- public boolean isReturnTypeVoid() {
- return false;
- }
-
- @Override
- public List<ParameterSource<JavaClassSource>> getParameters() {
- return null;
- }
-
- @Override
- public String toSignature() {
- return null;
- }
-
- @Override
- public List<String> getThrownExceptions() {
- return null;
- }
-
- @Override
- public boolean isDefault() {
- return false;
- }
-
- @Override
- public ParameterSource<JavaClassSource> addParameter(Class<?> aClass, String s) {
- return null;
- }
-
- @Override
- public ParameterSource<JavaClassSource> addParameter(String s, String s1) {
- return null;
- }
-
- @Override
- public ParameterSource<JavaClassSource> addParameter(JavaType<?> javaType, String s) {
- return null;
- }
-
- @Override
- public void removeAllAnnotations() {
- }
-
- @Override
- public MethodSource<JavaClassSource> removeParameter(ParameterSource<JavaClassSource> parameterSource) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> removeParameter(Class<?> aClass, String s) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> removeParameter(String s, String s1) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> removeParameter(JavaType<?> javaType, String s) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setAbstract(boolean b) {
- return null;
- }
-
- @Override
- public List<AnnotationSource<JavaClassSource>> getAnnotations() {
- return null;
- }
-
- @Override
- public boolean hasAnnotation(Class<? extends Annotation> aClass) {
- return false;
- }
-
- @Override
- public boolean hasAnnotation(String s) {
- return false;
- }
-
- @Override
- public AnnotationSource<JavaClassSource> getAnnotation(Class<? extends Annotation> aClass) {
- return null;
- }
-
- @Override
- public AnnotationSource<JavaClassSource> getAnnotation(String s) {
- return null;
- }
-
- @Override
- public AnnotationSource<JavaClassSource> addAnnotation() {
- return null;
- }
-
- @Override
- public AnnotationSource<JavaClassSource> addAnnotation(Class<? extends Annotation> aClass) {
- return null;
- }
-
- @Override
- public AnnotationSource<JavaClassSource> addAnnotation(String s) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> removeAnnotation(org.jboss.forge.roaster.model.Annotation<JavaClassSource> annotation) {
- return null;
- }
-
- @Override
- public List<TypeVariableSource<JavaClassSource>> getTypeVariables() {
- return null;
- }
-
- @Override
- public TypeVariableSource<JavaClassSource> getTypeVariable(String s) {
- return null;
- }
-
- @Override
- public TypeVariableSource<JavaClassSource> addTypeVariable() {
- return null;
- }
-
- @Override
- public TypeVariableSource<JavaClassSource> addTypeVariable(String s) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> removeTypeVariable(String s) {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> removeTypeVariable(TypeVariable<?> typeVariable) {
- return null;
- }
-
- @Override
- public boolean hasJavaDoc() {
- return false;
- }
-
- @Override
- public boolean isAbstract() {
- return false;
- }
-
- @Override
- public MethodSource<JavaClassSource> setFinal(boolean b) {
- return null;
- }
-
- @Override
- public boolean isFinal() {
- return false;
- }
-
- @Override
- public Object getInternal() {
- return internal;
- }
-
- @Override
- public JavaDocSource<MethodSource<JavaClassSource>> getJavaDoc() {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> removeJavaDoc() {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setName(String s) {
- return null;
- }
-
- @Override
- public String getName() {
- return null;
- }
-
- @Override
- public JavaClassSource getOrigin() {
- return origin;
- }
-
- @Override
- public MethodSource<JavaClassSource> setStatic(boolean b) {
- return null;
- }
-
- @Override
- public boolean isStatic() {
- return false;
- }
-
- @Override
- public MethodSource<JavaClassSource> setPackagePrivate() {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setPublic() {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setPrivate() {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setProtected() {
- return null;
- }
-
- @Override
- public MethodSource<JavaClassSource> setVisibility(Visibility visibility) {
- return null;
- }
-
- @Override
- public boolean isPackagePrivate() {
- return false;
- }
-
- @Override
- public boolean isPublic() {
- return false;
- }
-
- @Override
- public boolean isPrivate() {
- return false;
- }
-
- @Override
- public boolean isProtected() {
- return false;
- }
-
- @Override
- public Visibility getVisibility() {
- return null;
- }
-
- @Override
- public int getColumnNumber() {
- return 0;
- }
-
- @Override
- public int getStartPosition() {
- return 0;
- }
-
- @Override
- public int getEndPosition() {
- return 0;
- }
-
- @Override
- public int getLineNumber() {
- return 0;
- }
-
- @Override
- public boolean hasTypeVariable(String arg0) {
- return false;
- }
-
- @Override
- public MethodSource<JavaClassSource> setReturnType(Type<?> arg0) {
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/java/org/apache/camel/parser/roaster/StatementFieldSource.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/java/org/apache/camel/parser/roaster/StatementFieldSource.java b/tooling/route-parser/src/main/java/org/apache/camel/parser/roaster/StatementFieldSource.java
deleted file mode 100644
index cbfcedc..0000000
--- a/tooling/route-parser/src/main/java/org/apache/camel/parser/roaster/StatementFieldSource.java
+++ /dev/null
@@ -1,278 +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.parser.roaster;
-
-import java.util.List;
-
-import org.jboss.forge.roaster.model.Annotation;
-import org.jboss.forge.roaster.model.JavaType;
-import org.jboss.forge.roaster.model.Type;
-import org.jboss.forge.roaster.model.Visibility;
-import org.jboss.forge.roaster.model.impl.TypeImpl;
-import org.jboss.forge.roaster.model.source.AnnotationSource;
-import org.jboss.forge.roaster.model.source.FieldSource;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.JavaDocSource;
-
-public class StatementFieldSource implements FieldSource {
-
- // this implementation should only implement the needed logic to support the parser
-
- private final JavaClassSource origin;
- private final Object internal;
- private final Type type;
-
- public StatementFieldSource(JavaClassSource origin, Object internal, Object typeInternal) {
- this.origin = origin;
- this.internal = internal;
- this.type = new TypeImpl(origin, typeInternal);
- }
-
- @Override
- public FieldSource setType(Class clazz) {
- return null;
- }
-
- @Override
- public FieldSource setType(String type) {
- return null;
- }
-
- @Override
- public FieldSource setLiteralInitializer(String value) {
- return null;
- }
-
- @Override
- public FieldSource setStringInitializer(String value) {
- return null;
- }
-
- @Override
- public FieldSource setTransient(boolean value) {
- return null;
- }
-
- @Override
- public FieldSource setVolatile(boolean value) {
- return null;
- }
-
- @Override
- public FieldSource setType(JavaType entity) {
- return null;
- }
-
- @Override
- public List<AnnotationSource> getAnnotations() {
- return null;
- }
-
- @Override
- public boolean hasAnnotation(String type) {
- return false;
- }
-
- @Override
- public boolean hasAnnotation(Class type) {
- return false;
- }
-
- @Override
- public AnnotationSource getAnnotation(String type) {
- return null;
- }
-
- @Override
- public AnnotationSource addAnnotation() {
- return null;
- }
-
- @Override
- public AnnotationSource addAnnotation(String className) {
- return null;
- }
-
- @Override
- public void removeAllAnnotations() {
- }
-
- @Override
- public Object removeAnnotation(Annotation annotation) {
- return null;
- }
-
- @Override
- public AnnotationSource addAnnotation(Class type) {
- return null;
- }
-
- @Override
- public AnnotationSource getAnnotation(Class type) {
- return null;
- }
-
- @Override
- public Type getType() {
- return type;
- }
-
- @Override
- public String getStringInitializer() {
- return null;
- }
-
- @Override
- public String getLiteralInitializer() {
- return null;
- }
-
- @Override
- public boolean isTransient() {
- return false;
- }
-
- @Override
- public boolean isVolatile() {
- return false;
- }
-
- @Override
- public Object setFinal(boolean finl) {
- return null;
- }
-
- @Override
- public boolean isFinal() {
- return false;
- }
-
- @Override
- public Object getInternal() {
- return internal;
- }
-
- @Override
- public JavaDocSource getJavaDoc() {
- return null;
- }
-
- @Override
- public boolean hasJavaDoc() {
- return false;
- }
-
- @Override
- public Object removeJavaDoc() {
- return null;
- }
-
- @Override
- public Object setName(String name) {
- return null;
- }
-
- @Override
- public String getName() {
- return null;
- }
-
- @Override
- public Object getOrigin() {
- return origin;
- }
-
- @Override
- public Object setStatic(boolean value) {
- return null;
- }
-
- @Override
- public boolean isStatic() {
- return false;
- }
-
- @Override
- public Object setPackagePrivate() {
- return null;
- }
-
- @Override
- public Object setPublic() {
- return null;
- }
-
- @Override
- public Object setPrivate() {
- return null;
- }
-
- @Override
- public Object setProtected() {
- return null;
- }
-
- @Override
- public Object setVisibility(Visibility scope) {
- return null;
- }
-
- @Override
- public boolean isPackagePrivate() {
- return false;
- }
-
- @Override
- public boolean isPublic() {
- return false;
- }
-
- @Override
- public boolean isPrivate() {
- return false;
- }
-
- @Override
- public boolean isProtected() {
- return false;
- }
-
- @Override
- public Visibility getVisibility() {
- return null;
- }
-
- @Override
- public int getColumnNumber() {
- return 0;
- }
-
- @Override
- public int getStartPosition() {
- return 0;
- }
-
- @Override
- public int getEndPosition() {
- return 0;
- }
-
- @Override
- public int getLineNumber() {
- return 0;
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/resources/META-INF/LICENSE.txt
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/resources/META-INF/LICENSE.txt b/tooling/route-parser/src/main/resources/META-INF/LICENSE.txt
deleted file mode 100755
index 6b0b127..0000000
--- a/tooling/route-parser/src/main/resources/META-INF/LICENSE.txt
+++ /dev/null
@@ -1,203 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed 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.
-
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/resources/META-INF/NOTICE.txt
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/resources/META-INF/NOTICE.txt b/tooling/route-parser/src/main/resources/META-INF/NOTICE.txt
deleted file mode 100644
index 2e215bf..0000000
--- a/tooling/route-parser/src/main/resources/META-INF/NOTICE.txt
+++ /dev/null
@@ -1,11 +0,0 @@
- =========================================================================
- == NOTICE file corresponding to the section 4 d of ==
- == the Apache License, Version 2.0, ==
- == in this case for the Apache Camel distribution. ==
- =========================================================================
-
- This product includes software developed by
- The Apache Software Foundation (http://www.apache.org/).
-
- Please read the different LICENSE files present in the licenses directory of
- this distribution.
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyBasePortRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyBasePortRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyBasePortRouteBuilder.java
deleted file mode 100644
index e5fb01c..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyBasePortRouteBuilder.java
+++ /dev/null
@@ -1,27 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-
-public abstract class MyBasePortRouteBuilder extends RouteBuilder {
-
- public int getNextPort() {
- return 8080;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyCdiConcatRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyCdiConcatRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyCdiConcatRouteBuilder.java
deleted file mode 100644
index 374ffb9..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyCdiConcatRouteBuilder.java
+++ /dev/null
@@ -1,49 +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.parser.java;
-
-import javax.inject.Inject;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.cdi.Uri;
-
-public class MyCdiConcatRouteBuilder extends RouteBuilder {
-
- private static final int DELAY = 4999;
- private static final int PORT = 80;
-
- @Inject
- @Uri("timer:foo?period=" + DELAY)
- private Endpoint inputEndpoint;
-
- @Inject
- @Uri("log:a")
- private Endpoint loga;
-
- @EndpointInject(uri = "netty4-http:http:someserver:" + PORT + "/hello")
- private Endpoint mynetty;
-
- @Override
- public void configure() throws Exception {
- from(inputEndpoint)
- .log("I was here")
- .to(loga)
- .to(mynetty);
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java
deleted file mode 100644
index 2bf3e78..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java
+++ /dev/null
@@ -1,46 +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.parser.java;
-
-import javax.inject.Inject;
-
-import org.apache.camel.Endpoint;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.cdi.Uri;
-
-public class MyCdiRouteBuilder extends RouteBuilder {
-
- @Inject
- @Uri("timer:foo?period=4999")
- private Endpoint inputEndpoint;
-
- @Inject
- @Uri("log:a")
- private Endpoint loga;
-
- @Inject
- @Uri("netty4-http:http:someserver:80/hello")
- private Endpoint mynetty;
-
- @Override
- public void configure() throws Exception {
- from(inputEndpoint)
- .log("I was here")
- .to(loga)
- .to(mynetty);
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyConcatFieldRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyConcatFieldRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyConcatFieldRouteBuilder.java
deleted file mode 100644
index 4322689..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyConcatFieldRouteBuilder.java
+++ /dev/null
@@ -1,31 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-
-public class MyConcatFieldRouteBuilder extends RouteBuilder {
-
- private int ftpPort;
- private String ftp = "ftp:localhost:" + ftpPort + "/myapp?password=admin&username=admin";
-
- @Override
- public void configure() throws Exception {
- from(ftp)
- .to("log:b");
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyFieldMethodCallRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyFieldMethodCallRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyFieldMethodCallRouteBuilder.java
deleted file mode 100644
index 2a13f19..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyFieldMethodCallRouteBuilder.java
+++ /dev/null
@@ -1,33 +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.parser.java;
-
-public class MyFieldMethodCallRouteBuilder extends MyBasePortRouteBuilder {
-
- @Override
- public void configure() throws Exception {
- int port2 = getNextPort();
-
- from("netty-http:http://0.0.0.0:{{port}}/foo")
- .to("mock:input1")
- .to("netty-http:http://0.0.0.0:" + port2 + "/bar");
- from("netty-http:http://0.0.0.0:" + port2 + "/bar")
- .to("mock:input2")
- .transform().constant("Bye World");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyFieldRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyFieldRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyFieldRouteBuilder.java
deleted file mode 100644
index b56595b..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyFieldRouteBuilder.java
+++ /dev/null
@@ -1,31 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-
-public class MyFieldRouteBuilder extends RouteBuilder {
-
- @Override
- public void configure() throws Exception {
- String exists = "Override";
-
- from("timer:foo")
- .toD("file:output?fileExist=" + exists)
- .to("log:b");
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyLocalAddRouteBuilderTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyLocalAddRouteBuilderTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyLocalAddRouteBuilderTest.java
deleted file mode 100644
index 4a8de07..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyLocalAddRouteBuilderTest.java
+++ /dev/null
@@ -1,52 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Ignore;
-import org.junit.Test;
-
-@Ignore
-public class MyLocalAddRouteBuilderTest extends CamelTestSupport {
-
- @Override
- public boolean isUseRouteBuilder() {
- return false;
- }
-
- @Test
- public void testFoo() throws Exception {
- log.info("Adding a route locally");
-
- context.addRoutes(new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- from("direct:start")
- .to("mock:foo");
- }
- });
- context.start();
-
- getMockEndpoint("mock:foo").expectedMessageCount(1);
-
- template.sendBody("direct:start", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyMethodCallRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyMethodCallRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyMethodCallRouteBuilder.java
deleted file mode 100644
index f54541f..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyMethodCallRouteBuilder.java
+++ /dev/null
@@ -1,33 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-
-public class MyMethodCallRouteBuilder extends RouteBuilder {
-
- private String whatToDoWhenExists() {
- return "Override";
- }
-
- @Override
- public void configure() throws Exception {
- from("timer:foo")
- .to("file:output?fileExist=" + whatToDoWhenExists())
- .to("log:b");
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNettyTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNettyTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNettyTest.java
deleted file mode 100644
index 4391576..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNettyTest.java
+++ /dev/null
@@ -1,52 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Ignore;
-import org.junit.Test;
-
-@Ignore
-public class MyNettyTest extends CamelTestSupport {
-
- public int getNextPort() {
- return 8080;
- }
-
- @Test
- public void testFoo() throws Exception {
- // noop
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- int port2 = getNextPort();
-
- @Override
- public void configure() throws Exception {
- from("netty-http:http://0.0.0.0:{{port}}/foo")
- .to("mock:input1")
- .to("netty-http:http://0.0.0.0:" + port2 + "/bar");
- from("netty-http:http://0.0.0.0:" + port2 + "/bar")
- .to("mock:input2")
- .transform().constant("Bye World");
- }
- };
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineConstRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineConstRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineConstRouteBuilder.java
deleted file mode 100644
index 4701c2e..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineConstRouteBuilder.java
+++ /dev/null
@@ -1,34 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-
-public class MyNewLineConstRouteBuilder extends RouteBuilder {
-
- private static final String EXISTS = "Append";
- private static final int MOD = 770;
-
- @Override
- public void configure() throws Exception {
- from("timer:foo")
- .toD("file:output?fileExist=" + EXISTS
- + "&chmod=" + (MOD + 6 + 1)
- + "&allowNullBody=true")
- .to("log:b");
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineRouteBuilder.java
deleted file mode 100644
index 8213244..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyNewLineRouteBuilder.java
+++ /dev/null
@@ -1,31 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-
-public class MyNewLineRouteBuilder extends RouteBuilder {
-
- @Override
- public void configure() throws Exception {
- from("timer:foo")
- .toD("file:output?fileExist=Append"
- + "&chmod=777"
- + "&allowNullBody=true")
- .to("log:b");
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteBuilder.java
deleted file mode 100644
index 9c44803..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteBuilder.java
+++ /dev/null
@@ -1,31 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-
-public class MyRouteBuilder extends RouteBuilder {
-
- @Override
- public void configure() throws Exception {
- from("timer:foo")
- .log("I was here")
- .toD("log:a")
- .wireTap("mock:tap")
- .to("log:b");
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteEmptyUriTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteEmptyUriTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteEmptyUriTest.java
deleted file mode 100644
index 12a797d..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteEmptyUriTest.java
+++ /dev/null
@@ -1,42 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Ignore;
-import org.junit.Test;
-
-@Ignore
-public class MyRouteEmptyUriTest extends CamelTestSupport {
-
- @Test
- public void testFoo() throws Exception {
- // noop
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- from("direct:foo")
- .to(""); // is empty on purpose
- }
- };
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteTest.java
deleted file mode 100644
index a6c4923..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MyRouteTest.java
+++ /dev/null
@@ -1,40 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
-
-public class MyRouteTest extends CamelTestSupport {
-
- @Test
- public void testFoo() throws Exception {
- // noop
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() throws Exception {
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- from("direct:foo")
- .to("mock:foo");
- }
- };
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java
deleted file mode 100644
index 85bbe14..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java
+++ /dev/null
@@ -1,34 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-
-public class MySimpleRouteBuilder extends RouteBuilder {
-
- @Override
- public void configure() throws Exception {
- from("timer:foo")
- .filter(simple("${body} > 100"))
- .toD("log:a")
- .end()
- .filter().simple("${body} > 200")
- .to("log:b")
- .end()
- .to("log:c");
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java
deleted file mode 100644
index 2825070..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java
+++ /dev/null
@@ -1,34 +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.parser.java;
-
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.builder.RouteBuilder;
-
-public class MySimpleToDRoute extends RouteBuilder {
-
- @Override
- public void configure() throws Exception {
-
- String uri = "log:c";
-
- from("direct:start")
- .toD("log:a", true)
- .to(ExchangePattern.InOnly, "log:b")
- .to(uri);
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java
deleted file mode 100644
index 3e43655..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java
+++ /dev/null
@@ -1,28 +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.parser.java;
-
-import org.apache.camel.builder.RouteBuilder;
-
-public class MySimpleToFRoute extends RouteBuilder {
-
- @Override
- public void configure() throws Exception {
- from("direct:start")
- .toF("log:a?level=%s", "info");
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiConcatRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiConcatRouteBuilderConfigureTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiConcatRouteBuilderConfigureTest.java
deleted file mode 100644
index 7d9abe4..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiConcatRouteBuilderConfigureTest.java
+++ /dev/null
@@ -1,55 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterCdiConcatRouteBuilderConfigureTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterCdiConcatRouteBuilderConfigureTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyCdiConcatRouteBuilder.java"));
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("timer:foo?period=4999", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("log:a", list.get(0).getElement());
- Assert.assertEquals("netty4-http:http:someserver:80/hello", list.get(1).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiRouteBuilderConfigureTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiRouteBuilderConfigureTest.java
deleted file mode 100644
index 6abd424..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterCdiRouteBuilderConfigureTest.java
+++ /dev/null
@@ -1,55 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterCdiRouteBuilderConfigureTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterCdiRouteBuilderConfigureTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java"));
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("timer:foo?period=4999", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("log:a", list.get(0).getElement());
- Assert.assertEquals("netty4-http:http:someserver:80/hello", list.get(1).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterConcatFieldRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterConcatFieldRouteBuilderConfigureTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterConcatFieldRouteBuilderConfigureTest.java
deleted file mode 100644
index a57ce23..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterConcatFieldRouteBuilderConfigureTest.java
+++ /dev/null
@@ -1,54 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterConcatFieldRouteBuilderConfigureTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterConcatFieldRouteBuilderConfigureTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyConcatFieldRouteBuilder.java"));
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("ftp:localhost:{{ftpPort}}/myapp?password=admin&username=admin", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("log:b", list.get(0).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterEndpointInjectTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterEndpointInjectTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterEndpointInjectTest.java
deleted file mode 100644
index 8ffb23b..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterEndpointInjectTest.java
+++ /dev/null
@@ -1,73 +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.parser.java;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.RouteBuilderParser;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.apache.camel.parser.model.CamelEndpointDetails;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterEndpointInjectTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterEndpointInjectTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java"));
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
-
- List<CamelEndpointDetails> details = new ArrayList<>();
- RouteBuilderParser.parseRouteBuilderEndpoints(clazz, ".", "src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java", details);
- LOG.info("{}", details);
-
- Assert.assertEquals("timer:foo?period=4999", details.get(0).getEndpointUri());
- Assert.assertEquals("28", details.get(0).getLineNumber());
-
- Assert.assertEquals("log:a", details.get(1).getEndpointUri());
- Assert.assertEquals("32", details.get(1).getLineNumber());
-
- Assert.assertEquals("netty4-http:http:someserver:80/hello", details.get(2).getEndpointUri());
- Assert.assertEquals("36", details.get(2).getLineNumber());
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("timer:foo?period=4999", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals(2, list.size());
-
- Assert.assertEquals(5, details.size());
- Assert.assertEquals("log:a", details.get(3).getEndpointUri());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterFieldRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterFieldRouteBuilderConfigureTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterFieldRouteBuilderConfigureTest.java
deleted file mode 100644
index 5b16bd3..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterFieldRouteBuilderConfigureTest.java
+++ /dev/null
@@ -1,55 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterFieldRouteBuilderConfigureTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterFieldRouteBuilderConfigureTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyFieldRouteBuilder.java"));
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("timer:foo", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("file:output?fileExist=Override", list.get(0).getElement());
- Assert.assertEquals("log:b", list.get(1).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMethodCallRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMethodCallRouteBuilderConfigureTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMethodCallRouteBuilderConfigureTest.java
deleted file mode 100644
index 00a8623..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMethodCallRouteBuilderConfigureTest.java
+++ /dev/null
@@ -1,55 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterMethodCallRouteBuilderConfigureTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterMethodCallRouteBuilderConfigureTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyMethodCallRouteBuilder.java"));
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("timer:foo", list.get(0).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("file:output?fileExist={{whatToDoWhenExists}}", list.get(0).getElement());
- Assert.assertEquals("log:b", list.get(1).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyFieldMethodCallRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyFieldMethodCallRouteBuilderConfigureTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyFieldMethodCallRouteBuilderConfigureTest.java
deleted file mode 100644
index 44b4539..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyFieldMethodCallRouteBuilderConfigureTest.java
+++ /dev/null
@@ -1,57 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterMyFieldMethodCallRouteBuilderConfigureTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterMyFieldMethodCallRouteBuilderConfigureTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyFieldMethodCallRouteBuilder.java"));
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
- Assert.assertEquals("netty-http:http://0.0.0.0:{{port}}/foo", list.get(0).getElement());
- Assert.assertEquals("netty-http:http://0.0.0.0:{{getNextPort}}/bar", list.get(1).getElement());
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- Assert.assertEquals("mock:input1", list.get(0).getElement());
- Assert.assertEquals("netty-http:http://0.0.0.0:{{getNextPort}}/bar", list.get(1).getElement());
- Assert.assertEquals("mock:input2", list.get(2).getElement());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyLocalAddRouteBuilderTest.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyLocalAddRouteBuilderTest.java b/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyLocalAddRouteBuilderTest.java
deleted file mode 100644
index 9b1495e..0000000
--- a/tooling/route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyLocalAddRouteBuilderTest.java
+++ /dev/null
@@ -1,57 +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.parser.java;
-
-import java.io.File;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.jboss.forge.roaster.Roaster;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class RoasterMyLocalAddRouteBuilderTest {
-
- private static final Logger LOG = LoggerFactory.getLogger(RoasterMyLocalAddRouteBuilderTest.class);
-
- @Test
- public void parse() throws Exception {
- JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyLocalAddRouteBuilderTest.java"));
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
- Assert.assertNull(method);
-
- List<MethodSource<JavaClassSource>> methods = CamelJavaParserHelper.findInlinedConfigureMethods(clazz);
- Assert.assertEquals(1, methods.size());
- method = methods.get(0);
-
- List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Consumer: " + result.getElement());
- }
-
- list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
- for (ParserResult result : list) {
- LOG.info("Producer: " + result.getElement());
- }
- }
-
-}
[4/6] camel git commit: CAMEL-10559: route parser for java and xml to
parse source code. Donated from fabric8 project.
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterConcatFieldRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterConcatFieldRouteBuilderConfigureTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterConcatFieldRouteBuilderConfigureTest.java
new file mode 100644
index 0000000..a57ce23
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterConcatFieldRouteBuilderConfigureTest.java
@@ -0,0 +1,54 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterConcatFieldRouteBuilderConfigureTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterConcatFieldRouteBuilderConfigureTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyConcatFieldRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("ftp:localhost:{{ftpPort}}/myapp?password=admin&username=admin", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("log:b", list.get(0).getElement());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterEndpointInjectTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterEndpointInjectTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterEndpointInjectTest.java
new file mode 100644
index 0000000..8ffb23b
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterEndpointInjectTest.java
@@ -0,0 +1,73 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.RouteBuilderParser;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.apache.camel.parser.model.CamelEndpointDetails;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterEndpointInjectTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterEndpointInjectTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+
+ List<CamelEndpointDetails> details = new ArrayList<>();
+ RouteBuilderParser.parseRouteBuilderEndpoints(clazz, ".", "src/test/java/org/apache/camel/parser/java/MyCdiRouteBuilder.java", details);
+ LOG.info("{}", details);
+
+ Assert.assertEquals("timer:foo?period=4999", details.get(0).getEndpointUri());
+ Assert.assertEquals("28", details.get(0).getLineNumber());
+
+ Assert.assertEquals("log:a", details.get(1).getEndpointUri());
+ Assert.assertEquals("32", details.get(1).getLineNumber());
+
+ Assert.assertEquals("netty4-http:http:someserver:80/hello", details.get(2).getEndpointUri());
+ Assert.assertEquals("36", details.get(2).getLineNumber());
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("timer:foo?period=4999", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals(2, list.size());
+
+ Assert.assertEquals(5, details.size());
+ Assert.assertEquals("log:a", details.get(3).getEndpointUri());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterFieldRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterFieldRouteBuilderConfigureTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterFieldRouteBuilderConfigureTest.java
new file mode 100644
index 0000000..5b16bd3
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterFieldRouteBuilderConfigureTest.java
@@ -0,0 +1,55 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterFieldRouteBuilderConfigureTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterFieldRouteBuilderConfigureTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyFieldRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("timer:foo", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("file:output?fileExist=Override", list.get(0).getElement());
+ Assert.assertEquals("log:b", list.get(1).getElement());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMethodCallRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMethodCallRouteBuilderConfigureTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMethodCallRouteBuilderConfigureTest.java
new file mode 100644
index 0000000..00a8623
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMethodCallRouteBuilderConfigureTest.java
@@ -0,0 +1,55 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterMethodCallRouteBuilderConfigureTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterMethodCallRouteBuilderConfigureTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyMethodCallRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("timer:foo", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("file:output?fileExist={{whatToDoWhenExists}}", list.get(0).getElement());
+ Assert.assertEquals("log:b", list.get(1).getElement());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyFieldMethodCallRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyFieldMethodCallRouteBuilderConfigureTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyFieldMethodCallRouteBuilderConfigureTest.java
new file mode 100644
index 0000000..44b4539
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyFieldMethodCallRouteBuilderConfigureTest.java
@@ -0,0 +1,57 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterMyFieldMethodCallRouteBuilderConfigureTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterMyFieldMethodCallRouteBuilderConfigureTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyFieldMethodCallRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("netty-http:http://0.0.0.0:{{port}}/foo", list.get(0).getElement());
+ Assert.assertEquals("netty-http:http://0.0.0.0:{{getNextPort}}/bar", list.get(1).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("mock:input1", list.get(0).getElement());
+ Assert.assertEquals("netty-http:http://0.0.0.0:{{getNextPort}}/bar", list.get(1).getElement());
+ Assert.assertEquals("mock:input2", list.get(2).getElement());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyLocalAddRouteBuilderTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyLocalAddRouteBuilderTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyLocalAddRouteBuilderTest.java
new file mode 100644
index 0000000..9b1495e
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyLocalAddRouteBuilderTest.java
@@ -0,0 +1,57 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterMyLocalAddRouteBuilderTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterMyLocalAddRouteBuilderTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyLocalAddRouteBuilderTest.java"));
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+ Assert.assertNull(method);
+
+ List<MethodSource<JavaClassSource>> methods = CamelJavaParserHelper.findInlinedConfigureMethods(clazz);
+ Assert.assertEquals(1, methods.size());
+ method = methods.get(0);
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyNettyTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyNettyTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyNettyTest.java
new file mode 100644
index 0000000..603d96f
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterMyNettyTest.java
@@ -0,0 +1,57 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterMyNettyTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterMyNettyTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyNettyTest.java"));
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("netty-http:http://0.0.0.0:{{port}}/foo", list.get(0).getElement());
+ Assert.assertEquals("netty-http:http://0.0.0.0:{{getNextPort}}/bar", list.get(1).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("mock:input1", list.get(0).getElement());
+ Assert.assertEquals("netty-http:http://0.0.0.0:{{getNextPort}}/bar", list.get(1).getElement());
+ Assert.assertEquals("mock:input2", list.get(2).getElement());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineConstRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineConstRouteBuilderConfigureTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineConstRouteBuilderConfigureTest.java
new file mode 100644
index 0000000..3b7cb69
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineConstRouteBuilderConfigureTest.java
@@ -0,0 +1,55 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterNewLineConstRouteBuilderConfigureTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterNewLineConstRouteBuilderConfigureTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyNewLineConstRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, false);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("timer:foo", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, false);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("file:output?fileExist=Append&chmod=777&allowNullBody=true", list.get(0).getElement());
+ Assert.assertEquals("log:b", list.get(1).getElement());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineRouteBuilderConfigureTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineRouteBuilderConfigureTest.java
new file mode 100644
index 0000000..eeb320f
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterNewLineRouteBuilderConfigureTest.java
@@ -0,0 +1,55 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterNewLineRouteBuilderConfigureTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterNewLineRouteBuilderConfigureTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyNewLineRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, false);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("timer:foo", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, false);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("file:output?fileExist=Append&chmod=777&allowNullBody=true", list.get(0).getElement());
+ Assert.assertEquals("log:b", list.get(1).getElement());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderCamelTestSupportTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderCamelTestSupportTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderCamelTestSupportTest.java
new file mode 100644
index 0000000..9760f66
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderCamelTestSupportTest.java
@@ -0,0 +1,54 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterRouteBuilderCamelTestSupportTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterRouteBuilderCamelTestSupportTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyRouteTest.java"));
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, false);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("direct:foo", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, false);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("mock:foo", list.get(0).getElement());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderConfigureTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderConfigureTest.java
new file mode 100644
index 0000000..af9cb2e
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderConfigureTest.java
@@ -0,0 +1,56 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterRouteBuilderConfigureTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterRouteBuilderConfigureTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, false);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("timer:foo", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, false);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("log:a", list.get(0).getElement());
+ Assert.assertEquals("mock:tap", list.get(1).getElement());
+ Assert.assertEquals("log:b", list.get(2).getElement());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderEmptyUriTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderEmptyUriTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderEmptyUriTest.java
new file mode 100644
index 0000000..3d97c65
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterRouteBuilderEmptyUriTest.java
@@ -0,0 +1,55 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterRouteBuilderEmptyUriTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterRouteBuilderEmptyUriTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MyRouteEmptyUriTest.java"));
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, false);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("direct:foo", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, false);
+ Assert.assertEquals(1, list.size());
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ Assert.assertFalse("Should be invalid", result.isParsed());
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleProcessorTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleProcessorTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleProcessorTest.java
new file mode 100644
index 0000000..c83d89a
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleProcessorTest.java
@@ -0,0 +1,64 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.RouteBuilderParser;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.apache.camel.parser.model.CamelEndpointDetails;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterSimpleProcessorTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterSimpleProcessorTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java"));
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+
+ List<CamelEndpointDetails> details = new ArrayList<CamelEndpointDetails>();
+ RouteBuilderParser.parseRouteBuilderEndpoints(clazz, ".", "src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java", details);
+ LOG.info("{}", details);
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("direct:start", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals(0, list.size());
+
+ Assert.assertEquals(1, details.size());
+ Assert.assertEquals("direct:start", details.get(0).getEndpointUri());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleRouteBuilderConfigureTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleRouteBuilderConfigureTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleRouteBuilderConfigureTest.java
new file mode 100644
index 0000000..14d63af
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleRouteBuilderConfigureTest.java
@@ -0,0 +1,71 @@
+/**
+ * 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.parser.java;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterSimpleRouteBuilderConfigureTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterSimpleRouteBuilderConfigureTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java"));
+ MethodSource<JavaClassSource> method = clazz.getMethod("configure");
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelSimpleExpressions(method);
+ for (ParserResult simple : list) {
+ LOG.info("Simple: " + simple.getElement());
+ LOG.info(" Line: " + findLineNumber(simple.getPosition()));
+ }
+ Assert.assertEquals("${body} > 100", list.get(0).getElement());
+ Assert.assertEquals(27, findLineNumber(list.get(0).getPosition()));
+ Assert.assertEquals("${body} > 200", list.get(1).getElement());
+ Assert.assertEquals(30, findLineNumber(list.get(1).getPosition()));
+ }
+
+ public static int findLineNumber(int pos) throws Exception {
+ int lines = 0;
+ int current = 0;
+ File file = new File("src/test/java/org/apache/camel/parser/java/MySimpleRouteBuilder.java");
+ try (BufferedReader br = new BufferedReader(new FileReader(file))) {
+ String line;
+ while ((line = br.readLine()) != null) {
+ lines++;
+ current += line.length();
+ if (current > pos) {
+ return lines;
+ }
+ }
+ }
+ return -1;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToDTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToDTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToDTest.java
new file mode 100644
index 0000000..aeea6cf
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToDTest.java
@@ -0,0 +1,73 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.RouteBuilderParser;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.apache.camel.parser.model.CamelEndpointDetails;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterSimpleToDTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterSimpleToDTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java"));
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+
+ List<CamelEndpointDetails> details = new ArrayList<>();
+ RouteBuilderParser.parseRouteBuilderEndpoints(clazz, ".", "src/test/java/org/apache/camel/parser/java/MySimpleToDRoute.java", details);
+ LOG.info("{}", details);
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("direct:start", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("toD", list.get(0).getNode());
+ Assert.assertEquals("log:a", list.get(0).getElement());
+ Assert.assertEquals("to", list.get(1).getNode());
+ Assert.assertEquals("log:b", list.get(1).getElement());
+ Assert.assertEquals("to", list.get(2).getNode());
+ Assert.assertEquals("log:c", list.get(2).getElement());
+ Assert.assertEquals(3, list.size());
+
+ Assert.assertEquals(4, details.size());
+ Assert.assertEquals("direct:start", details.get(0).getEndpointUri());
+ Assert.assertEquals("log:a", details.get(1).getEndpointUri());
+ Assert.assertEquals("log:b", details.get(2).getEndpointUri());
+ Assert.assertEquals("log:c", details.get(3).getEndpointUri());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToFTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToFTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToFTest.java
new file mode 100644
index 0000000..82d9f75
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSimpleToFTest.java
@@ -0,0 +1,67 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.RouteBuilderParser;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.apache.camel.parser.model.CamelEndpointDetails;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterSimpleToFTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterSimpleToFTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java"));
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+
+ List<CamelEndpointDetails> details = new ArrayList<>();
+ RouteBuilderParser.parseRouteBuilderEndpoints(clazz, ".", "src/test/java/org/apache/camel/parser/java/MySimpleToFRoute.java", details);
+ LOG.info("{}", details);
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("direct:start", list.get(0).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("toF", list.get(0).getNode());
+ Assert.assertEquals("log:a?level={{%s}}", list.get(0).getElement());
+ Assert.assertEquals(1, list.size());
+
+ Assert.assertEquals(2, details.size());
+ Assert.assertEquals("direct:start", details.get(0).getEndpointUri());
+ Assert.assertEquals("log:a?level={{%s}}", details.get(1).getEndpointUri());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSplitTokenizeTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSplitTokenizeTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSplitTokenizeTest.java
new file mode 100644
index 0000000..ef8bde8
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/RoasterSplitTokenizeTest.java
@@ -0,0 +1,75 @@
+/**
+ * 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.parser.java;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.parser.ParserResult;
+import org.apache.camel.parser.RouteBuilderParser;
+import org.apache.camel.parser.helper.CamelJavaParserHelper;
+import org.apache.camel.parser.model.CamelEndpointDetails;
+import org.jboss.forge.roaster.Roaster;
+import org.jboss.forge.roaster.model.source.JavaClassSource;
+import org.jboss.forge.roaster.model.source.MethodSource;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RoasterSplitTokenizeTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RoasterSplitTokenizeTest.class);
+
+ @Test
+ public void parse() throws Exception {
+ JavaClassSource clazz = (JavaClassSource) Roaster.parse(new File("src/test/java/org/apache/camel/parser/java/SplitTokenizeTest.java"));
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+
+ List<CamelEndpointDetails> details = new ArrayList<>();
+ RouteBuilderParser.parseRouteBuilderEndpoints(clazz, "src/test/java", "org/apache/camel/parser/SplitTokenizeTest.java", details);
+ LOG.info("{}", details);
+
+ List<ParserResult> list = CamelJavaParserHelper.parseCamelConsumerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Consumer: " + result.getElement());
+ }
+ Assert.assertEquals("direct:a", list.get(0).getElement());
+ Assert.assertEquals("direct:b", list.get(1).getElement());
+ Assert.assertEquals("direct:c", list.get(2).getElement());
+ Assert.assertEquals("direct:d", list.get(3).getElement());
+ Assert.assertEquals("direct:e", list.get(4).getElement());
+ Assert.assertEquals("direct:f", list.get(5).getElement());
+
+ list = CamelJavaParserHelper.parseCamelProducerUris(method, true, true);
+ for (ParserResult result : list) {
+ LOG.info("Producer: " + result.getElement());
+ }
+ Assert.assertEquals("mock:split", list.get(0).getElement());
+ Assert.assertEquals("mock:split", list.get(1).getElement());
+ Assert.assertEquals("mock:split", list.get(2).getElement());
+ Assert.assertEquals("mock:split", list.get(3).getElement());
+ Assert.assertEquals("mock:split", list.get(4).getElement());
+ Assert.assertEquals("mock:split", list.get(5).getElement());
+
+ Assert.assertEquals(12, details.size());
+ Assert.assertEquals("direct:a", details.get(0).getEndpointUri());
+ Assert.assertEquals("mock:split", details.get(11).getEndpointUri());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java
new file mode 100644
index 0000000..de37bf8
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/SimpleProcessorTest.java
@@ -0,0 +1,45 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit4.CamelTestSupport;
+
+public class SimpleProcessorTest extends CamelTestSupport {
+
+ public void testProcess() throws Exception {
+ String out = template.requestBody("direct:start", "Hello World", String.class);
+ assertEquals("Bye World", out);
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start").process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ exchange.getOut().setBody("Bye World");
+ }
+ });
+ }
+ };
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/SplitTokenizeTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/SplitTokenizeTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/SplitTokenizeTest.java
new file mode 100644
index 0000000..4243dff
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/java/SplitTokenizeTest.java
@@ -0,0 +1,126 @@
+/**
+ * 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.parser.java;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit4.CamelTestSupport;
+
+public class SplitTokenizeTest extends CamelTestSupport {
+
+ public void testSplitTokenizerA() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:split");
+ mock.expectedBodiesReceived("Claus", "James", "Willem");
+
+ template.sendBody("direct:a", "Claus,James,Willem");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ public void testSplitTokenizerB() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:split");
+ mock.expectedBodiesReceived("Claus", "James", "Willem");
+
+ template.sendBodyAndHeader("direct:b", "Hello World", "myHeader", "Claus,James,Willem");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ public void testSplitTokenizerC() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:split");
+ mock.expectedBodiesReceived("Claus", "James", "Willem");
+
+ template.sendBody("direct:c", "Claus James Willem");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ public void testSplitTokenizerD() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:split");
+ mock.expectedBodiesReceived("[Claus]", "[James]", "[Willem]");
+
+ template.sendBody("direct:d", "[Claus][James][Willem]");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ public void testSplitTokenizerE() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:split");
+ mock.expectedBodiesReceived("<person>Claus</person>", "<person>James</person>", "<person>Willem</person>");
+
+ String xml = "<persons><person>Claus</person><person>James</person><person>Willem</person></persons>";
+ template.sendBody("direct:e", xml);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ public void testSplitTokenizerEWithSlash() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:split");
+ String xml = "<persons><person attr='/' /></persons>";
+ mock.expectedBodiesReceived("<person attr='/' />");
+ template.sendBody("direct:e", xml);
+ mock.assertIsSatisfied();
+ assertMockEndpointsSatisfied();
+ }
+
+ public void testSplitTokenizerF() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:split");
+ mock.expectedBodiesReceived("<person name=\"Claus\"/>", "<person>James</person>", "<person>Willem</person>");
+
+ String xml = "<persons><person/><person name=\"Claus\"/><person>James</person><person>Willem</person></persons>";
+ template.sendBody("direct:f", xml);
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+
+ from("direct:a")
+ .split().tokenize(",")
+ .to("mock:split");
+
+ from("direct:b")
+ .split().tokenize(",", "myHeader")
+ .to("mock:split");
+
+ from("direct:c")
+ .split().tokenize("(\\W+)\\s*", null, true)
+ .to("mock:split");
+
+ from("direct:d")
+ .split().tokenizePair("[", "]", true)
+ .to("mock:split");
+
+ from("direct:e")
+ .split().tokenizeXML("person")
+ .to("mock:split");
+
+ from("direct:f")
+ .split().xpath("//person")
+ // To test the body is not empty
+ // it will call the ObjectHelper.evaluateValuePredicate()
+ .filter().simple("${body}")
+ .to("mock:split");
+
+ }
+ };
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/FindElementInRoutesTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/FindElementInRoutesTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/FindElementInRoutesTest.java
new file mode 100644
index 0000000..f15dd0e
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/FindElementInRoutesTest.java
@@ -0,0 +1,45 @@
+/**
+ * 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.parser.xml;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import org.w3c.dom.Element;
+
+import org.apache.camel.parser.helper.CamelXmlHelper;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.Assert.assertNotNull;
+
+public class FindElementInRoutesTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(FindElementInRoutesTest.class);
+
+ @Test
+ public void testXml() throws Exception {
+ InputStream is = new FileInputStream("src/test/resources/org/apache/camel/parser/xml/myroutes.xml");
+ String key = "_camelContext1/cbr-route/_from1";
+ Element element = CamelXmlHelper.getSelectedCamelElementNode(key, is);
+ assertNotNull("Could not find Element for key " + key, element);
+
+ LOG.info("Found element " + element.getTagName());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlOnExceptionRouteTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlOnExceptionRouteTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlOnExceptionRouteTest.java
new file mode 100644
index 0000000..6f8aeb6
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlOnExceptionRouteTest.java
@@ -0,0 +1,55 @@
+/**
+ * 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.parser.xml;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.parser.XmlRouteParser;
+import org.apache.camel.parser.model.CamelEndpointDetails;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class XmlOnExceptionRouteTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(XmlOnExceptionRouteTest.class);
+
+ @Test
+ public void testXml() throws Exception {
+ List<CamelEndpointDetails> endpoints = new ArrayList<>();
+
+ InputStream is = new FileInputStream("src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml");
+ String fqn = "src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml";
+ String baseDir = "src/test/resources";
+ XmlRouteParser.parseXmlRouteEndpoints(is, baseDir, fqn, endpoints);
+
+ for (CamelEndpointDetails detail : endpoints) {
+ LOG.info(detail.getEndpointUri());
+ }
+
+ Assert.assertEquals("log:all", endpoints.get(0).getEndpointUri());
+ Assert.assertEquals("mock:dead", endpoints.get(1).getEndpointUri());
+ Assert.assertEquals("log:done", endpoints.get(2).getEndpointUri());
+ Assert.assertEquals("stream:in?promptMessage=Enter something:", endpoints.get(3).getEndpointUri());
+ Assert.assertEquals("stream:out", endpoints.get(4).getEndpointUri());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlRouteTest.java
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlRouteTest.java b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlRouteTest.java
new file mode 100644
index 0000000..05be852
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/java/org/apache/camel/parser/xml/XmlRouteTest.java
@@ -0,0 +1,51 @@
+/**
+ * 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.parser.xml;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.parser.XmlRouteParser;
+import org.apache.camel.parser.model.CamelEndpointDetails;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class XmlRouteTest {
+
+ private static final Logger LOG = LoggerFactory.getLogger(XmlRouteTest.class);
+
+ @Test
+ public void testXml() throws Exception {
+ List<CamelEndpointDetails> endpoints = new ArrayList<>();
+
+ InputStream is = new FileInputStream("src/test/resources/org/apache/camel/parser/xml/mycamel.xml");
+ String fqn = "src/test/resources/org/apache/camel/camel/parser/xml/mycamel.xml";
+ String baseDir = "src/test/resources";
+ XmlRouteParser.parseXmlRouteEndpoints(is, baseDir, fqn, endpoints);
+
+ for (CamelEndpointDetails detail : endpoints) {
+ LOG.info(detail.getEndpointUri());
+ }
+ Assert.assertEquals("stream:in?promptMessage=Enter something:", endpoints.get(0).getEndpointUri());
+ Assert.assertEquals("stream:out", endpoints.get(1).getEndpointUri());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/resources/log4j2.properties
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/resources/log4j2.properties b/tooling/camel-route-parser/src/test/resources/log4j2.properties
new file mode 100644
index 0000000..2f66eb5
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/resources/log4j2.properties
@@ -0,0 +1,30 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+appender.file.type = File
+appender.file.name = file
+appender.file.fileName = target/route-parser-test.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+appender.out.type = Console
+appender.out.name = out
+appender.out.layout.type = PatternLayout
+appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+logger.parser.name = org.apache.camel.parser
+logger.parser.level = DEBUG
+rootLogger.level = INFO
+rootLogger.appenderRef.file.ref = file
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml b/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml
new file mode 100644
index 0000000..14a370f
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel-onexception.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+
+ <endpoint id="logger" uri="log:all"/>
+
+ <onException>
+ <exception>java.lang.Exception</exception>
+ <handled>
+ <constant>true</constant>
+ </handled>
+ <to uri="mock:dead"/>
+ </onException>
+
+ <onCompletion>
+ <to uri="log:done"/>
+ </onCompletion>
+
+ <route>
+ <from uri="stream:in?promptMessage=Enter something: "/>
+ <transform>
+ <simple>Hello ${body.toUpperCase()}</simple>
+ </transform>
+ <to uri="stream:out"/>
+ </route>
+ </camelContext>
+
+</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel.xml
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel.xml b/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel.xml
new file mode 100644
index 0000000..f243369
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/mycamel.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
+
+ <!-- START SNIPPET: e1 -->
+ <!-- camelContext is the Camel runtime, where we can host Camel routes -->
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <route>
+ <!-- read input from the console using the stream component -->
+ <from
+ uri="stream:in?promptMessage=Enter something: "/>
+ <!-- transform the input to upper case using the simple language -->
+ <!-- you can also use other languages such as groovy, ognl, mvel, javascript etc. -->
+ <transform>
+ <simple>Hello ${body.toUpperCase()}</simple>
+ </transform>
+ <!-- and then print to the console -->
+ <to uri="stream:out"/>
+ </route>
+ </camelContext>
+ <!-- END SNIPPET: e1 -->
+
+</beans>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/myroutes.xml
----------------------------------------------------------------------
diff --git a/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/myroutes.xml b/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/myroutes.xml
new file mode 100644
index 0000000..c132e34
--- /dev/null
+++ b/tooling/camel-route-parser/src/test/resources/org/apache/camel/parser/xml/myroutes.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<routes xmlns="http://camel.apache.org/schema/spring">
+ <route id="cbr-route">
+ <from uri="timer:foo?period=5000"/>
+ <!-- generate random number message, using a 3 digit number -->
+ <transform>
+ <method bean="myTransformer"/>
+ </transform>
+ <choice>
+ <when>
+ <simple>${body} > 500</simple>
+ <log message="High priority message : ${body}"/>
+ </when>
+ <otherwise>
+ <log message="Low priority message : ${body}"/>
+ </otherwise>
+ </choice>
+ </route>
+</routes>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/pom.xml b/tooling/pom.xml
index 10e460d..4a58b4f 100644
--- a/tooling/pom.xml
+++ b/tooling/pom.xml
@@ -39,7 +39,7 @@
<module>parent</module>
<module>spi-annotations</module>
<module>apt</module>
- <module>route-parser</module>
+ <module>camel-route-parser</module>
<module>maven</module>
<module>archetypes</module>
<module>camel-manual</module>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/route-parser/pom.xml b/tooling/route-parser/pom.xml
deleted file mode 100644
index f81ad38..0000000
--- a/tooling/route-parser/pom.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.camel</groupId>
- <artifactId>tooling</artifactId>
- <version>2.19.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>route-parser</artifactId>
- <name>Camel :: Tooling :: Route Parser</name>
- <description>Java and XML source code parser for Camel routes</description>
-
- <dependencies>
-
- <!-- the roaster-jdt is set as provided as different runtimes may have it out of the box -->
- <dependency>
- <groupId>org.jboss.forge.roaster</groupId>
- <artifactId>roaster-jdt</artifactId>
- <version>${roaster-version}</version>
- <scope>provided</scope>
- </dependency>
-
- <!-- only test scopes for camel as we have no runtime dependency on camel -->
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-core</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-spring</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-cdi</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test-cdi</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-api</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-core</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-slf4j-impl</artifactId>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
-
-</project>
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/java/org/apache/camel/parser/ParserResult.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/java/org/apache/camel/parser/ParserResult.java b/tooling/route-parser/src/main/java/org/apache/camel/parser/ParserResult.java
deleted file mode 100644
index 4ef2fc4..0000000
--- a/tooling/route-parser/src/main/java/org/apache/camel/parser/ParserResult.java
+++ /dev/null
@@ -1,72 +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.parser;
-
-/**
- * Result of parsing Camel RouteBuilder or XML routes from the source code.
- */
-public class ParserResult {
-
- private final String node;
- private boolean parsed;
- private int position;
- private String element;
-
- public ParserResult(String node, int position, String element) {
- this(node, position, element, true);
- }
-
- public ParserResult(String node, int position, String element, boolean parsed) {
- this.node = node;
- this.position = position;
- this.element = element;
- this.parsed = parsed;
- }
-
- /**
- * Character based position in the source code (not line based).
- */
- public int getPosition() {
- return position;
- }
-
- /**
- * The element such as a Camel endpoint uri
- */
- public String getElement() {
- return element;
- }
-
- /**
- * Whether the element was successfully parsed. If the parser cannot parse
- * the element for whatever reason this will return <tt>false</tt>.
- */
- public boolean isParsed() {
- return parsed;
- }
-
- /**
- * The node which is typically a Camel EIP name such as <tt>to</tt>, <tt>wireTap</tt> etc.
- */
- public String getNode() {
- return node;
- }
-
- public String toString() {
- return element;
- }
-}
[3/6] camel git commit: CAMEL-10559: route parser for java and xml to
parse source code. Donated from fabric8 project.
Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java b/tooling/route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
deleted file mode 100644
index 36fc443..0000000
--- a/tooling/route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
+++ /dev/null
@@ -1,310 +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.parser;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.apache.camel.parser.model.CamelEndpointDetails;
-import org.apache.camel.parser.model.CamelSimpleExpressionDetails;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ASTNode;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.Expression;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.MemberValuePair;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.NormalAnnotation;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.SingleMemberAnnotation;
-import org.jboss.forge.roaster.model.Annotation;
-import org.jboss.forge.roaster.model.source.FieldSource;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.jboss.forge.roaster.model.util.Strings;
-
-/**
- * A Camel RouteBuilder parser that parses Camel Java routes source code.
- * <p/>
- * This implementation is higher level details, and uses the lower level parser {@link CamelJavaParserHelper}.
- */
-public final class RouteBuilderParser {
-
- private RouteBuilderParser() {
- }
-
- /**
- * Parses the java source class to discover Camel endpoints.
- *
- * @param clazz the java source class
- * @param baseDir the base of the source code
- * @param fullyQualifiedFileName the fully qualified source code file name
- * @param endpoints list to add discovered and parsed endpoints
- */
- public static void parseRouteBuilderEndpoints(JavaClassSource clazz, String baseDir, String fullyQualifiedFileName,
- List<CamelEndpointDetails> endpoints) {
- parseRouteBuilderEndpoints(clazz, baseDir, fullyQualifiedFileName, endpoints, null, false);
- }
-
- /**
- * Parses the java source class to discover Camel endpoints.
- *
- * @param clazz the java source class
- * @param baseDir the base of the source code
- * @param fullyQualifiedFileName the fully qualified source code file name
- * @param endpoints list to add discovered and parsed endpoints
- * @param unparsable list of unparsable nodes
- * @param includeInlinedRouteBuilders whether to include inlined route builders in the parsing
- */
- public static void parseRouteBuilderEndpoints(JavaClassSource clazz, String baseDir, String fullyQualifiedFileName,
- List<CamelEndpointDetails> endpoints, List<String> unparsable, boolean includeInlinedRouteBuilders) {
-
- // look for fields which are not used in the route
- for (FieldSource<JavaClassSource> field : clazz.getFields()) {
-
- // is the field annotated with a Camel endpoint
- String uri = null;
- Expression exp = null;
- for (Annotation ann : field.getAnnotations()) {
- boolean valid = "org.apache.camel.EndpointInject".equals(ann.getQualifiedName()) || "org.apache.camel.cdi.Uri".equals(ann.getQualifiedName());
- if (valid) {
- exp = (Expression) ann.getInternal();
- if (exp instanceof SingleMemberAnnotation) {
- exp = ((SingleMemberAnnotation) exp).getValue();
- } else if (exp instanceof NormalAnnotation) {
- List values = ((NormalAnnotation) exp).values();
- for (Object value : values) {
- MemberValuePair pair = (MemberValuePair) value;
- if ("uri".equals(pair.getName().toString())) {
- exp = pair.getValue();
- break;
- }
- }
- }
- uri = CamelJavaParserHelper.getLiteralValue(clazz, null, exp);
- }
- }
-
- // we only want to add fields which are not used in the route
- if (!Strings.isBlank(uri) && findEndpointByUri(endpoints, uri) == null) {
-
- // we only want the relative dir name from the
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
- String id = field.getName();
-
- CamelEndpointDetails detail = new CamelEndpointDetails();
- detail.setFileName(fileName);
- detail.setClassName(clazz.getQualifiedName());
- detail.setEndpointInstance(id);
- detail.setEndpointUri(uri);
- detail.setEndpointComponentName(endpointComponentName(uri));
-
- // favor the position of the expression which had the actual uri
- Object internal = exp != null ? exp : field.getInternal();
-
- // find position of field/expression
- if (internal instanceof ASTNode) {
- int pos = ((ASTNode) internal).getStartPosition();
- int line = findLineNumber(fullyQualifiedFileName, pos);
- if (line > -1) {
- detail.setLineNumber("" + line);
- }
- }
- // we do not know if this field is used as consumer or producer only, but we try
- // to find out by scanning the route in the configure method below
- endpoints.add(detail);
- }
- }
-
- // find all the configure methods
- List<MethodSource<JavaClassSource>> methods = new ArrayList<>();
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
- if (method != null) {
- methods.add(method);
- }
- if (includeInlinedRouteBuilders) {
- List<MethodSource<JavaClassSource>> inlinedMethods = CamelJavaParserHelper.findInlinedConfigureMethods(clazz);
- if (!inlinedMethods.isEmpty()) {
- methods.addAll(inlinedMethods);
- }
- }
-
- // look if any of these fields are used in the route only as consumer or producer, as then we can
- // determine this to ensure when we edit the endpoint we should only the options accordingly
- for (MethodSource<JavaClassSource> configureMethod : methods) {
- // consumers only
- List<ParserResult> uris = CamelJavaParserHelper.parseCamelConsumerUris(configureMethod, true, true);
- for (ParserResult result : uris) {
- if (!result.isParsed()) {
- if (unparsable != null) {
- unparsable.add(result.getElement());
- }
- } else {
- CamelEndpointDetails detail = findEndpointByUri(endpoints, result.getElement());
- if (detail != null) {
- // its a consumer only
- detail.setConsumerOnly(true);
- } else {
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
-
- detail = new CamelEndpointDetails();
- detail.setFileName(fileName);
- detail.setClassName(clazz.getQualifiedName());
- detail.setMethodName(configureMethod.getName());
- detail.setEndpointInstance(null);
- detail.setEndpointUri(result.getElement());
- int line = findLineNumber(fullyQualifiedFileName, result.getPosition());
- if (line > -1) {
- detail.setLineNumber("" + line);
- }
- detail.setEndpointComponentName(endpointComponentName(result.getElement()));
- detail.setConsumerOnly(true);
- detail.setProducerOnly(false);
- endpoints.add(detail);
- }
- }
- }
- // producer only
- uris = CamelJavaParserHelper.parseCamelProducerUris(configureMethod, true, true);
- for (ParserResult result : uris) {
- if (!result.isParsed()) {
- if (unparsable != null) {
- unparsable.add(result.getElement());
- }
- } else {
- CamelEndpointDetails detail = findEndpointByUri(endpoints, result.getElement());
- if (detail != null) {
- if (detail.isConsumerOnly()) {
- // its both a consumer and producer
- detail.setConsumerOnly(false);
- detail.setProducerOnly(false);
- } else {
- // its a producer only
- detail.setProducerOnly(true);
- }
- }
- // the same endpoint uri may be used in multiple places in the same route
- // so we should maybe add all of them
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
-
- detail = new CamelEndpointDetails();
- detail.setFileName(fileName);
- detail.setClassName(clazz.getQualifiedName());
- detail.setMethodName(configureMethod.getName());
- detail.setEndpointInstance(null);
- detail.setEndpointUri(result.getElement());
- int line = findLineNumber(fullyQualifiedFileName, result.getPosition());
- if (line > -1) {
- detail.setLineNumber("" + line);
- }
- detail.setEndpointComponentName(endpointComponentName(result.getElement()));
- detail.setConsumerOnly(false);
- detail.setProducerOnly(true);
- endpoints.add(detail);
- }
- }
- }
- }
-
- /**
- * Parses the java source class to discover Camel simple expressions.
- *
- * @param clazz the java source class
- * @param baseDir the base of the source code
- * @param fullyQualifiedFileName the fully qualified source code file name
- * @param simpleExpressions list to add discovered and parsed simple expressions
- */
- public static void parseRouteBuilderSimpleExpressions(JavaClassSource clazz, String baseDir, String fullyQualifiedFileName,
- List<CamelSimpleExpressionDetails> simpleExpressions) {
-
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
- if (method != null) {
- List<ParserResult> expressions = CamelJavaParserHelper.parseCamelSimpleExpressions(method);
- for (ParserResult result : expressions) {
- if (result.isParsed()) {
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
-
- CamelSimpleExpressionDetails details = new CamelSimpleExpressionDetails();
- details.setFileName(fileName);
- details.setClassName(clazz.getQualifiedName());
- details.setMethodName("configure");
- int line = findLineNumber(fullyQualifiedFileName, result.getPosition());
- if (line > -1) {
- details.setLineNumber("" + line);
- }
- details.setSimple(result.getElement());
-
- simpleExpressions.add(details);
- }
- }
- }
- }
-
- private static CamelEndpointDetails findEndpointByUri(List<CamelEndpointDetails> endpoints, String uri) {
- for (CamelEndpointDetails detail : endpoints) {
- if (uri.equals(detail.getEndpointUri())) {
- return detail;
- }
- }
- return null;
- }
-
- private static int findLineNumber(String fullyQualifiedFileName, int position) {
- int lines = 0;
-
- try {
- int current = 0;
- try (BufferedReader br = new BufferedReader(new FileReader(new File(fullyQualifiedFileName)))) {
- String line;
- while ((line = br.readLine()) != null) {
- lines++;
- current += line.length() + 1; // add 1 for line feed
- if (current >= position) {
- return lines;
- }
- }
- }
- } catch (Exception e) {
- // ignore
- return -1;
- }
-
- return lines;
- }
-
- private static String endpointComponentName(String uri) {
- if (uri != null) {
- int idx = uri.indexOf(":");
- if (idx > 0) {
- return uri.substring(0, idx);
- }
- }
- return null;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/java/org/apache/camel/parser/XmlRouteParser.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/java/org/apache/camel/parser/XmlRouteParser.java b/tooling/route-parser/src/main/java/org/apache/camel/parser/XmlRouteParser.java
deleted file mode 100644
index 2cca9df..0000000
--- a/tooling/route-parser/src/main/java/org/apache/camel/parser/XmlRouteParser.java
+++ /dev/null
@@ -1,169 +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.parser;
-
-import java.io.InputStream;
-import java.util.List;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-
-import org.apache.camel.parser.helper.CamelJavaParserHelper;
-import org.apache.camel.parser.helper.CamelXmlHelper;
-import org.apache.camel.parser.helper.XmlLineNumberParser;
-
-import org.apache.camel.parser.model.CamelEndpointDetails;
-import org.apache.camel.parser.model.CamelSimpleExpressionDetails;
-import org.jboss.forge.roaster.model.util.Strings;
-
-import static org.apache.camel.parser.helper.CamelXmlHelper.getSafeAttribute;
-
-/**
- * A Camel XML parser that parses Camel XML routes source code.
- * <p/>
- * This implementation is higher level details, and uses the lower level parser {@link CamelJavaParserHelper}.
- */
-public final class XmlRouteParser {
-
- private XmlRouteParser() {
- }
-
- /**
- * Parses the XML source to discover Camel endpoints.
- *
- * @param xml the xml file as input stream
- * @param baseDir the base of the source code
- * @param fullyQualifiedFileName the fully qualified source code file name
- * @param endpoints list to add discovered and parsed endpoints
- */
- public static void parseXmlRouteEndpoints(InputStream xml, String baseDir, String fullyQualifiedFileName,
- List<CamelEndpointDetails> endpoints) throws Exception {
-
- // find all the endpoints (currently only <endpoint> and within <route>)
- // try parse it as dom
- Document dom = null;
- try {
- dom = XmlLineNumberParser.parseXml(xml);
- } catch (Exception e) {
- // ignore as the xml file may not be valid at this point
- }
- if (dom != null) {
- List<Node> nodes = CamelXmlHelper.findAllEndpoints(dom);
- for (Node node : nodes) {
- String uri = getSafeAttribute(node, "uri");
- if (uri != null) {
- // trim and remove whitespace noise
- uri = trimEndpointUri(uri);
- }
- if (!Strings.isBlank(uri)) {
- String id = getSafeAttribute(node, "id");
- String lineNumber = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER);
- String lineNumberEnd = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER_END);
-
- // we only want the relative dir name from the resource directory, eg META-INF/spring/foo.xml
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
-
- boolean consumerOnly = false;
- boolean producerOnly = false;
- String nodeName = node.getNodeName();
- if ("from".equals(nodeName) || "pollEnrich".equals(nodeName)) {
- consumerOnly = true;
- } else if ("to".equals(nodeName) || "enrich".equals(nodeName) || "wireTap".equals(nodeName)) {
- producerOnly = true;
- }
-
- CamelEndpointDetails detail = new CamelEndpointDetails();
- detail.setFileName(fileName);
- detail.setLineNumber(lineNumber);
- detail.setLineNumberEnd(lineNumberEnd);
- detail.setEndpointInstance(id);
- detail.setEndpointUri(uri);
- detail.setEndpointComponentName(endpointComponentName(uri));
- detail.setConsumerOnly(consumerOnly);
- detail.setProducerOnly(producerOnly);
- endpoints.add(detail);
- }
- }
- }
- }
-
- /**
- * Parses the XML source to discover Camel endpoints.
- *
- * @param xml the xml file as input stream
- * @param baseDir the base of the source code
- * @param fullyQualifiedFileName the fully qualified source code file name
- * @param simpleExpressions list to add discovered and parsed simple expressions
- */
- public static void parseXmlRouteSimpleExpressions(InputStream xml, String baseDir, String fullyQualifiedFileName,
- List<CamelSimpleExpressionDetails> simpleExpressions) throws Exception {
-
- // find all the simple expressions
- // try parse it as dom
- Document dom = null;
- try {
- dom = XmlLineNumberParser.parseXml(xml);
- } catch (Exception e) {
- // ignore as the xml file may not be valid at this point
- }
- if (dom != null) {
- List<Node> nodes = CamelXmlHelper.findAllSimpleExpressions(dom);
- for (Node node : nodes) {
- String simple = node.getTextContent();
- String lineNumber = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER);
- String lineNumberEnd = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER_END);
-
- // we only want the relative dir name from the resource directory, eg META-INF/spring/foo.xml
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
-
- CamelSimpleExpressionDetails detail = new CamelSimpleExpressionDetails();
- detail.setFileName(fileName);
- detail.setLineNumber(lineNumber);
- detail.setLineNumberEnd(lineNumberEnd);
- detail.setSimple(simple);
- simpleExpressions.add(detail);
- }
- }
- }
-
- private static String endpointComponentName(String uri) {
- if (uri != null) {
- int idx = uri.indexOf(":");
- if (idx > 0) {
- return uri.substring(0, idx);
- }
- }
- return null;
- }
-
-
- private static String trimEndpointUri(String uri) {
- uri = uri.trim();
- // if the uri is using new-lines then remove whitespace noise before & and ? separator
- uri = uri.replaceAll("(\\s+)(\\&)", "$2");
- uri = uri.replaceAll("(\\&)(\\s+)", "$1");
- uri = uri.replaceAll("(\\?)(\\s+)", "$1");
- return uri;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaParserHelper.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaParserHelper.java b/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaParserHelper.java
deleted file mode 100644
index 6df709a..0000000
--- a/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/CamelJavaParserHelper.java
+++ /dev/null
@@ -1,638 +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.parser.helper;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.camel.parser.ParserResult;
-import org.apache.camel.parser.RouteBuilderParser;
-import org.apache.camel.parser.roaster.AnonymousMethodSource;
-import org.apache.camel.parser.roaster.StatementFieldSource;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ASTNode;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.AnonymousClassDeclaration;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.Block;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.BooleanLiteral;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ClassInstanceCreation;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.Expression;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ExpressionStatement;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.FieldDeclaration;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.InfixExpression;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.MemberValuePair;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.MethodDeclaration;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.MethodInvocation;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.NormalAnnotation;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.NumberLiteral;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ParenthesizedExpression;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.QualifiedName;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.ReturnStatement;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.SimpleName;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.SimpleType;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.SingleMemberAnnotation;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.Statement;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.StringLiteral;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.Type;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.VariableDeclaration;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.VariableDeclarationFragment;
-import org.jboss.forge.roaster._shade.org.eclipse.jdt.core.dom.VariableDeclarationStatement;
-import org.jboss.forge.roaster.model.Annotation;
-import org.jboss.forge.roaster.model.source.AnnotationSource;
-import org.jboss.forge.roaster.model.source.FieldSource;
-import org.jboss.forge.roaster.model.source.JavaClassSource;
-import org.jboss.forge.roaster.model.source.MethodSource;
-import org.jboss.forge.roaster.model.util.Strings;
-
-/**
- * A Camel Java parser that only depends on the Roaster API.
- * <p/>
- * This implementation is lower level details. For a higher level parser see {@link RouteBuilderParser}.
- */
-public final class CamelJavaParserHelper {
-
- private CamelJavaParserHelper() {
- // utility class
- }
-
- public static MethodSource<JavaClassSource> findConfigureMethod(JavaClassSource clazz) {
- MethodSource<JavaClassSource> method = clazz.getMethod("configure");
- // must be public void configure()
- if (method != null && method.isPublic() && method.getParameters().isEmpty() && method.getReturnType().isType("void")) {
- return method;
- }
-
- // maybe the route builder is from unit testing with camel-test as an anonymous inner class
- // there is a bit of code to dig out this using the eclipse jdt api
- method = findCreateRouteBuilderMethod(clazz);
- if (method != null) {
- return findConfigureMethodInCreateRouteBuilder(clazz, method);
- }
-
- return null;
- }
-
- public static List<MethodSource<JavaClassSource>> findInlinedConfigureMethods(JavaClassSource clazz) {
- List<MethodSource<JavaClassSource>> answer = new ArrayList<>();
-
- List<MethodSource<JavaClassSource>> methods = clazz.getMethods();
- if (methods != null) {
- for (MethodSource<JavaClassSource> method : methods) {
- if (method.isPublic()
- && (method.getParameters() == null || method.getParameters().isEmpty())
- && (method.getReturnType() == null || method.getReturnType().isType("void"))) {
- // maybe the method contains an inlined createRouteBuilder usually from an unit test method
- MethodSource<JavaClassSource> builder = findConfigureMethodInCreateRouteBuilder(clazz, method);
- if (builder != null) {
- answer.add(builder);
- }
- }
- }
- }
-
- return answer;
- }
-
- private static MethodSource<JavaClassSource> findCreateRouteBuilderMethod(JavaClassSource clazz) {
- MethodSource method = clazz.getMethod("createRouteBuilder");
- if (method != null && (method.isPublic() || method.isProtected()) && method.getParameters().isEmpty()) {
- return method;
- }
- return null;
- }
-
- private static MethodSource<JavaClassSource> findConfigureMethodInCreateRouteBuilder(JavaClassSource clazz, MethodSource<JavaClassSource> method) {
- // find configure inside the code
- MethodDeclaration md = (MethodDeclaration) method.getInternal();
- Block block = md.getBody();
- if (block != null) {
- List statements = block.statements();
- for (int i = 0; i < statements.size(); i++) {
- Statement stmt = (Statement) statements.get(i);
- Expression exp = null;
- if (stmt instanceof ReturnStatement) {
- ReturnStatement rs = (ReturnStatement) stmt;
- exp = rs.getExpression();
- } else if (stmt instanceof ExpressionStatement) {
- ExpressionStatement es = (ExpressionStatement) stmt;
- exp = es.getExpression();
- if (exp instanceof MethodInvocation) {
- MethodInvocation mi = (MethodInvocation) exp;
- for (Object arg : mi.arguments()) {
- if (arg instanceof ClassInstanceCreation) {
- exp = (Expression) arg;
- break;
- }
- }
- }
- }
- if (exp != null && exp instanceof ClassInstanceCreation) {
- ClassInstanceCreation cic = (ClassInstanceCreation) exp;
- boolean isRouteBuilder = false;
- if (cic.getType() instanceof SimpleType) {
- SimpleType st = (SimpleType) cic.getType();
- isRouteBuilder = "RouteBuilder".equals(st.getName().toString());
- }
- if (isRouteBuilder && cic.getAnonymousClassDeclaration() != null) {
- List body = cic.getAnonymousClassDeclaration().bodyDeclarations();
- for (int j = 0; j < body.size(); j++) {
- Object line = body.get(j);
- if (line instanceof MethodDeclaration) {
- MethodDeclaration amd = (MethodDeclaration) line;
- if ("configure".equals(amd.getName().toString())) {
- return new AnonymousMethodSource(clazz, amd);
- }
- }
- }
- }
- }
- }
- }
-
- return null;
- }
-
- public static List<ParserResult> parseCamelConsumerUris(MethodSource<JavaClassSource> method, boolean strings, boolean fields) {
- return doParseCamelUris(method, true, false, strings, fields);
- }
-
- public static List<ParserResult> parseCamelProducerUris(MethodSource<JavaClassSource> method, boolean strings, boolean fields) {
- return doParseCamelUris(method, false, true, strings, fields);
- }
-
- private static List<ParserResult> doParseCamelUris(MethodSource<JavaClassSource> method, boolean consumers, boolean producers,
- boolean strings, boolean fields) {
-
- List<ParserResult> answer = new ArrayList<ParserResult>();
-
- if (method != null) {
- MethodDeclaration md = (MethodDeclaration) method.getInternal();
- Block block = md.getBody();
- if (block != null) {
- for (Object statement : md.getBody().statements()) {
- // must be a method call expression
- if (statement instanceof ExpressionStatement) {
- ExpressionStatement es = (ExpressionStatement) statement;
- Expression exp = es.getExpression();
-
- List<ParserResult> uris = new ArrayList<ParserResult>();
- parseExpression(method.getOrigin(), block, exp, uris, consumers, producers, strings, fields);
- if (!uris.isEmpty()) {
- // reverse the order as we will grab them from last->first
- Collections.reverse(uris);
- answer.addAll(uris);
- }
- }
- }
- }
- }
-
- return answer;
- }
-
- private static void parseExpression(JavaClassSource clazz, Block block, Expression exp, List<ParserResult> uris,
- boolean consumers, boolean producers, boolean strings, boolean fields) {
- if (exp == null) {
- return;
- }
- if (exp instanceof MethodInvocation) {
- MethodInvocation mi = (MethodInvocation) exp;
- doParseCamelUris(clazz, block, mi, uris, consumers, producers, strings, fields);
- // if the method was called on another method, then recursive
- exp = mi.getExpression();
- parseExpression(clazz, block, exp, uris, consumers, producers, strings, fields);
- }
- }
-
- private static void doParseCamelUris(JavaClassSource clazz, Block block, MethodInvocation mi, List<ParserResult> uris,
- boolean consumers, boolean producers, boolean strings, boolean fields) {
- String name = mi.getName().getIdentifier();
-
- if (consumers) {
- if ("from".equals(name)) {
- List args = mi.arguments();
- if (args != null) {
- for (Object arg : args) {
- if (isValidArgument(name, arg)) {
- extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
- }
- }
- }
- }
- if ("fromF".equals(name)) {
- List args = mi.arguments();
- // the first argument is where the uri is
- if (args != null && args.size() >= 1) {
- Object arg = args.get(0);
- if (isValidArgument(name, arg)) {
- extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
- }
- }
- }
- if ("pollEnrich".equals(name)) {
- List args = mi.arguments();
- // the first argument is where the uri is
- if (args != null && args.size() >= 1) {
- Object arg = args.get(0);
- if (isValidArgument(name, arg)) {
- extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
- }
- }
- }
- }
-
- if (producers) {
- if ("to".equals(name) || "toD".equals(name)) {
- List args = mi.arguments();
- if (args != null) {
- for (Object arg : args) {
- // skip if the arg is a boolean, ExchangePattern or Iterateable, type
- if (isValidArgument(name, arg)) {
- extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
- }
- }
- }
- }
- if ("toF".equals(name)) {
- List args = mi.arguments();
- // the first argument is where the uri is
- if (args != null && args.size() >= 1) {
- Object arg = args.get(0);
- if (isValidArgument(name, arg)) {
- extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
- }
- }
- }
- if ("enrich".equals(name) || "wireTap".equals(name)) {
- List args = mi.arguments();
- // the first argument is where the uri is
- if (args != null && args.size() >= 1) {
- Object arg = args.get(0);
- if (isValidArgument(name, arg)) {
- extractEndpointUriFromArgument(name, clazz, block, uris, arg, strings, fields);
- }
- }
- }
- }
- }
-
- private static boolean isValidArgument(String node, Object arg) {
- // skip boolean argument, as toD can accept a boolean value
- if (arg instanceof BooleanLiteral) {
- return false;
- }
- // skip ExchangePattern argument
- if (arg instanceof QualifiedName) {
- QualifiedName qn = (QualifiedName) arg;
- String name = qn.getFullyQualifiedName();
- if (name.startsWith("ExchangePattern")) {
- return false;
- }
- }
- return true;
- }
-
- private static void extractEndpointUriFromArgument(String node, JavaClassSource clazz, Block block, List<ParserResult> uris, Object arg, boolean strings, boolean fields) {
- if (strings) {
- String uri = getLiteralValue(clazz, block, (Expression) arg);
- if (!Strings.isBlank(uri)) {
- int position = ((Expression) arg).getStartPosition();
-
- // if the node is fromF or toF, then replace all %s with {{%s}} as we cannot parse that value
- if ("fromF".equals(node) || "toF".equals(node)) {
- uri = uri.replaceAll("\\%s", "\\{\\{\\%s\\}\\}");
- }
-
- uris.add(new ParserResult(node, position, uri));
- return;
- }
- }
- if (fields && arg instanceof SimpleName) {
- FieldSource field = getField(clazz, block, (SimpleName) arg);
- if (field != null) {
- // find the endpoint uri from the annotation
- AnnotationSource annotation = field.getAnnotation("org.apache.camel.cdi.Uri");
- if (annotation == null) {
- annotation = field.getAnnotation("org.apache.camel.EndpointInject");
- }
- if (annotation != null) {
- Expression exp = (Expression) annotation.getInternal();
- if (exp instanceof SingleMemberAnnotation) {
- exp = ((SingleMemberAnnotation) exp).getValue();
- } else if (exp instanceof NormalAnnotation) {
- List values = ((NormalAnnotation) exp).values();
- for (Object value : values) {
- MemberValuePair pair = (MemberValuePair) value;
- if ("uri".equals(pair.getName().toString())) {
- exp = pair.getValue();
- break;
- }
- }
- }
- String uri = CamelJavaParserHelper.getLiteralValue(clazz, block, exp);
- if (!Strings.isBlank(uri)) {
- int position = ((SimpleName) arg).getStartPosition();
- uris.add(new ParserResult(node, position, uri));
- }
- } else {
- // the field may be initialized using variables, so we need to evaluate those expressions
- Object fi = field.getInternal();
- if (fi instanceof VariableDeclaration) {
- Expression exp = ((VariableDeclaration) fi).getInitializer();
- String uri = CamelJavaParserHelper.getLiteralValue(clazz, block, exp);
- if (!Strings.isBlank(uri)) {
- // we want the position of the field, and not in the route
- int position = ((VariableDeclaration) fi).getStartPosition();
- uris.add(new ParserResult(node, position, uri));
- }
- }
- }
- }
- }
-
- // cannot parse it so add a failure
- uris.add(new ParserResult(node, -1, arg.toString(), false));
- }
-
- public static List<ParserResult> parseCamelSimpleExpressions(MethodSource<JavaClassSource> method) {
- List<ParserResult> answer = new ArrayList<ParserResult>();
-
- MethodDeclaration md = (MethodDeclaration) method.getInternal();
- Block block = md.getBody();
- if (block != null) {
- for (Object statement : block.statements()) {
- // must be a method call expression
- if (statement instanceof ExpressionStatement) {
- ExpressionStatement es = (ExpressionStatement) statement;
- Expression exp = es.getExpression();
-
- List<ParserResult> expressions = new ArrayList<ParserResult>();
- parseExpression(null, method.getOrigin(), block, exp, expressions);
- if (!expressions.isEmpty()) {
- // reverse the order as we will grab them from last->first
- Collections.reverse(expressions);
- answer.addAll(expressions);
- }
- }
- }
- }
-
- return answer;
- }
-
- private static void parseExpression(String node, JavaClassSource clazz, Block block, Expression exp, List<ParserResult> expressions) {
- if (exp == null) {
- return;
- }
- if (exp instanceof MethodInvocation) {
- MethodInvocation mi = (MethodInvocation) exp;
- doParseCamelSimple(node, clazz, block, mi, expressions);
- // if the method was called on another method, then recursive
- exp = mi.getExpression();
- parseExpression(node, clazz, block, exp, expressions);
- }
- }
-
- private static void doParseCamelSimple(String node, JavaClassSource clazz, Block block, MethodInvocation mi, List<ParserResult> expressions) {
- String name = mi.getName().getIdentifier();
-
- if ("simple".equals(name)) {
- List args = mi.arguments();
- // the first argument is a string parameter for the simple expression
- if (args != null && args.size() >= 1) {
- // it is a String type
- Object arg = args.get(0);
- String simple = getLiteralValue(clazz, block, (Expression) arg);
- if (!Strings.isBlank(simple)) {
- int position = ((Expression) arg).getStartPosition();
- expressions.add(new ParserResult(node, position, simple));
- }
- }
- }
-
- // simple maybe be passed in as an argument
- List args = mi.arguments();
- if (args != null) {
- for (Object arg : args) {
- if (arg instanceof MethodInvocation) {
- MethodInvocation ami = (MethodInvocation) arg;
- doParseCamelSimple(node, clazz, block, ami, expressions);
- }
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- private static FieldSource<JavaClassSource> getField(JavaClassSource clazz, Block block, SimpleName ref) {
- String fieldName = ref.getIdentifier();
- if (fieldName != null) {
- // find field in class
- FieldSource field = clazz != null ? clazz.getField(fieldName) : null;
- if (field == null) {
- field = findFieldInBlock(clazz, block, fieldName);
- }
- return field;
- }
- return null;
- }
-
- @SuppressWarnings("unchecked")
- private static FieldSource<JavaClassSource> findFieldInBlock(JavaClassSource clazz, Block block, String fieldName) {
- for (Object statement : block.statements()) {
- // try local statements first in the block
- if (statement instanceof VariableDeclarationStatement) {
- final Type type = ((VariableDeclarationStatement) statement).getType();
- for (Object obj : ((VariableDeclarationStatement) statement).fragments()) {
- if (obj instanceof VariableDeclarationFragment) {
- VariableDeclarationFragment fragment = (VariableDeclarationFragment) obj;
- SimpleName name = fragment.getName();
- if (name != null && fieldName.equals(name.getIdentifier())) {
- return new StatementFieldSource(clazz, fragment, type);
- }
- }
- }
- }
-
- // okay the field may be burried inside an anonymous inner class as a field declaration
- // outside the configure method, so lets go back to the parent and see what we can find
- ASTNode node = block.getParent();
- if (node instanceof MethodDeclaration) {
- node = node.getParent();
- }
- if (node instanceof AnonymousClassDeclaration) {
- List declarations = ((AnonymousClassDeclaration) node).bodyDeclarations();
- for (Object dec : declarations) {
- if (dec instanceof FieldDeclaration) {
- FieldDeclaration fd = (FieldDeclaration) dec;
- final Type type = fd.getType();
- for (Object obj : fd.fragments()) {
- if (obj instanceof VariableDeclarationFragment) {
- VariableDeclarationFragment fragment = (VariableDeclarationFragment) obj;
- SimpleName name = fragment.getName();
- if (name != null && fieldName.equals(name.getIdentifier())) {
- return new StatementFieldSource(clazz, fragment, type);
- }
- }
- }
- }
- }
- }
- }
- return null;
- }
-
- public static String getLiteralValue(JavaClassSource clazz, Block block, Expression expression) {
- // unwrap parenthesis
- if (expression instanceof ParenthesizedExpression) {
- expression = ((ParenthesizedExpression) expression).getExpression();
- }
-
- if (expression instanceof StringLiteral) {
- return ((StringLiteral) expression).getLiteralValue();
- } else if (expression instanceof BooleanLiteral) {
- return "" + ((BooleanLiteral) expression).booleanValue();
- } else if (expression instanceof NumberLiteral) {
- return ((NumberLiteral) expression).getToken();
- }
-
- // if it a method invocation then add a dummy value assuming the method invocation will return a valid response
- if (expression instanceof MethodInvocation) {
- String name = ((MethodInvocation) expression).getName().getIdentifier();
- return "{{" + name + "}}";
- }
-
- // if its a qualified name (usually a constant field in another class)
- // then add a dummy value as we cannot find the field value in other classes and maybe even outside the
- // source code we have access to
- if (expression instanceof QualifiedName) {
- QualifiedName qn = (QualifiedName) expression;
- String name = qn.getFullyQualifiedName();
- return "{{" + name + "}}";
- }
-
- if (expression instanceof SimpleName) {
- FieldSource<JavaClassSource> field = getField(clazz, block, (SimpleName) expression);
- if (field != null) {
- // is the field annotated with a Camel endpoint
- if (field.getAnnotations() != null) {
- for (Annotation ann : field.getAnnotations()) {
- boolean valid = "org.apache.camel.EndpointInject".equals(ann.getQualifiedName()) || "org.apache.camel.cdi.Uri".equals(ann.getQualifiedName());
- if (valid) {
- Expression exp = (Expression) ann.getInternal();
- if (exp instanceof SingleMemberAnnotation) {
- exp = ((SingleMemberAnnotation) exp).getValue();
- } else if (exp instanceof NormalAnnotation) {
- List values = ((NormalAnnotation) exp).values();
- for (Object value : values) {
- MemberValuePair pair = (MemberValuePair) value;
- if ("uri".equals(pair.getName().toString())) {
- exp = pair.getValue();
- break;
- }
- }
- }
- if (exp != null) {
- return getLiteralValue(clazz, block, exp);
- }
- }
- }
- }
- // is the field an org.apache.camel.Endpoint type?
- if ("Endpoint".equals(field.getType().getSimpleName())) {
- // then grab the uri from the first argument
- VariableDeclarationFragment vdf = (VariableDeclarationFragment) field.getInternal();
- expression = vdf.getInitializer();
- if (expression instanceof MethodInvocation) {
- MethodInvocation mi = (MethodInvocation) expression;
- List args = mi.arguments();
- if (args != null && args.size() > 0) {
- // the first argument has the endpoint uri
- expression = (Expression) args.get(0);
- return getLiteralValue(clazz, block, expression);
- }
- }
- } else {
- // no annotations so try its initializer
- VariableDeclarationFragment vdf = (VariableDeclarationFragment) field.getInternal();
- expression = vdf.getInitializer();
- if (expression == null) {
- // its a field which has no initializer, then add a dummy value assuming the field will be initialized at runtime
- return "{{" + field.getName() + "}}";
- } else {
- return getLiteralValue(clazz, block, expression);
- }
- }
- } else {
- // we could not find the field in this class/method, so its maybe from some other super class, so insert a dummy value
- final String fieldName = ((SimpleName) expression).getIdentifier();
- return "{{" + fieldName + "}}";
- }
- } else if (expression instanceof InfixExpression) {
- String answer = null;
- // is it a string that is concat together?
- InfixExpression ie = (InfixExpression) expression;
- if (InfixExpression.Operator.PLUS.equals(ie.getOperator())) {
-
- String val1 = getLiteralValue(clazz, block, ie.getLeftOperand());
- String val2 = getLiteralValue(clazz, block, ie.getRightOperand());
-
- // if numeric then we plus the values, otherwise we string concat
- boolean numeric = isNumericOperator(clazz, block, ie.getLeftOperand()) && isNumericOperator(clazz, block, ie.getRightOperand());
- if (numeric) {
- Long num1 = val1 != null ? Long.valueOf(val1) : 0;
- Long num2 = val2 != null ? Long.valueOf(val2) : 0;
- answer = "" + (num1 + num2);
- } else {
- answer = (val1 != null ? val1 : "") + (val2 != null ? val2 : "");
- }
-
- if (!answer.isEmpty()) {
- // include extended when we concat on 2 or more lines
- List extended = ie.extendedOperands();
- if (extended != null) {
- for (Object ext : extended) {
- String val3 = getLiteralValue(clazz, block, (Expression) ext);
- if (numeric) {
- Long num3 = val3 != null ? Long.valueOf(val3) : 0;
- Long num = Long.valueOf(answer);
- answer = "" + (num + num3);
- } else {
- answer += val3 != null ? val3 : "";
- }
- }
- }
- }
- }
- return answer;
- }
-
- return null;
- }
-
- private static boolean isNumericOperator(JavaClassSource clazz, Block block, Expression expression) {
- if (expression instanceof NumberLiteral) {
- return true;
- } else if (expression instanceof SimpleName) {
- FieldSource field = getField(clazz, block, (SimpleName) expression);
- if (field != null) {
- return field.getType().isType("int") || field.getType().isType("long")
- || field.getType().isType("Integer") || field.getType().isType("Long");
- }
- }
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlHelper.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlHelper.java b/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlHelper.java
deleted file mode 100644
index 53d4783..0000000
--- a/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/CamelXmlHelper.java
+++ /dev/null
@@ -1,268 +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.parser.helper;
-
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import org.jboss.forge.roaster.model.util.Strings;
-
-/**
- * Various XML helper methods used for parsing XML routes.
- */
-public final class CamelXmlHelper {
-
- private CamelXmlHelper() {
- // utility class
- }
-
- public static String getSafeAttribute(Node node, String key) {
- if (node != null) {
- Node attr = node.getAttributes().getNamedItem(key);
- if (attr != null) {
- return attr.getNodeValue();
- }
- }
- return null;
- }
-
- public static List<Node> findAllEndpoints(Document dom) {
- List<Node> nodes = new ArrayList<>();
-
- NodeList list = dom.getElementsByTagName("endpoint");
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- if ("endpoint".equals(child.getNodeName())) {
- // it may not be a camel namespace, so skip those
- String ns = child.getNamespaceURI();
- if (ns == null) {
- NamedNodeMap attrs = child.getAttributes();
- if (attrs != null) {
- Node node = attrs.getNamedItem("xmlns");
- if (node != null) {
- ns = node.getNodeValue();
- }
- }
- }
- // assume no namespace its for camel
- if (ns == null || ns.contains("camel")) {
- nodes.add(child);
- }
- }
- }
-
- list = dom.getElementsByTagName("onException");
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- findAllUrisRecursive(child, nodes);
- }
- list = dom.getElementsByTagName("onCompletion");
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- findAllUrisRecursive(child, nodes);
- }
- list = dom.getElementsByTagName("intercept");
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- findAllUrisRecursive(child, nodes);
- }
- list = dom.getElementsByTagName("interceptFrom");
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- findAllUrisRecursive(child, nodes);
- }
- list = dom.getElementsByTagName("interceptSendToEndpoint");
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- findAllUrisRecursive(child, nodes);
- }
- list = dom.getElementsByTagName("rest");
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- if ("route".equals(child.getNodeName()) || "to".equals(child.getNodeName())) {
- findAllUrisRecursive(child, nodes);
- }
- }
- list = dom.getElementsByTagName("route");
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- if ("route".equals(child.getNodeName())) {
- findAllUrisRecursive(child, nodes);
- }
- }
-
- return nodes;
- }
-
- private static void findAllUrisRecursive(Node node, List<Node> nodes) {
- // okay its a route so grab all uri attributes we can find
- String url = getSafeAttribute(node, "uri");
- if (url != null) {
- nodes.add(node);
- }
-
- NodeList children = node.getChildNodes();
- if (children != null) {
- for (int i = 0; i < children.getLength(); i++) {
- Node child = children.item(i);
- if (child.getNodeType() == Node.ELEMENT_NODE) {
- findAllUrisRecursive(child, nodes);
- }
- }
- }
- }
-
- public static List<Node> findAllSimpleExpressions(Document dom) {
- List<Node> nodes = new ArrayList<>();
-
- NodeList list = dom.getElementsByTagName("route");
- for (int i = 0; i < list.getLength(); i++) {
- Node child = list.item(i);
- if ("route".equals(child.getNodeName())) {
- findAllSimpleExpressionsRecursive(child, nodes);
- }
- }
-
- return nodes;
- }
-
- private static void findAllSimpleExpressionsRecursive(Node node, List<Node> nodes) {
- // okay its a route so grab if its <simple>
- if ("simple".equals(node.getNodeName())) {
- nodes.add(node);
- }
-
- NodeList children = node.getChildNodes();
- if (children != null) {
- for (int i = 0; i < children.getLength(); i++) {
- Node child = children.item(i);
- if (child.getNodeType() == Node.ELEMENT_NODE) {
- findAllSimpleExpressionsRecursive(child, nodes);
- }
- }
- }
- }
-
- public static Element getSelectedCamelElementNode(String key, InputStream resourceInputStream) throws Exception {
- Document root = loadCamelXmlFileAsDom(resourceInputStream);
- Element selectedElement = null;
- if (root != null) {
- Node selectedNode = findCamelNodeInDocument(root, key);
- if (selectedNode instanceof Element) {
- selectedElement = (Element) selectedNode;
- }
- }
- return selectedElement;
- }
-
- private static Document loadCamelXmlFileAsDom(InputStream resourceInputStream) throws Exception {
- // must enforce the namespace to be http://camel.apache.org/schema/spring which is what the camel-core JAXB model uses
- Document root = XmlLineNumberParser.parseXml(resourceInputStream, "camelContext,routes,rests", "http://camel.apache.org/schema/spring");
- return root;
- }
-
- private static Node findCamelNodeInDocument(Document root, String key) {
- Node selectedNode = null;
- if (root != null && !Strings.isBlank(key)) {
- String[] paths = key.split("/");
- NodeList camels = getCamelContextElements(root);
- if (camels != null) {
- Map<String, Integer> rootNodeCounts = new HashMap<>();
- for (int i = 0, size = camels.getLength(); i < size; i++) {
- Node node = camels.item(i);
- boolean first = true;
- for (String path : paths) {
- if (first) {
- first = false;
- String actual = getIdOrIndex(node, rootNodeCounts);
- if (!equal(actual, path)) {
- node = null;
- }
- } else {
- node = findCamelNodeForPath(node, path);
- }
- if (node == null) {
- break;
- }
- }
- if (node != null) {
- return node;
- }
- }
- }
- }
- return selectedNode;
- }
-
- private static Node findCamelNodeForPath(Node node, String path) {
- NodeList childNodes = node.getChildNodes();
- if (childNodes != null) {
- Map<String, Integer> nodeCounts = new HashMap<>();
- for (int i = 0, size = childNodes.getLength(); i < size; i++) {
- Node child = childNodes.item(i);
- if (child instanceof Element) {
- String actual = getIdOrIndex(child, nodeCounts);
- if (equal(actual, path)) {
- return child;
- }
- }
- }
- }
- return null;
- }
-
- private static String getIdOrIndex(Node node, Map<String, Integer> nodeCounts) {
- String answer = null;
- if (node instanceof Element) {
- Element element = (Element) node;
- String elementName = element.getTagName();
- if ("routes".equals(elementName)) {
- elementName = "camelContext";
- }
- Integer countObject = nodeCounts.get(elementName);
- int count = countObject != null ? countObject.intValue() : 0;
- nodeCounts.put(elementName, ++count);
- answer = element.getAttribute("id");
- if (Strings.isBlank(answer)) {
- answer = "_" + elementName + count;
- }
- }
- return answer;
- }
-
- private static NodeList getCamelContextElements(Document dom) {
- NodeList camels = dom.getElementsByTagName("camelContext");
- if (camels == null || camels.getLength() == 0) {
- camels = dom.getElementsByTagName("routes");
- }
- return camels;
- }
-
- private static boolean equal(Object a, Object b) {
- return a == b ? true : a != null && b != null && a.equals(b);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/XmlLineNumberParser.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/XmlLineNumberParser.java b/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/XmlLineNumberParser.java
deleted file mode 100644
index b214b1e..0000000
--- a/tooling/route-parser/src/main/java/org/apache/camel/parser/helper/XmlLineNumberParser.java
+++ /dev/null
@@ -1,197 +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.parser.helper;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringReader;
-import java.util.Stack;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * An XML parser that uses SAX to include line and column number for each XML element in the parsed Document.
- * <p/>
- * The line number and column number can be obtained from a Node/Element using
- * <pre>
- * String lineNumber = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER);
- * String lineNumberEnd = (String) node.getUserData(XmlLineNumberParser.LINE_NUMBER_END);
- * String columnNumber = (String) node.getUserData(XmlLineNumberParser.COLUMN_NUMBER);
- * String columnNumberEnd = (String) node.getUserData(XmlLineNumberParser.COLUMN_NUMBER_END);
- * </pre>
- */
-public final class XmlLineNumberParser {
-
- public static final String LINE_NUMBER = "lineNumber";
- public static final String COLUMN_NUMBER = "colNumber";
- public static final String LINE_NUMBER_END = "lineNumberEnd";
- public static final String COLUMN_NUMBER_END = "colNumberEnd";
-
- private XmlLineNumberParser() {
- }
-
- /**
- * Parses the XML.
- *
- * @param is the XML content as an input stream
- * @return the DOM model
- * @throws Exception is thrown if error parsing
- */
- public static Document parseXml(final InputStream is) throws Exception {
- return parseXml(is, null, null);
- }
-
- /**
- * Parses the XML.
- *
- * @param is the XML content as an input stream
- * @param rootNames one or more root names that is used as baseline for beginning the parsing, for example camelContext to start parsing
- * when Camel is discovered. Multiple names can be defined separated by comma
- * @param forceNamespace an optional namespace to force assign to each node. This may be needed for JAXB unmarshalling from XML -> POJO.
- * @return the DOM model
- * @throws Exception is thrown if error parsing
- */
- public static Document parseXml(final InputStream is, final String rootNames, final String forceNamespace) throws Exception {
- final Document doc;
- SAXParser parser;
- final SAXParserFactory factory = SAXParserFactory.newInstance();
- parser = factory.newSAXParser();
- final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- // turn off validator and loading external dtd
- dbf.setValidating(false);
- dbf.setNamespaceAware(true);
- dbf.setFeature("http://xml.org/sax/features/namespaces", false);
- dbf.setFeature("http://xml.org/sax/features/validation", false);
- dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
- dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
- dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
- dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
- final DocumentBuilder docBuilder = dbf.newDocumentBuilder();
- doc = docBuilder.newDocument();
-
- final Stack<Element> elementStack = new Stack<Element>();
- final StringBuilder textBuffer = new StringBuilder();
- final DefaultHandler handler = new DefaultHandler() {
- private Locator locator;
- private boolean found;
-
- @Override
- public void setDocumentLocator(final Locator locator) {
- this.locator = locator; // Save the locator, so that it can be used later for line tracking when traversing nodes.
- this.found = rootNames == null;
- }
-
- private boolean isRootName(String qName) {
- for (String root : rootNames.split(",")) {
- if (qName.equals(root)) {
- return true;
- }
- }
- return false;
- }
-
- @Override
- public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) throws SAXException {
- addTextIfNeeded();
-
- if (rootNames != null && !found) {
- if (isRootName(qName)) {
- found = true;
- }
- }
-
- if (found) {
- Element el;
- if (forceNamespace != null) {
- el = doc.createElementNS(forceNamespace, qName);
- } else {
- el = doc.createElement(qName);
- }
-
- for (int i = 0; i < attributes.getLength(); i++) {
- el.setAttribute(attributes.getQName(i), attributes.getValue(i));
- }
-
- el.setUserData(LINE_NUMBER, String.valueOf(this.locator.getLineNumber()), null);
- el.setUserData(COLUMN_NUMBER, String.valueOf(this.locator.getColumnNumber()), null);
- elementStack.push(el);
- }
- }
-
- @Override
- public void endElement(final String uri, final String localName, final String qName) {
- if (!found) {
- return;
- }
-
- addTextIfNeeded();
-
- final Element closedEl = elementStack.isEmpty() ? null : elementStack.pop();
- if (closedEl != null) {
- if (elementStack.isEmpty()) {
- // Is this the root element?
- doc.appendChild(closedEl);
- } else {
- final Element parentEl = elementStack.peek();
- parentEl.appendChild(closedEl);
- }
-
- closedEl.setUserData(LINE_NUMBER_END, String.valueOf(this.locator.getLineNumber()), null);
- closedEl.setUserData(COLUMN_NUMBER_END, String.valueOf(this.locator.getColumnNumber()), null);
- }
- }
-
- @Override
- public void characters(final char ch[], final int start, final int length) throws SAXException {
- textBuffer.append(ch, start, length);
- }
-
- @Override
- public InputSource resolveEntity(String publicId, String systemId) throws IOException, SAXException {
- // do not resolve external dtd
- return new InputSource(new StringReader(""));
- }
-
- // Outputs text accumulated under the current node
- private void addTextIfNeeded() {
- if (textBuffer.length() > 0) {
- final Element el = elementStack.isEmpty() ? null : elementStack.peek();
- if (el != null) {
- final Node textNode = doc.createTextNode(textBuffer.toString());
- el.appendChild(textNode);
- textBuffer.delete(0, textBuffer.length());
- }
- }
- }
- };
- parser.parse(is, handler);
-
- return doc;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/java/org/apache/camel/parser/model/CamelEndpointDetails.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/java/org/apache/camel/parser/model/CamelEndpointDetails.java b/tooling/route-parser/src/main/java/org/apache/camel/parser/model/CamelEndpointDetails.java
deleted file mode 100644
index 3b112a4..0000000
--- a/tooling/route-parser/src/main/java/org/apache/camel/parser/model/CamelEndpointDetails.java
+++ /dev/null
@@ -1,175 +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.parser.model;
-
-/**
- * Details about a parsed and discovered Camel endpoint.
- */
-public class CamelEndpointDetails {
-
- private String fileName;
- private String lineNumber;
- private String lineNumberEnd;
- private String className;
- private String methodName;
- private String endpointComponentName;
- private String endpointInstance;
- private String endpointUri;
- private boolean consumerOnly;
- private boolean producerOnly;
-
- public String getFileName() {
- return fileName;
- }
-
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- public String getLineNumber() {
- return lineNumber;
- }
-
- public void setLineNumber(String lineNumber) {
- this.lineNumber = lineNumber;
- }
-
- public String getLineNumberEnd() {
- return lineNumberEnd;
- }
-
- public void setLineNumberEnd(String lineNumberEnd) {
- this.lineNumberEnd = lineNumberEnd;
- }
-
- public String getClassName() {
- return className;
- }
-
- public void setClassName(String className) {
- this.className = className;
- }
-
- public String getMethodName() {
- return methodName;
- }
-
- public void setMethodName(String methodName) {
- this.methodName = methodName;
- }
-
- public String getEndpointComponentName() {
- return endpointComponentName;
- }
-
- public void setEndpointComponentName(String endpointComponentName) {
- this.endpointComponentName = endpointComponentName;
- }
-
- public String getEndpointInstance() {
- return endpointInstance;
- }
-
- public void setEndpointInstance(String endpointInstance) {
- this.endpointInstance = endpointInstance;
- }
-
- public String getEndpointUri() {
- return endpointUri;
- }
-
- public void setEndpointUri(String endpointUri) {
- this.endpointUri = endpointUri;
- }
-
- public boolean isConsumerOnly() {
- return consumerOnly;
- }
-
- public void setConsumerOnly(boolean consumerOnly) {
- this.consumerOnly = consumerOnly;
- }
-
- public boolean isProducerOnly() {
- return producerOnly;
- }
-
- public void setProducerOnly(boolean producerOnly) {
- this.producerOnly = producerOnly;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
-
- CamelEndpointDetails that = (CamelEndpointDetails) o;
-
- if (!fileName.equals(that.fileName)) {
- return false;
- }
- if (lineNumber != null ? !lineNumber.equals(that.lineNumber) : that.lineNumber != null) {
- return false;
- }
- if (lineNumberEnd != null ? !lineNumberEnd.equals(that.lineNumberEnd) : that.lineNumberEnd != null) {
- return false;
- }
- if (!className.equals(that.className)) {
- return false;
- }
- if (methodName != null ? !methodName.equals(that.methodName) : that.methodName != null) {
- return false;
- }
- if (endpointInstance != null ? !endpointInstance.equals(that.endpointInstance) : that.endpointInstance != null) {
- return false;
- }
- return endpointUri.equals(that.endpointUri);
-
- }
-
- @Override
- public int hashCode() {
- int result = fileName.hashCode();
- result = 31 * result + (lineNumber != null ? lineNumber.hashCode() : 0);
- result = 31 * result + (lineNumberEnd != null ? lineNumberEnd.hashCode() : 0);
- result = 31 * result + className.hashCode();
- result = 31 * result + (methodName != null ? methodName.hashCode() : 0);
- result = 31 * result + (endpointInstance != null ? endpointInstance.hashCode() : 0);
- result = 31 * result + endpointUri.hashCode();
- return result;
- }
-
- @Override
- public String toString() {
- return "CamelEndpointDetails["
- + "fileName='" + fileName + '\''
- + ", lineNumber='" + lineNumber + '\''
- + ", lineNumberEnd='" + lineNumberEnd + '\''
- + ", className='" + className + '\''
- + ", methodName='" + methodName + '\''
- + ", endpointComponentName='" + endpointComponentName + '\''
- + ", endpointInstance='" + endpointInstance + '\''
- + ", endpointUri='" + endpointUri + '\''
- + ", consumerOnly=" + consumerOnly
- + ", producerOnly=" + producerOnly
- + ']';
- }
-}
http://git-wip-us.apache.org/repos/asf/camel/blob/550186e9/tooling/route-parser/src/main/java/org/apache/camel/parser/model/CamelSimpleExpressionDetails.java
----------------------------------------------------------------------
diff --git a/tooling/route-parser/src/main/java/org/apache/camel/parser/model/CamelSimpleExpressionDetails.java b/tooling/route-parser/src/main/java/org/apache/camel/parser/model/CamelSimpleExpressionDetails.java
deleted file mode 100644
index 9d6db11..0000000
--- a/tooling/route-parser/src/main/java/org/apache/camel/parser/model/CamelSimpleExpressionDetails.java
+++ /dev/null
@@ -1,101 +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.parser.model;
-
-/**
- * Details about a parsed and discovered Camel simple expression.
- */
-public class CamelSimpleExpressionDetails {
-
- private String fileName;
- private String lineNumber;
- private String lineNumberEnd;
- private String className;
- private String methodName;
- private String simple;
- private boolean predicate;
- private boolean expression;
-
- public String getFileName() {
- return fileName;
- }
-
- public void setFileName(String fileName) {
- this.fileName = fileName;
- }
-
- public String getLineNumber() {
- return lineNumber;
- }
-
- public void setLineNumber(String lineNumber) {
- this.lineNumber = lineNumber;
- }
-
- public String getLineNumberEnd() {
- return lineNumberEnd;
- }
-
- public void setLineNumberEnd(String lineNumberEnd) {
- this.lineNumberEnd = lineNumberEnd;
- }
-
- public String getClassName() {
- return className;
- }
-
- public void setClassName(String className) {
- this.className = className;
- }
-
- public String getMethodName() {
- return methodName;
- }
-
- public void setMethodName(String methodName) {
- this.methodName = methodName;
- }
-
- public String getSimple() {
- return simple;
- }
-
- public void setSimple(String simple) {
- this.simple = simple;
- }
-
- public boolean isPredicate() {
- return predicate;
- }
-
- public void setPredicate(boolean predicate) {
- this.predicate = predicate;
- }
-
- public boolean isExpression() {
- return expression;
- }
-
- public void setExpression(boolean expression) {
- this.expression = expression;
- }
-
- @Override
- public String toString() {
- return simple;
- }
-}