Skip to content

Commit e1502b4

Browse files
committed
Address @iroqueta review
1 parent dbc464a commit e1502b4

File tree

4 files changed

+42
-57
lines changed

4 files changed

+42
-57
lines changed

gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/LambdaHandler.java

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,43 @@
11
package com.genexus.cloud.serverless.aws;
22

3-
import javax.servlet.ServletConfig;
4-
import javax.servlet.ServletContext;
5-
import javax.ws.rs.core.Application;
6-
73
import com.amazonaws.serverless.proxy.RequestReader;
84
import com.amazonaws.serverless.proxy.internal.servlet.AwsHttpServletResponse;
95
import com.amazonaws.serverless.proxy.internal.servlet.AwsProxyHttpServletRequest;
6+
import com.amazonaws.serverless.proxy.internal.servlet.AwsProxyHttpServletResponseWriter;
107
import com.amazonaws.serverless.proxy.internal.servlet.AwsServletContext;
11-
import com.amazonaws.serverless.proxy.model.MultiValuedTreeMap;
12-
import com.genexus.cloud.serverless.aws.handler.AwsGxServletResponse;
13-
import com.genexus.cloud.serverless.aws.handler.LambdaHelper;
14-
import com.genexus.specific.java.Connect;
15-
import com.genexus.specific.java.LogManager;
16-
import com.genexus.webpanels.GXWebObjectStub;
17-
import org.glassfish.jersey.server.ResourceConfig;
18-
198
import com.amazonaws.serverless.proxy.jersey.JerseyLambdaContainerHandler;
209
import com.amazonaws.serverless.proxy.model.AwsProxyRequest;
2110
import com.amazonaws.serverless.proxy.model.AwsProxyResponse;
11+
import com.amazonaws.serverless.proxy.model.MultiValuedTreeMap;
2212
import com.amazonaws.services.lambda.runtime.Context;
2313
import com.amazonaws.services.lambda.runtime.RequestHandler;
24-
import com.genexus.ApplicationContext;
14+
import com.genexus.cloud.serverless.aws.handler.AwsGxServletResponse;
15+
import com.genexus.cloud.serverless.aws.handler.LambdaApplicationHelper;
2516
import com.genexus.diagnostics.core.ILogger;
26-
import com.genexus.util.IniFile;
27-
import com.genexus.webpanels.*;
17+
import com.genexus.specific.java.LogManager;
18+
import com.genexus.webpanels.GXOAuthAccessToken;
19+
import com.genexus.webpanels.GXOAuthLogout;
20+
import com.genexus.webpanels.GXOAuthUserInfo;
21+
import com.genexus.webpanels.GXWebObjectStub;
22+
import org.glassfish.jersey.server.ResourceConfig;
2823

24+
import javax.servlet.ServletConfig;
25+
import javax.servlet.ServletContext;
2926
import java.util.Enumeration;
3027
import java.util.List;
3128
import java.util.concurrent.CountDownLatch;
3229

33-
import com.amazonaws.serverless.proxy.internal.servlet.AwsProxyHttpServletResponseWriter;
34-
3530
public class LambdaHandler implements RequestHandler<AwsProxyRequest, AwsProxyResponse> {
3631
private static ILogger logger = null;
3732
public static JerseyLambdaContainerHandler<AwsProxyRequest, AwsProxyResponse> handler = null;
3833
private static ResourceConfig jerseyApplication = null;
3934
private static final String BASE_REST_PATH = "/rest/";
4035

41-
4236
public LambdaHandler() throws Exception {
4337
if (LambdaHandler.jerseyApplication == null) {
4438
JerseyLambdaContainerHandler.getContainerConfig().setDefaultContentCharset("UTF-8");
4539
logger = LogManager.initialize(".", LambdaHandler.class);
46-
LambdaHandler.jerseyApplication = ResourceConfig.forApplication(LambdaHelper.initialize());
40+
LambdaHandler.jerseyApplication = ResourceConfig.forApplication(LambdaApplicationHelper.initialize());
4741
if (jerseyApplication.getClasses().size() == 0) {
4842
logger.error("No HTTP endpoints found for this application");
4943
}
@@ -61,7 +55,7 @@ public AwsProxyResponse handleRequest(AwsProxyRequest awsProxyRequest, Context c
6155
dumpRequest(awsProxyRequest);
6256

6357
logger.debug("Before handle Request");
64-
58+
6559
awsProxyRequest.setPath(path.replace(BASE_REST_PATH, "/"));
6660
AwsProxyResponse response = this.handler.proxy(awsProxyRequest, context);
6761

@@ -70,7 +64,7 @@ public AwsProxyResponse handleRequest(AwsProxyRequest awsProxyRequest, Context c
7064
awsProxyRequest.setPath(path);
7165
logger.debug("Trying servlet request: " + path);
7266
AwsGxServletResponse servletResponse = handleServletRequest(awsProxyRequest, context);
73-
if (servletResponse.wasHandled()){
67+
if (servletResponse.wasHandled()) {
7468
response = servletResponse.getAwsProxyResponse();
7569
}
7670
}
@@ -167,8 +161,7 @@ private GXWebObjectStub resolveServlet(AwsProxyRequest awsProxyRequest) {
167161
}
168162

169163

170-
171-
private void dumpRequest(AwsProxyRequest awsProxyRequest){
164+
private void dumpRequest(AwsProxyRequest awsProxyRequest) {
172165
String lineSeparator = System.lineSeparator();
173166
String reqData = String.format("Path: %s", awsProxyRequest.getPath()) + lineSeparator;
174167
reqData += String.format("Method: %s", awsProxyRequest.getHttpMethod()) + lineSeparator;
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.genexus.cloud.serverless.aws.handler;
2+
3+
import com.genexus.ApplicationContext;
4+
import com.genexus.specific.java.Connect;
5+
import com.genexus.util.IniFile;
6+
7+
import javax.ws.rs.core.Application;
8+
9+
public class LambdaApplicationHelper {
10+
private static final String GX_APPLICATION_CLASS = "GXApplication";
11+
private static final String GX_APPLICATION_CONFIG = "client.cfg";
12+
13+
public static Application initialize() throws Exception {
14+
Connect.init();
15+
IniFile config = com.genexus.ConfigFileFinder.getConfigFile(null, GX_APPLICATION_CONFIG, null);
16+
String className = config.getProperty("Client", "PACKAGE", null);
17+
Class<?> cls = Class.forName(className.isEmpty() ? GX_APPLICATION_CLASS : String.format("%s.%s", className, GX_APPLICATION_CLASS));
18+
Application app = (Application) cls.getDeclaredConstructor().newInstance();
19+
ApplicationContext appContext = ApplicationContext.getInstance();
20+
appContext.setServletEngine(true);
21+
appContext.setServletEngineDefaultPath("");
22+
com.genexus.Application.init(cls);
23+
return app;
24+
}
25+
}

gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaHelper.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

gxawsserverless/src/main/java/com/genexus/cloud/serverless/aws/handler/LambdaHttpApiHandler.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.amazonaws.serverless.proxy.jersey.JerseyLambdaContainerHandler;
44
import com.amazonaws.serverless.proxy.model.AwsProxyResponse;
55
import com.amazonaws.serverless.proxy.model.HttpApiV2ProxyRequest;
6-
import com.amazonaws.serverless.proxy.model.HttpApiV2ProxyRequestContext;
76
import com.amazonaws.services.lambda.runtime.Context;
87
import com.amazonaws.services.lambda.runtime.RequestHandler;
98
import com.genexus.cloud.serverless.aws.LambdaHandler;
@@ -24,7 +23,7 @@ public LambdaHttpApiHandler() throws Exception {
2423
if (LambdaHttpApiHandler.jerseyApplication == null) {
2524
JerseyLambdaContainerHandler.getContainerConfig().setDefaultContentCharset("UTF-8");
2625
logger = LogManager.initialize(".", LambdaHandler.class);
27-
LambdaHttpApiHandler.jerseyApplication = ResourceConfig.forApplication(LambdaHelper.initialize());
26+
LambdaHttpApiHandler.jerseyApplication = ResourceConfig.forApplication(LambdaApplicationHelper.initialize());
2827

2928
if (jerseyApplication.getClasses().size() == 0) {
3029
logger.error("No HTTP endpoints found for this application");

0 commit comments

Comments
 (0)