package de.twenty11.skysail.server.ext.osgi.monitor.agent.callback.serviceregistration;
import org.osgi.framework.ServiceRegistration;
import org.slf4j.Logger;
import de.twenty11.skysail.server.ext.osgi.monitor.agent.MethodIdentifier;
import de.twenty11.skysail.server.ext.osgi.monitor.agent.callback.OsgiMonitorCallback;
import de.twenty11.skysail.server.ext.osgi.monitor.agent.callback.messages.RuntimeExceptionMessage;
import de.twenty11.skysail.server.ext.osgi.monitor.agent.instrumentation.serviceregistration.UnregisterServiceInstrumentation;
import de.twenty11.skysail.server.ext.osgi.monitor.agent.messages.serviceregistration.UnregisterServiceMessage;
/**
* the class called from the instrumented methods.
*
*/
public class ServiceRegistrationCallback extends OsgiMonitorCallback {
private static Logger agentLogger;
static {
addMethodCallback(new MethodIdentifier(ServiceRegistration.class.getName(), "unregister", "()V"),
new UnregisterServiceInstrumentation(ServiceRegistrationCallback.class.getSimpleName(), "unregister"));
}
public static void unregister(ServiceRegistration sr) {
logJson(new UnregisterServiceMessage(sr));
// String logMsgPrefix = getLogMsgPrefix("sr", "unregister");
// String ref = sr.toString();
// String bsn = "";
// String properties = "";
// String usedBy = "";
// ServiceReference reference = sr.getReference();
// if (reference != null) {
// bsn = reference.getBundle().getSymbolicName();
// String[] propertyKeys = reference.getPropertyKeys();
// StringBuilder sb = new StringBuilder();
// for (String key : propertyKeys) {
// Object property = reference.getProperty(key);
// sb.append(key).append(": ").append(property.toString()).append(", ");
// }
// properties = sb.toString();
// Bundle[] usingBundles = reference.getUsingBundles();
// if (usingBundles != null) {
// sb = new StringBuilder();
// for (Bundle bundle : usingBundles) {
// sb.append(bundle.getSymbolicName()).append(", ");
// }
// usedBy = sb.toString();
// }
// }
// agentLogger.info("{" + logMsgPrefix + "\"bsn\": \"{}\", \n\"props\": \"{}\", \n\"usedBy\": \"{}\"},",
// new Object[] { bsn, properties, usedBy });
}
public static void catchMe(ServiceRegistration sr, String objectName, String methodName, RuntimeException e) {
agentLogger.info("{\"type\": \"sr\", \"method\": \"{}\", \"bsn\": \"{}\"},", methodName, sr.toString());
}
@Override
public void setAgentLogger(Logger agentlogger) {
ServiceRegistrationCallback.agentLogger = agentlogger;
}
public static void catchMe(String methodName, RuntimeException e) {
logJson(new RuntimeExceptionMessage("sr", methodName, e));
}
}