Merge pull request #582 from lburgazzoli/language-resolver

Throw NoSuchLanguageException if a language cannot be found
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index fa2a9de..e864c84 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -24,6 +24,7 @@
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.Endpoint;
+import org.apache.camel.NoSuchLanguageException;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
@@ -177,7 +178,14 @@
         // languages are automatically discovered by build steps so we can reduce the
         // operations done by the standard resolver by looking them up directly from the
         // registry
-        return (name, context) -> context.getRegistry().lookupByNameAndType(name, Language.class);
+        return (name, context) -> {
+            Language answer = context.getRegistry().lookupByNameAndType(name, Language.class);
+            if (answer == null) {
+                throw new NoSuchLanguageException(name);
+            }
+
+            return answer;
+        };
     }
 
     @Override
diff --git a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
index 25e64fd..9aa932d 100644
--- a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
+++ b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
@@ -16,18 +16,18 @@
  */
 package org.apache.camel.quarkus.core;
 
-import java.util.Set;
-
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
 import javax.json.Json;
 import javax.json.JsonObject;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.NoSuchLanguageException;
 import org.apache.camel.component.log.LogComponent;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.support.processor.DefaultExchangeFormatter;
@@ -37,6 +37,8 @@
 public class CamelServlet {
     @Inject
     Registry registry;
+    @Inject
+    CamelContext context;
 
     @Path("/registry/log/exchange-formatter")
     @GET
@@ -78,7 +80,19 @@
     @GET
     @Produces(MediaType.TEXT_PLAIN)
     public String contextVersion() {
-        Set<CamelContext> camelContexts = registry.findByType(CamelContext.class);
-        return camelContexts.isEmpty() ? "" : camelContexts.iterator().next().getVersion();
+        return context.getVersion();
+    }
+
+    @Path("/language/{name}")
+    @GET
+    @Produces(MediaType.TEXT_PLAIN)
+    public boolean resolveLanguage(@PathParam("name") String name) {
+        try {
+            context.resolveLanguage(name);
+        } catch (NoSuchLanguageException e) {
+            return false;
+        }
+
+        return true;
     }
 }
diff --git a/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java b/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
index e5a9abd..a46c52c 100644
--- a/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
+++ b/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
@@ -50,4 +50,10 @@
     public void testCamelContextVersion() {
         RestAssured.when().get("/test/context/version").then().body(not(""));
     }
+
+    @Test
+    public void testResolveLanguages() {
+        RestAssured.when().get("/test/language/simple").then().body(is("true"));
+        RestAssured.when().get("/test/language/undefined").then().body(is("false"));
+    }
 }