Skip to content

Commit 96f5834

Browse files
committed
camel: fix null pointer exceptions
- when camel context is provided - when looking bean by name - Add more constructors to CamelModule
1 parent 6875b8c commit 96f5834

File tree

3 files changed

+48
-12
lines changed

3 files changed

+48
-12
lines changed

modules/jooby-bom/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@
317317
<plugin>
318318
<groupId>com.diffplug.spotless</groupId>
319319
<artifactId>spotless-maven-plugin</artifactId>
320-
<version>2.36.0</version>
320+
<version>2.27.2</version>
321321
<configuration>
322322
<skip>true</skip>
323323
</configuration>

modules/jooby-camel/src/main/java/io/jooby/camel/CamelModule.java

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,15 @@ public class CamelModule implements Extension {
6161

6262
private CamelContext camel;
6363

64+
/** Creates module using the {@link CamelContext}. */
65+
public CamelModule() {}
66+
6467
/**
6568
* Creates module using the {@link CamelContext}.
6669
*
6770
* @param camel Camel context.
6871
*/
69-
public CamelModule(CamelContext camel) {
72+
public CamelModule(@NonNull CamelContext camel) {
7073
this.camel = camel;
7174
}
7275

@@ -76,7 +79,19 @@ public CamelModule(CamelContext camel) {
7679
* @param route Route configuration.
7780
* @param routes Optional route configuration.
7881
*/
79-
public CamelModule(RouteBuilder route, RouteBuilder... routes) {
82+
public CamelModule(@NonNull RouteBuilder route, RouteBuilder... routes) {
83+
this(null, route, routes);
84+
}
85+
86+
/**
87+
* Creates a new camel module adding one or more routes.
88+
*
89+
* @param route Route configuration.
90+
* @param routes Optional route configuration.
91+
*/
92+
public CamelModule(
93+
@NonNull CamelContext camel, @NonNull RouteBuilder route, RouteBuilder... routes) {
94+
this.camel = camel;
8095
this.routes = registry -> concat(route, routes).collect(Collectors.toList());
8196
}
8297

@@ -88,11 +103,29 @@ public CamelModule(RouteBuilder route, RouteBuilder... routes) {
88103
* @param route Route configuration.
89104
* @param routes Optional route configuration.
90105
*/
91-
public CamelModule(Class<? extends RouteBuilder> route, Class<? extends RouteBuilder>... routes) {
106+
public CamelModule(
107+
@NonNull Class<? extends RouteBuilder> route,
108+
@NonNull Class<? extends RouteBuilder>... routes) {
109+
this(null, route, routes);
110+
}
111+
112+
/**
113+
* Creates a new camel module adding one or more routes. Route provisioning is delegated to
114+
* Dependency Injection framework (if any), otherwise camel does basic/minimal injection using
115+
* {@link org.apache.camel.impl.engine.DefaultInjector}.
116+
*
117+
* @param route Route configuration.
118+
* @param routes Optional route configuration.
119+
*/
120+
public CamelModule(
121+
@NonNull CamelContext camel,
122+
@NonNull Class<? extends RouteBuilder> route,
123+
Class<? extends RouteBuilder>... routes) {
124+
this.camel = camel;
92125
this.routes =
93-
camel ->
126+
context ->
94127
concat(route, routes)
95-
.map(type -> camel.getInjector().newInstance(type))
128+
.map(type -> context.getInjector().newInstance(type))
96129
.collect(Collectors.toList());
97130
}
98131

@@ -130,9 +163,11 @@ public void install(@NonNull Jooby application) throws Exception {
130163
main.init();
131164

132165
// Do routes
133-
List<RouteBuilder> routeList = routes.apply(camel);
134-
for (RouteBuilder route : routeList) {
135-
camel.addRoutes(route);
166+
if (routes != null) {
167+
List<RouteBuilder> routeList = routes.apply(camel);
168+
for (RouteBuilder route : routeList) {
169+
camel.addRoutes(route);
170+
}
136171
}
137172
// Start camel:
138173
main.start();

modules/jooby-camel/src/main/java/io/jooby/internal/camel/JoobyBeanRepository.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,13 @@ private <T> Object getBean(ServiceKey<T> key) {
7070
}
7171

7272
private Provider beanByName(String beanId) {
73-
return findBean(
73+
var entry =
74+
findBean(
7475
key ->
7576
ofNullable(key.getName())
7677
.orElseGet(() -> camelBeanId(key.getType()))
77-
.equals(beanId))
78-
.getValue();
78+
.equals(beanId));
79+
return entry == null ? null : entry.getValue();
7980
}
8081

8182
private Map.Entry<ServiceKey<?>, Provider<?>> beanByType(Class type) {

0 commit comments

Comments
 (0)