Skip to content

Commit 9e34f29

Browse files
committed
SystemTimeMillis
1 parent 199cf08 commit 9e34f29

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

src/main/java/software/amazon/lambda/snapstart/ByteCodeIntrospector.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@ public class ByteCodeIntrospector {
3737

3838
private static final String INSTANT_SIGNATURE = "Ljava/time/Instant;";
3939

40+
private static final String LOCAL_DATE_TIME_SIGNATURE = "Ljava/time/LocalDateTime;";
41+
42+
private static final String LOCAL_DATE_SIGNATURE = "Ljava/time/LocalDate;";
43+
44+
private static final String LOCAL_TIME_SIGNATURE = "Ljava/time/LocalTime;";
45+
46+
private static final String ZONED_DATE_TIME_SIGNATURE = "Ljava/time/ZonedDateTime;";
47+
4048
private static final Map<String, Set<String>> TIMESTAMP_METHODS = new HashMap<String, Set<String>>() {{
4149
put("java.lang.System", setOf("currentTimeMillis", "nanoTime"));
4250
}};
@@ -188,6 +196,18 @@ boolean isTimestamp(OpcodeStack stack) {
188196
if (INSTANT_SIGNATURE.equals(stack.getStackItem(0).getSignature())) {
189197
return true;
190198
}
199+
if (LOCAL_DATE_TIME_SIGNATURE.equals(stack.getStackItem(0).getSignature())) {
200+
return true;
201+
}
202+
if (LOCAL_DATE_SIGNATURE.equals(stack.getStackItem(0).getSignature())) {
203+
return true;
204+
}
205+
if (LOCAL_TIME_SIGNATURE.equals(stack.getStackItem(0).getSignature())) {
206+
return true;
207+
}
208+
if (ZONED_DATE_TIME_SIGNATURE.equals(stack.getStackItem(0).getSignature())) {
209+
return true;
210+
}
191211
XMethod xMethod = stack.getStackItem(0).getReturnValueOf();
192212
if (xMethod != null) {
193213
Set<String> methodNames = TIMESTAMP_METHODS.get(xMethod.getClassName());

src/test/java/software/amazon/lambda/snapstart/lambdaexamples/LambdaUsingTs.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
import com.amazonaws.services.lambda.runtime.RequestHandler;
1010
import java.time.Clock;
1111
import java.time.Instant;
12+
import java.time.LocalDateTime;
13+
import java.time.LocalDate;
14+
import java.time.LocalTime;
15+
import java.time.ZonedDateTime;
1216
import java.util.Map;
1317

1418
public class LambdaUsingTs implements RequestHandler<Map<String,String>, String> {
@@ -19,12 +23,21 @@ public class LambdaUsingTs implements RequestHandler<Map<String,String>, String>
1923
private long tsFromSystemTimeNano;
2024
private Instant tsFromInstantNow;
2125
private Instant tsFromClock;
26+
private LocalDateTime tsFromLocalDateTimeNow;
27+
private LocalDate tsFromLocalDateNow;
28+
private LocalTime tsFromLocalTimeNow;
29+
private ZonedDateTime tsFromZonedDateTimeNow;
2230

2331
public LambdaUsingTs(Clock clock) {
2432
tsFromSystemTimeMillis = System.currentTimeMillis(); // This is a bug
2533
tsFromSystemTimeNano = System.nanoTime(); // This is a bug
2634
tsFromInstantNow = Instant.now(); // This is a bug
2735
tsFromClock = clock.instant(); // This is a bug
36+
tsFromLocalDateTimeNow = LocalDateTime.now(); // This is a bug
37+
tsFromLocalDateNow = LocalDate.now(); // This is a bug
38+
tsFromLocalTimeNow = LocalTime.now(); // This is a bug
39+
tsFromZonedDateTimeNow = ZonedDateTime.now(); // This is a bug
40+
2841

2942
logName = getLogName(); // This is a bug
3043
}

0 commit comments

Comments
 (0)