Skip to content

Commit e8e78c0

Browse files
mlopezFCjavier-godoy
authored andcommitted
feat: use automatic endpoint configuration in hilla projects
closes Exception when the application does not have a dependency with Hilla #98
1 parent e39727d commit e8e78c0

File tree

3 files changed

+46
-14
lines changed

3 files changed

+46
-14
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.flowingcode.addons.applayout.listener;
2+
3+
import java.util.List;
4+
5+
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
7+
import org.springframework.context.ApplicationContext;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.Configuration;
10+
11+
import com.flowingcode.addons.applayout.endpoint.MenuEndpoint;
12+
import com.flowingcode.addons.applayout.endpoint.MenuItemsProvider;
13+
14+
import dev.hilla.EndpointControllerConfiguration;
15+
import dev.hilla.EndpointRegistry;
16+
17+
@Configuration
18+
@ConditionalOnClass(value = EndpointControllerConfiguration.class)
19+
public class HillaAutoConfiguration {
20+
21+
@Bean
22+
public RegisterEndpointServiceInitListener registerEndpointServiceInitListener(
23+
@Autowired EndpointRegistry endpointRegistry, @Autowired ApplicationContext applicationContext) {
24+
return new RegisterEndpointServiceInitListener(endpointRegistry, applicationContext);
25+
}
26+
27+
@Bean MenuEndpoint menuEndpoint(List<MenuItemsProvider> menuItemsProviders) {
28+
return new MenuEndpoint(menuItemsProviders);
29+
}
30+
31+
}

src/main/java/com/flowingcode/addons/applayout/listener/RegisterEndpointServiceInitListener.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,29 @@
2121

2222
import java.lang.reflect.InvocationTargetException;
2323
import java.lang.reflect.Method;
24+
25+
import org.springframework.context.ApplicationContext;
26+
2427
import com.flowingcode.addons.applayout.endpoint.MenuEndpoint;
2528
import com.vaadin.flow.server.ServiceInitEvent;
2629
import com.vaadin.flow.server.VaadinServiceInitListener;
27-
import org.springframework.beans.BeansException;
28-
import org.springframework.context.ApplicationContext;
29-
import org.springframework.context.ApplicationContextAware;
30-
import org.springframework.stereotype.Component;
30+
3131
import dev.hilla.Endpoint;
3232
import dev.hilla.EndpointRegistry;
3333

34-
@Component
35-
public class RegisterEndpointServiceInitListener implements VaadinServiceInitListener, ApplicationContextAware {
34+
@SuppressWarnings("serial")
35+
public class RegisterEndpointServiceInitListener implements VaadinServiceInitListener{
3636

37-
private static ApplicationContext context;
37+
private ApplicationContext context;
3838

3939
private transient EndpointRegistry endpointRegistry;
4040

41-
@Override
41+
public RegisterEndpointServiceInitListener(EndpointRegistry endpointRegistry2, ApplicationContext context) {
42+
this.endpointRegistry = endpointRegistry2;
43+
this.context = context;
44+
}
45+
46+
@Override
4247
public void serviceInit(ServiceInitEvent event) {
4348
endpointRegistry = context.getBean(EndpointRegistry.class);
4449
context.getBeansWithAnnotation(Endpoint.class)
@@ -58,10 +63,5 @@ private void registerEndpoint(Object endpointBean) {
5863
throw new IllegalStateException("Problem registering endpoint",e);
5964
}
6065
}
61-
62-
@Override
63-
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
64-
context = applicationContext;
65-
}
66-
66+
6767
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.flowingcode.addons.applayout.listener.HillaAutoConfiguration

0 commit comments

Comments
 (0)