/
Nanotime.java
46 lines (38 loc) · 1.41 KB
/
Nanotime.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Nanotime.java
//
// This is the source code for a Java callout for Apigee Edge.
// This callout is very simple - it retrieves System.nanoTime() and
// inserts it into a context variable.
//
// ------------------------------------------------------------------
package com.google.apigee.edgecallouts;
import com.apigee.flow.execution.ExecutionContext;
import com.apigee.flow.execution.ExecutionResult;
import com.apigee.flow.execution.spi.Execution;
import com.apigee.flow.message.MessageContext;
import java.io.PrintWriter;
import java.io.StringWriter;
public class Nanotime implements Execution {
private static final String varprefix = "nano_";
private static String varName(String s) {
return varprefix + s;
}
public Nanotime() {}
protected static String exceptionStackTrace(Throwable t) {
StringWriter sw = new StringWriter();
t.printStackTrace(new PrintWriter(sw));
return sw.toString();
}
public ExecutionResult execute(final MessageContext msgCtxt, final ExecutionContext execContext) {
try {
long nano = System.nanoTime();
// set a variable.
msgCtxt.setVariable(varName("time"), Long.toString(nano));
return ExecutionResult.SUCCESS;
} catch (java.lang.Exception exc1) {
msgCtxt.setVariable(varName("error"), exc1.getMessage());
msgCtxt.setVariable(varName("stacktrace"), exceptionStackTrace(exc1));
return ExecutionResult.ABORT;
}
}
}