Skip to content

Commit 993494b

Browse files
iroquetaBeta Bot
authored andcommitted
Cherry pick branch 'genexuslabs:fix/offlineeventreplicator_springboot' into beta
1 parent 9ee846b commit 993494b

File tree

4 files changed

+48
-4
lines changed

4 files changed

+48
-4
lines changed

gxspringboot/src/main/java/com/genexus/springboot/GXConfig.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,13 @@
66
import com.genexus.diagnostics.core.LogManager;
77
import com.genexus.servlet.CorsFilter;
88
import com.genexus.xml.GXXMLSerializable;
9+
910
import jakarta.annotation.PreDestroy;
11+
import jakarta.servlet.Servlet;
12+
import org.glassfish.jersey.server.ResourceConfig;
13+
import org.glassfish.jersey.servlet.ServletContainer;
1014
import org.springframework.boot.web.servlet.FilterRegistrationBean;
15+
import org.springframework.boot.web.servlet.ServletRegistrationBean;
1116
import org.springframework.beans.factory.annotation.Value;
1217
import org.springframework.context.annotation.Bean;
1318
import org.springframework.context.annotation.Configuration;
@@ -19,6 +24,8 @@
1924
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
2025
import org.tuckey.web.filters.urlrewrite.UrlRewriteFilter;
2126

27+
import java.util.Set;
28+
2229
@Configuration
2330
@EnableWebMvc
2431
public class GXConfig implements WebMvcConfigurer {
@@ -82,6 +89,20 @@ public FilterRegistrationBean<UrlRewriteFilter> urlRewriteFilter() {
8289
return registrationBean;
8390
}
8491

92+
@Bean
93+
public ServletRegistrationBean<Servlet> jerseyServletRegistration() {
94+
ResourceConfig rc = new ResourceConfig();
95+
Set<Class<?>> rrcs = JaxrsResourcesHolder.getAll();
96+
if (!rrcs.isEmpty()) {
97+
rc.registerClasses(rrcs.toArray(new Class<?>[0]));
98+
}
99+
ServletContainer container = new ServletContainer(rc);
100+
ServletRegistrationBean<Servlet> bean = new ServletRegistrationBean<>(container, "/rest/*");
101+
bean.setName("jersey-servlet");
102+
bean.setLoadOnStartup(1);
103+
return bean;
104+
}
105+
85106
@PreDestroy
86107
public void onDestroy() {
87108
GXXMLSerializable.classesCacheMethods.clear();

gxspringboot/src/main/java/com/genexus/springboot/GXImportSelector.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import java.io.IOException;
88
import java.io.InputStream;
99
import java.util.ArrayList;
10+
import java.util.HashSet;
11+
import java.util.Set;
1012

1113
import org.springframework.context.annotation.ImportSelector;
1214
import org.springframework.core.io.ClassPathResource;
@@ -20,26 +22,28 @@ public class GXImportSelector implements ImportSelector {
2022
@Override
2123
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
2224
ArrayList<String> restImports = new ArrayList<>();
25+
Set<Class<?>> rrcs = new HashSet<Class<?>>();
2326
try {
2427
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:*.services");
2528
for (Resource resource : resources) {
26-
selectImport(restImports, resource.getFilename());
29+
selectImport(rrcs, restImports, resource.getFilename());
2730
}
2831
}
2932
catch (IOException e){
3033
logger.error("Error loading External Services classes ", e);
3134
}
3235

36+
JaxrsResourcesHolder.setAll(rrcs);
3337
addWebSocketsImport(restImports);
3438

3539
return restImports.toArray(new String[0]);
3640
}
3741

38-
private void selectImport(ArrayList<String> restImports, String servicesClassesFileName) {
42+
private void selectImport(Set<Class<?>> rrcs, ArrayList<String> restImports, String servicesClassesFileName) {
3943
try {
4044
InputStream is = new ClassPathResource(servicesClassesFileName).getInputStream();
4145
if (is != null) {
42-
WebUtils.AddExternalServicesFile(null, restImports, is);
46+
WebUtils.AddExternalServicesFile(rrcs, restImports, is);
4347

4448
is.close();
4549
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.genexus.springboot;
2+
3+
import java.util.LinkedHashSet;
4+
import java.util.Set;
5+
6+
public final class JaxrsResourcesHolder {
7+
private static final Set<Class<?>> RESOURCES = new LinkedHashSet<>();
8+
private JaxrsResourcesHolder() {}
9+
10+
public static void setAll(Set<Class<?>> rrcs) {
11+
RESOURCES.clear();
12+
if (rrcs != null) RESOURCES.addAll(rrcs);
13+
}
14+
15+
public static Set<Class<?>> getAll() {
16+
return new LinkedHashSet<>(RESOURCES);
17+
}
18+
}
19+

java/src/main/java/com/genexus/webpanels/WebUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ public static void AddExternalServicesFile(Set<Class<?>> rrcs, ArrayList<String>
523523
if (serviceClass != null)
524524
if (rrcs != null)
525525
rrcs.add(serviceClass);
526-
else
526+
if (restImports != null)
527527
restImports.add(serviceClass.getName());
528528
}
529529
reader.close();

0 commit comments

Comments
 (0)