@@ -41,13 +41,13 @@ public class LambdaExecutor {
41
41
42
42
@ SuppressWarnings ("unchecked" )
43
43
public static void main (String [] args ) throws Exception {
44
- if (args .length < 2 ) {
44
+ if (args .length != 1 && args . length != 2 ) {
45
45
System .err .println ("Usage: java " + LambdaExecutor .class .getSimpleName () +
46
- " <lambdaClass> <recordsFilePath>" );
46
+ " [ <lambdaClass>] <recordsFilePath>" );
47
47
System .exit (1 );
48
48
}
49
49
50
- String fileContent = readFile (args [1 ]);
50
+ String fileContent = args . length == 1 ? readFile ( args [ 0 ]) : readFile (args [1 ]);
51
51
ObjectMapper reader = new ObjectMapper ();
52
52
reader .configure (MapperFeature .ACCEPT_CASE_INSENSITIVE_PROPERTIES , true );
53
53
reader .configure (DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES , false );
@@ -56,7 +56,17 @@ public static void main(String[] args) throws Exception {
56
56
List <Map <String ,Object >> records = (List <Map <String , Object >>) get (map , "Records" );
57
57
Object inputObject = map ;
58
58
59
- Object handler = getHandler (args [0 ]);
59
+ Object handler ;
60
+ if (args .length == 2 ) {
61
+ handler = getHandler (args [0 ]);
62
+ } else {
63
+ String handlerEnvVar = System .getenv ("_HANDLER" );
64
+ if (handlerEnvVar == null ) {
65
+ System .err .println ("Handler must be provided by '_HANDLER' environment variable" );
66
+ System .exit (1 );
67
+ }
68
+ handler = getHandler (handlerEnvVar );
69
+ }
60
70
if (records == null ) {
61
71
Optional <Object > deserialisedInput = getInputObject (reader , fileContent , handler );
62
72
if (deserialisedInput .isPresent ()) {
@@ -134,19 +144,19 @@ private static Object getHandler(String handlerName) throws NoSuchMethodExceptio
134
144
135
145
public static <T > T get (Map <String ,T > map , String key ) {
136
146
T result = map .get (key );
137
- if (result != null ) {
147
+ if (result != null ) {
138
148
return result ;
139
149
}
140
150
key = StringUtils .uncapitalize (key );
141
151
result = map .get (key );
142
- if (result != null ) {
152
+ if (result != null ) {
143
153
return result ;
144
154
}
145
155
return map .get (key .toLowerCase ());
146
156
}
147
157
148
158
public static String readFile (String file ) throws Exception {
149
- if (!file .startsWith ("/" )) {
159
+ if (!file .startsWith ("/" )) {
150
160
file = System .getProperty ("user.dir" ) + "/" + file ;
151
161
}
152
162
return Files .lines (Paths .get (file ), StandardCharsets .UTF_8 ).collect (Collectors .joining ());
0 commit comments