You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by GitBox <gi...@apache.org> on 2018/09/15 13:56:29 UTC

[GitHub] nicolaferraro closed pull request #79: jvm: improve language detection

nicolaferraro closed pull request #79: jvm: improve language detection
URL: https://github.com/apache/camel-k/pull/79
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Application.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Application.java
index 8db2740..acb25f3 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Application.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Application.java
@@ -39,24 +39,24 @@
     private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);
 
     public static void main(String[] args) throws Exception {
-        final String resource = System.getenv(Routes.ENV_CAMEL_K_ROUTES_URI);
-        final String language = System.getenv(Routes.ENV_CAMEL_K_ROUTES_LANGUAGE);
+        final String resource = System.getenv(Constants.ENV_CAMEL_K_ROUTES_URI);
+        final String language = System.getenv(Constants.ENV_CAMEL_K_ROUTES_LANGUAGE);
 
         if (ObjectHelper.isEmpty(resource)) {
-            throw new IllegalStateException("No valid resource found in " + Routes.ENV_CAMEL_K_ROUTES_URI + " environment variable");
+            throw new IllegalStateException("No valid resource found in " + Constants.ENV_CAMEL_K_ROUTES_URI + " environment variable");
         }
 
         String locations = computePropertyPlaceholderLocations();
-        RoutesLoader loader = Routes.loaderFor(resource, language);
+        RoutesLoader loader = RoutesLoaders.loaderFor(resource, language);
         RouteBuilder routes = loader.load(resource);
 
         if (routes == null) {
             throw new IllegalStateException("Unable to load route from: " + resource);
         }
 
-        LOGGER.info("Routes    : {}", resource);
-        LOGGER.info("Language  : {}", language);
-        LOGGER.info("Locations : {}", locations);
+        LOGGER.info("Routes: {}", resource);
+        LOGGER.info("Language: {}", language);
+        LOGGER.info("Locations: {}", locations);
 
         Main main = new Main();
 
@@ -75,8 +75,8 @@ public static void main(String[] args) throws Exception {
     // *******************************
 
     private static String computePropertyPlaceholderLocations() throws IOException {
-        final String conf = System.getenv(Routes.ENV_CAMEL_K_CONF);
-        final String confd = System.getenv(Routes.ENV_CAMEL_K_CONF_D);
+        final String conf = System.getenv(Constants.ENV_CAMEL_K_CONF);
+        final String confd = System.getenv(Constants.ENV_CAMEL_K_CONF_D);
         final List<String> locations = new ArrayList<>();
 
         // Main location
diff --git a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/ApplicationTest.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Constants.java
similarity index 63%
rename from runtime/jvm/src/test/java/org/apache/camel/k/jvm/ApplicationTest.java
rename to runtime/jvm/src/main/java/org/apache/camel/k/jvm/Constants.java
index 0b576dd..0e9bcae 100644
--- a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/ApplicationTest.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Constants.java
@@ -16,14 +16,14 @@
  */
 package org.apache.camel.k.jvm;
 
-import org.junit.Ignore;
-import org.junit.Test;
+public final class Constants {
+    public static final String ENV_CAMEL_K_ROUTES_URI = "CAMEL_K_ROUTES_URI";
+    public static final String ENV_CAMEL_K_ROUTES_LANGUAGE = "CAMEL_K_ROUTES_LANGUAGE";
+    public static final String ENV_CAMEL_K_CONF = "CAMEL_K_CONF";
+    public static final String ENV_CAMEL_K_CONF_D = "CAMEL_K_CONF_D";
+    public static final String SCHEME_CLASSPATH = "classpath:";
+    public static final String SCHEME_FILE = "file:";
 
-public class ApplicationTest {
-    @Test
-    @Ignore
-    public void applicationTest() throws Exception {
-        Application.main(new String[] { MyRoutes.class.getCanonicalName() });
+    private Constants() {
     }
-
 }
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Language.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Language.java
new file mode 100644
index 0000000..a2a8377
--- /dev/null
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Language.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.k.jvm;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+
+public enum Language {
+    Unknow("", Collections.emptyList()),
+    JavaClass("class", Collections.singletonList("class")),
+    JavaSource("java", Collections.singletonList("java")),
+    JavaScript("js", Collections.singletonList("js")),
+    Groovy("groovy", Collections.singletonList("groovy")),
+    Xml("xml", Collections.singletonList("xml"));
+
+    private final String name;
+    private final List<String> extensions;
+
+    Language(String name, List<String> extensions) {
+        this.name = name;
+        this.extensions = extensions;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public List<String> getExtensions() {
+        return extensions;
+    }
+
+    public static Language fromLanguageName(String name) {
+        for (Language language: values()) {
+            if (language.getName().equals(name)) {
+                return language;
+            }
+        }
+
+        return Unknow;
+    }
+
+    public static Language fromResource(String resource) {
+        for (Language language: values()) {
+            String path = StringUtils.substringAfter(resource, ":");
+
+            for (String ext : language.getExtensions()) {
+                if (path.endsWith("." + ext)) {
+                    return language;
+                }
+            }
+        }
+
+        return Unknow;
+    }
+}
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Routes.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Routes.java
deleted file mode 100644
index cfe0f13..0000000
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/Routes.java
+++ /dev/null
@@ -1,90 +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.k.jvm;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-
-import org.apache.camel.util.ObjectHelper;
-import org.apache.commons.lang3.StringUtils;
-
-public final class Routes {
-    public static final String ENV_CAMEL_K_ROUTES_URI = "CAMEL_K_ROUTES_URI";
-    public static final String ENV_CAMEL_K_ROUTES_LANGUAGE = "CAMEL_K_ROUTES_LANGUAGE";
-    public static final String ENV_CAMEL_K_CONF = "CAMEL_K_CONF";
-    public static final String ENV_CAMEL_K_CONF_D = "CAMEL_K_CONF_D";
-    public static final String SCHEME_CLASSPATH = "classpath:";
-    public static final String SCHEME_FILE = "file:";
-
-    private Routes() {
-    }
-
-    public static boolean isScripting(String resource) {
-        return resource.endsWith(".java") || resource.endsWith(".js") || resource.endsWith(".groovy") || resource.endsWith(".xml");
-    }
-
-    public static RoutesLoader loaderForLanguage(String language) {
-        for (RoutesLoader loader: RoutesLoaders.values()) {
-            if (loader.getSupportedLanguages().contains(language)) {
-                return loader;
-            }
-        }
-
-        throw new IllegalArgumentException("Unable to find loader for language: " + language);
-    }
-
-    public static RoutesLoader loaderForResource(String resource) {
-        if (!resource.startsWith(SCHEME_CLASSPATH) && !resource.startsWith(SCHEME_FILE)) {
-            throw new IllegalArgumentException("No valid resource format, expected scheme:path, found " + resource);
-        }
-
-        for (RoutesLoader loader: RoutesLoaders.values()) {
-            if (loader.test(resource)) {
-                return loader;
-            }
-        }
-
-        throw new IllegalArgumentException("Unable to find loader for: " + resource);
-    }
-
-    public static RoutesLoader loaderFor(String resource, String language) {
-        if (!resource.startsWith(SCHEME_CLASSPATH) && !resource.startsWith(SCHEME_FILE)) {
-            throw new IllegalArgumentException("No valid resource format, expected scheme:path, found " + resource);
-        }
-
-        return ObjectHelper.isEmpty(language)
-            ? loaderForResource(resource)
-            : loaderForLanguage(language);
-    }
-
-    static InputStream loadResourceAsInputStream(String resource) throws IOException {
-        if (resource.startsWith(SCHEME_CLASSPATH)) {
-            String location = StringUtils.removeStart(resource, SCHEME_CLASSPATH);
-            if (!location.startsWith("/")) {
-                location = "/" + location;
-            }
-
-            return Application.class.getResourceAsStream(location);
-        } else {
-            return Files.newInputStream(
-                Paths.get(resource.substring(SCHEME_FILE.length()))
-            );
-        }
-    }
-}
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoader.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoader.java
index 1446b55..641f08c 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoader.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoader.java
@@ -17,17 +17,16 @@
 package org.apache.camel.k.jvm;
 
 import java.util.List;
-import java.util.function.Predicate;
 
 import org.apache.camel.builder.RouteBuilder;
 
-public interface RoutesLoader extends Predicate<String> {
+public interface RoutesLoader {
     /**
      * Provides a list of the languages supported by this loader.
      *
      * @return the supported languages.
      */
-    List<String> getSupportedLanguages();
+    List<Language> getSupportedLanguages();
 
     /**
      * Creates a camel {@link RouteBuilder} from the given resource.
diff --git a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java
index c0489ec..cc07cc2 100644
--- a/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java
+++ b/runtime/jvm/src/main/java/org/apache/camel/k/jvm/RoutesLoaders.java
@@ -20,7 +20,7 @@
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.function.Function;
 import javax.script.Bindings;
@@ -35,30 +35,29 @@
 import org.apache.camel.Component;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.RoutesDefinition;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.ResourceHelper;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.codehaus.groovy.control.CompilerConfiguration;
 import org.joor.Reflect;
 
-import static org.apache.camel.k.jvm.Routes.SCHEME_CLASSPATH;
+import static org.apache.camel.k.jvm.Constants.SCHEME_CLASSPATH;
+import static org.apache.camel.k.jvm.Constants.SCHEME_FILE;
 
 public enum RoutesLoaders implements RoutesLoader {
     JavaClass {
         @Override
-        public List<String> getSupportedLanguages() {
-            return Arrays.asList("class");
-        }
-
-        @Override
-        public boolean test(String resource) {
-            //TODO: add support for compiled classes
-            return !Routes.isScripting(resource) && !resource.endsWith(".class");
+        public List<Language> getSupportedLanguages() {
+            return Collections.singletonList(Language.JavaClass);
         }
 
         @Override
         public RouteBuilder load(String resource) throws Exception {
-            String path = resource.substring(SCHEME_CLASSPATH.length());
+            String path = resource;
+            path = StringUtils.removeStart(path, SCHEME_CLASSPATH);
+            path = StringUtils.removeEnd(path, ".class");
+
             Class<?> type = Class.forName(path);
 
             if (!RouteBuilder.class.isAssignableFrom(type)) {
@@ -70,44 +69,36 @@ public RouteBuilder load(String resource) throws Exception {
     },
     JavaSource {
         @Override
-        public List<String> getSupportedLanguages() {
-            return Arrays.asList("java");
-        }
-
-        @Override
-        public boolean test(String resource) {
-            String ext = StringUtils.substringAfterLast(resource, ".");
-            List<String> langs = getSupportedLanguages();
-
-            return langs.contains(ext);
+        public List<Language> getSupportedLanguages() {
+            return Collections.singletonList(Language.JavaSource);
         }
 
         @Override
         public RouteBuilder load(String resource) throws Exception {
-            try (InputStream is = Routes.loadResourceAsInputStream(resource)) {
-                String name = StringUtils.substringAfter(resource, ":");
-                name = StringUtils.removeEnd(name, ".java");
-
-                if (name.contains("/")) {
-                    name = StringUtils.substringAfterLast(name, "/");
+            return new RouteBuilder() {
+                @Override
+                public void configure() throws Exception {
+                    try (InputStream is = ResourceHelper.resolveMandatoryResourceAsInputStream(getContext(), resource)) {
+                        String name = StringUtils.substringAfter(resource, ":");
+                        name = StringUtils.removeEnd(name, ".java");
+
+                        if (name.contains("/")) {
+                            name = StringUtils.substringAfterLast(name, "/");
+                        }
+
+                        // Wrap routes builder
+                        addRoutes(
+                            Reflect.compile(name, IOUtils.toString(is, StandardCharsets.UTF_8)).create().get()
+                        );
+                    }
                 }
-                
-                return Reflect.compile(name, IOUtils.toString(is, StandardCharsets.UTF_8)).create().get();
-            }
+            };
         }
     },
     JavaScript {
         @Override
-        public List<String> getSupportedLanguages() {
-            return Arrays.asList("js");
-        }
-
-        @Override
-        public boolean test(String resource) {
-            String ext = StringUtils.substringAfterLast(resource, ".");
-            List<String> langs = getSupportedLanguages();
-
-            return langs.contains(ext);
+        public List<Language> getSupportedLanguages() {
+            return Collections.singletonList(Language.JavaScript);
         }
 
         @Override
@@ -126,7 +117,7 @@ public void configure() throws Exception {
                     bindings.put("components", new Components(context));
                     bindings.put("from", (Function<String, RouteDefinition>) uri -> from(uri));
 
-                    try (InputStream is = Routes.loadResourceAsInputStream(resource)) {
+                    try (InputStream is = ResourceHelper.resolveMandatoryResourceAsInputStream(context, resource)) {
                         engine.eval(new InputStreamReader(is), bindings);
                     }
                 }
@@ -135,16 +126,8 @@ public void configure() throws Exception {
     },
     Groovy {
         @Override
-        public List<String> getSupportedLanguages() {
-            return Arrays.asList("groovy");
-        }
-
-        @Override
-        public boolean test(String resource) {
-            String ext = StringUtils.substringAfterLast(resource, ".");
-            List<String> langs = getSupportedLanguages();
-
-            return langs.contains(ext);
+        public List<Language> getSupportedLanguages() {
+            return Collections.singletonList(Language.Groovy);
         }
 
         @Override
@@ -158,7 +141,7 @@ public void configure() throws Exception {
                     ClassLoader cl = Thread.currentThread().getContextClassLoader();
                     GroovyShell sh = new GroovyShell(cl, new Binding(), cc);
 
-                    try (InputStream is = Routes.loadResourceAsInputStream(resource)) {
+                    try (InputStream is = ResourceHelper.resolveMandatoryResourceAsInputStream(getContext(), resource)) {
                         Reader reader = new InputStreamReader(is);
                         DelegatingScript script = (DelegatingScript) sh.parse(reader);
 
@@ -172,16 +155,8 @@ public void configure() throws Exception {
     },
     Xml {
         @Override
-        public List<String> getSupportedLanguages() {
-            return Arrays.asList("xml");
-        }
-
-        @Override
-        public boolean test(String resource) {
-            String ext = StringUtils.substringAfterLast(resource, ".");
-            List<String> langs = getSupportedLanguages();
-
-            return langs.contains(ext);
+        public List<Language> getSupportedLanguages() {
+            return Collections.singletonList(Language.Xml);
         }
 
         @Override
@@ -189,17 +164,34 @@ public RouteBuilder load(String resource) throws Exception {
             return new RouteBuilder() {
                 @Override
                 public void configure() throws Exception {
-                    try (InputStream is = Routes.loadResourceAsInputStream(resource)) {
-                        final CamelContext context = getContext();
-                        final RoutesDefinition definitions = context.loadRoutesDefinition(is);
-
-                        setRouteCollection(definitions);
+                    try (InputStream is = ResourceHelper.resolveMandatoryResourceAsInputStream(getContext(), resource)) {
+                        setRouteCollection(
+                            getContext().loadRoutesDefinition(is)
+                        );
                     }
                 }
             };
         }
     };
 
+    public static RoutesLoader loaderFor(String resource, String languageName) {
+        if (!resource.startsWith(SCHEME_CLASSPATH) && !resource.startsWith(SCHEME_FILE)) {
+            throw new IllegalArgumentException("No valid resource format, expected scheme:path, found " + resource);
+        }
+
+        Language language = ObjectHelper.isNotEmpty(languageName)
+            ? Language.fromLanguageName(languageName)
+            : Language.fromResource(resource);
+
+        for (RoutesLoader loader: RoutesLoaders.values()) {
+            if (loader.getSupportedLanguages().contains(language)) {
+                return loader;
+            }
+        }
+
+        throw new IllegalArgumentException("Unable to find loader for: resource=" + resource + " language=" + languageName);
+    }
+
     // ********************************
     //
     // Helpers
diff --git a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/MyRoutes.java b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/MyRoutes.java
deleted file mode 100644
index 3869f2d..0000000
--- a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/MyRoutes.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.k.jvm;
-
-import org.apache.camel.builder.RouteBuilder;
-
-public class MyRoutes extends RouteBuilder {
-    @Override
-    public void configure() throws Exception {
-        from("timer:tick")
-                .to("log:info");
-    }
-}
\ No newline at end of file
diff --git a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
index d281085..4b2090f 100644
--- a/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
+++ b/runtime/jvm/src/test/java/org/apache/camel/k/jvm/RoutesLoadersTest.java
@@ -29,8 +29,8 @@
 
     @Test
     public void testLoadClass() throws Exception {
-        String resource = "classpath:" + MyRoutes.class.getCanonicalName();
-        RoutesLoader loader = Routes.loaderForResource(resource);
+        String resource = "classpath:" + MyRoutes.class.getName() + ".class";
+        RoutesLoader loader = RoutesLoaders.loaderFor(resource, null);
         RouteBuilder builder = loader.load(resource);
 
         assertThat(loader).isSameAs(RoutesLoaders.JavaClass);
@@ -47,7 +47,7 @@ public void testLoadClass() throws Exception {
     @Test
     public void testLoadJava() throws Exception {
         String resource = "classpath:MyRoutes.java";
-        RoutesLoader loader = Routes.loaderForResource(resource);
+        RoutesLoader loader = RoutesLoaders.loaderFor(resource, null);
         RouteBuilder builder = loader.load(resource);
 
         assertThat(loader).isSameAs(RoutesLoaders.JavaSource);
@@ -64,7 +64,7 @@ public void testLoadJava() throws Exception {
     @Test
     public void testLoadJavaScript() throws Exception {
         String resource = "classpath:routes.js";
-        RoutesLoader loader = Routes.loaderForResource(resource);
+        RoutesLoader loader = RoutesLoaders.loaderFor(resource, null);
         RouteBuilder builder = loader.load(resource);
 
         assertThat(loader).isSameAs(RoutesLoaders.JavaScript);
@@ -81,7 +81,7 @@ public void testLoadJavaScript() throws Exception {
     @Test
     public void testLoadJavaScriptWithCustomExtension() throws Exception {
         String resource = "classpath:routes.mytype";
-        RoutesLoader loader = Routes.loaderFor(resource, "js");
+        RoutesLoader loader = RoutesLoaders.loaderFor(resource, "js");
         RouteBuilder builder = loader.load(resource);
 
         assertThat(loader).isSameAs(RoutesLoaders.JavaScript);
@@ -98,7 +98,7 @@ public void testLoadJavaScriptWithCustomExtension() throws Exception {
     @Test
     public void testLoadGroovy() throws Exception {
         String resource = "classpath:routes.groovy";
-        RoutesLoader loader = Routes.loaderForResource(resource);
+        RoutesLoader loader = RoutesLoaders.loaderFor(resource, null);
         RouteBuilder builder = loader.load(resource);
 
         assertThat(loader).isSameAs(RoutesLoaders.Groovy);
@@ -115,7 +115,7 @@ public void testLoadGroovy() throws Exception {
     @Test
     public void testLoadXml() throws Exception {
         String resource = "classpath:routes.xml";
-        RoutesLoader loader = Routes.loaderForResource(resource);
+        RoutesLoader loader = RoutesLoaders.loaderFor(resource, null);
         RouteBuilder builder = loader.load(resource);
 
         assertThat(loader).isSameAs(RoutesLoaders.Xml);
@@ -131,16 +131,25 @@ public void testLoadXml() throws Exception {
 
     @Test(expected = IllegalArgumentException.class)
     public void testResourceWithoutScheme() {
-        Routes.loaderForResource("routes.js");
+        RoutesLoaders.loaderFor("routes.js", null);
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testResourceWithIllegalScheme() {
-        Routes.loaderForResource("http:routes.js");
+        RoutesLoaders.loaderFor("http:routes.js", null);
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testUnsupportedLanguage() {
-        Routes.loaderForLanguage("  test");
+        RoutesLoaders.loaderFor("  test", null);
+    }
+
+
+    public static class MyRoutes extends RouteBuilder {
+        @Override
+        public void configure() throws Exception {
+            from("timer:tick")
+                .to("log:info");
+        }
     }
 }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services