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