A サンプル
使用可能なサンプル・カスタム・ステージ・タイプおよびサンプル関数を示します。
サンプル・カスタム・ステージ・タイプ
このサンプル・クラスは、1つのテキスト・フィールドを取得してそれに対するMD5ハッシュを生成するカスタム・ステージを定義しています。
package com.oracle.osacs;
import com.oracle.cep.api.event.*;
import com.oracle.cep.api.annotations.OsaStage;
import com.oracle.cep.api.stage.EventProcessor;
import com.oracle.cep.api.stage.ProcessorContext;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
@SuppressWarnings("serial")
@OsaStage(name = "md5", description = "Create an md5 hex from a string", inputSpec = "input, message:string", outputSpec = "output, message:string, md5:string")
public class CustomMD5Stage implements EventProcessor {
EventFactory eventFactory;
EventSpec outputSpec;
@Override
public void init(ProcessorContext ctx, Map<String, String> config) {
eventFactory = ctx.getEventFactory();
OsaStage meta = CustomMD5Stage.class.getAnnotation(OsaStage.class);
String spec = meta.outputSpec();
outputSpec = TupleEventSpec.fromAnnotation(spec);
}
@Override
public void close() {
}
@Override
public Event processEvent(Event event) {
Attr attr = event.getAttr("message");
Map<String, Object> values = new HashMap<String, Object>();
if (!attr.isNull()) {
String val = (String) attr.getObjectValue();
String md5 = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(val.getBytes());
byte[] digest = md.digest();
md5 = javax.xml.bind.DatatypeConverter.printHexBinary(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
values.put("message", val);
values.put("md5", md5);
} else {
values.put("message", "empty");
values.put("md5", "empty");
}
Event outputEvent = eventFactory.createEvent(outputSpec, values, event.getTime());
return outputEvent;
}
}
サンプル・カスタム関数
このサンプル・クラスは、1つのテキスト・フィールドを取得してそれに対するMD5ハッシュを生成するカスタム関数を定義しています。
package com.oracle.osacs;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import com.oracle.cep.api.annotations.OsaFunction;
public class CustomMD5Function {
@OsaFunction(name = "md5", description = "Create an md5 hex from a string")
public static String md5(String message) {
String result = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(message.getBytes());
byte[] digest = md.digest();
result = javax.xml.bind.DatatypeConverter.printHexBinary(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return result;
}
}