30
30
import java .io .OutputStream ;
31
31
import java .io .PrintStream ;
32
32
import java .lang .reflect .Constructor ;
33
- import java .lang .reflect .Method ;
34
33
import java .net .URLClassLoader ;
35
- import java .nio .file .Paths ;
36
34
import java .security .Security ;
37
35
import java .util .Properties ;
38
36
39
- import static com .amazonaws .services .lambda .runtime .api .client .UserFault .makeUserFault ;
40
-
41
37
/**
42
38
* The entrypoint of this class is {@link AWSLambda#startRuntime}. It performs two main tasks:
43
39
*
51
47
*/
52
48
public class AWSLambda {
53
49
54
- private static final Runnable doNothing = () -> {
55
- };
56
-
57
50
private static final String TRUST_STORE_PROPERTY = "javax.net.ssl.trustStore" ;
58
51
59
52
private static final String JAVA_SECURITY_PROPERTIES = "java.security.properties" ;
@@ -103,20 +96,17 @@ private static boolean isNegativeCacheOverridable() {
103
96
}
104
97
}
105
98
106
- private static UserMethods findUserMethods (final String handlerString , ClassLoader customerClassLoader ) {
99
+ private static LambdaRequestHandler findRequestHandler (final String handlerString , ClassLoader customerClassLoader ) {
107
100
final HandlerInfo handlerInfo ;
108
101
try {
109
102
handlerInfo = HandlerInfo .fromString (handlerString , customerClassLoader );
110
103
} catch (HandlerInfo .InvalidHandlerException e ) {
111
104
UserFault userFault = UserFault .makeUserFault ("Invalid handler: `" + handlerString + "'" );
112
- return new UserMethods (
113
- doNothing ,
114
- new UserFaultHandler (userFault )
115
- );
105
+ return new UserFaultHandler (userFault );
116
106
} catch (ClassNotFoundException e ) {
117
- return new UserMethods ( doNothing , LambdaRequestHandler .classNotFound (e , HandlerInfo .className (handlerString ) ));
107
+ return LambdaRequestHandler .classNotFound (e , HandlerInfo .className (handlerString ));
118
108
} catch (NoClassDefFoundError e ) {
119
- return new UserMethods ( doNothing , LambdaRequestHandler .initErrorHandler (e , HandlerInfo .className (handlerString ) ));
109
+ return LambdaRequestHandler .initErrorHandler (e , HandlerInfo .className (handlerString ));
120
110
} catch (Throwable t ) {
121
111
throw UserFault .makeInitErrorUserFault (t , HandlerInfo .className (handlerString ));
122
112
}
@@ -130,24 +120,7 @@ private static UserMethods findUserMethods(final String handlerString, ClassLoad
130
120
throw userFault ;
131
121
}
132
122
}
133
-
134
- Runnable initHandler = doNothing ;
135
- try {
136
- initHandler = wrapInitCall (handlerInfo .clazz .getMethod ("init" ));
137
- } catch (NoSuchMethodException | NoClassDefFoundError e ) {
138
- }
139
-
140
- return new UserMethods (initHandler , requestHandler );
141
- }
142
-
143
- private static Runnable wrapInitCall (final Method method ) {
144
- return () -> {
145
- try {
146
- method .invoke (null );
147
- } catch (Throwable t ) {
148
- throw UserFault .makeUserFault (t );
149
- }
150
- };
123
+ return requestHandler ;
151
124
}
152
125
153
126
public static void setupRuntimeLogger (LambdaLogger lambdaLogger )
@@ -238,9 +211,9 @@ private static void startRuntime(String handler, LambdaLogger lambdaLogger) thro
238
211
Thread .currentThread ().setContextClassLoader (customerClassLoader );
239
212
240
213
// Load the user's handler
241
- UserMethods methods ;
214
+ LambdaRequestHandler requestHandler ;
242
215
try {
243
- methods = findUserMethods (handler , customerClassLoader );
216
+ requestHandler = findRequestHandler (handler , customerClassLoader );
244
217
} catch (UserFault userFault ) {
245
218
lambdaLogger .log (userFault .reportableError ());
246
219
ByteArrayOutputStream payload = new ByteArrayOutputStream (1024 );
@@ -251,14 +224,6 @@ private static void startRuntime(String handler, LambdaLogger lambdaLogger) thro
251
224
return ;
252
225
}
253
226
254
- // Call the user's init handler(a function called 'init'), if provided in the same module as the request handler.
255
- // This is an undocumented feature, and still exists to keep backward compatibility. Continue if this call fails.
256
- try {
257
- methods .initHandler .run ();
258
- } catch (UserFault f ) {
259
- lambdaLogger .log (f .reportableError ());
260
- }
261
-
262
227
try (EnvWriter envWriter = new EnvWriter (envReader )) {
263
228
boolean shouldExit = false ;
264
229
while (!shouldExit ) {
@@ -272,7 +237,7 @@ private static void startRuntime(String handler, LambdaLogger lambdaLogger) thro
272
237
273
238
ByteArrayOutputStream payload ;
274
239
try {
275
- payload = methods . requestHandler .call (request );
240
+ payload = requestHandler .call (request );
276
241
// TODO calling payload.toByteArray() creates a new copy of the underlying buffer
277
242
runtimeClient .postInvocationResponse (request .getId (), payload .toByteArray ());
278
243
} catch (UserFault f ) {
0 commit comments