3030import java .io .OutputStream ;
3131import java .io .PrintStream ;
3232import java .lang .reflect .Constructor ;
33- import java .lang .reflect .Method ;
3433import java .net .URLClassLoader ;
35- import java .nio .file .Paths ;
3634import java .security .Security ;
3735import java .util .Properties ;
3836
39- import static com .amazonaws .services .lambda .runtime .api .client .UserFault .makeUserFault ;
40-
4137/**
4238 * The entrypoint of this class is {@link AWSLambda#startRuntime}. It performs two main tasks:
4339 *
5147 */
5248public class AWSLambda {
5349
54- private static final Runnable doNothing = () -> {
55- };
56-
5750 private static final String TRUST_STORE_PROPERTY = "javax.net.ssl.trustStore" ;
5851
5952 private static final String JAVA_SECURITY_PROPERTIES = "java.security.properties" ;
@@ -103,20 +96,17 @@ private static boolean isNegativeCacheOverridable() {
10396 }
10497 }
10598
106- private static UserMethods findUserMethods (final String handlerString , ClassLoader customerClassLoader ) {
99+ private static LambdaRequestHandler findRequestHandler (final String handlerString , ClassLoader customerClassLoader ) {
107100 final HandlerInfo handlerInfo ;
108101 try {
109102 handlerInfo = HandlerInfo .fromString (handlerString , customerClassLoader );
110103 } catch (HandlerInfo .InvalidHandlerException e ) {
111104 UserFault userFault = UserFault .makeUserFault ("Invalid handler: `" + handlerString + "'" );
112- return new UserMethods (
113- doNothing ,
114- new UserFaultHandler (userFault )
115- );
105+ return new UserFaultHandler (userFault );
116106 } catch (ClassNotFoundException e ) {
117- return new UserMethods ( doNothing , LambdaRequestHandler .classNotFound (e , HandlerInfo .className (handlerString ) ));
107+ return LambdaRequestHandler .classNotFound (e , HandlerInfo .className (handlerString ));
118108 } catch (NoClassDefFoundError e ) {
119- return new UserMethods ( doNothing , LambdaRequestHandler .initErrorHandler (e , HandlerInfo .className (handlerString ) ));
109+ return LambdaRequestHandler .initErrorHandler (e , HandlerInfo .className (handlerString ));
120110 } catch (Throwable t ) {
121111 throw UserFault .makeInitErrorUserFault (t , HandlerInfo .className (handlerString ));
122112 }
@@ -130,24 +120,7 @@ private static UserMethods findUserMethods(final String handlerString, ClassLoad
130120 throw userFault ;
131121 }
132122 }
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 ;
151124 }
152125
153126 public static void setupRuntimeLogger (LambdaLogger lambdaLogger )
@@ -238,9 +211,9 @@ private static void startRuntime(String handler, LambdaLogger lambdaLogger) thro
238211 Thread .currentThread ().setContextClassLoader (customerClassLoader );
239212
240213 // Load the user's handler
241- UserMethods methods ;
214+ LambdaRequestHandler requestHandler ;
242215 try {
243- methods = findUserMethods (handler , customerClassLoader );
216+ requestHandler = findRequestHandler (handler , customerClassLoader );
244217 } catch (UserFault userFault ) {
245218 lambdaLogger .log (userFault .reportableError ());
246219 ByteArrayOutputStream payload = new ByteArrayOutputStream (1024 );
@@ -251,14 +224,6 @@ private static void startRuntime(String handler, LambdaLogger lambdaLogger) thro
251224 return ;
252225 }
253226
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-
262227 try (EnvWriter envWriter = new EnvWriter (envReader )) {
263228 boolean shouldExit = false ;
264229 while (!shouldExit ) {
@@ -272,7 +237,7 @@ private static void startRuntime(String handler, LambdaLogger lambdaLogger) thro
272237
273238 ByteArrayOutputStream payload ;
274239 try {
275- payload = methods . requestHandler .call (request );
240+ payload = requestHandler .call (request );
276241 // TODO calling payload.toByteArray() creates a new copy of the underlying buffer
277242 runtimeClient .postInvocationResponse (request .getId (), payload .toByteArray ());
278243 } catch (UserFault f ) {
0 commit comments