diff options
Diffstat (limited to 'asdc-controller/src/main/java/org/onap/so/asdc/util/NotificationLogging.java')
-rw-r--r-- | asdc-controller/src/main/java/org/onap/so/asdc/util/NotificationLogging.java | 249 |
1 files changed, 122 insertions, 127 deletions
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/util/NotificationLogging.java b/asdc-controller/src/main/java/org/onap/so/asdc/util/NotificationLogging.java index fae1da374a..d2e5b07a07 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/util/NotificationLogging.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/util/NotificationLogging.java @@ -35,138 +35,133 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import org.onap.sdc.api.notification.INotificationData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class NotificationLogging implements InvocationHandler { - - private static Map<Object, List<Method>> objectMethodsToLog = new HashMap<>(); - - protected static final Logger logger = LoggerFactory.getLogger(NotificationLogging.class); - - private static InvocationHandler handler = (arg0, arg1, arg2) -> { - List<Method> methods = objectMethodsToLog.get(arg0); - if ((methods == null) || (methods.isEmpty())) { - // Do nothing for now... - return null; - } - methods.add(arg1); - return arg1.invoke(arg0, arg2); - }; - - public static InvocationHandler getHandler() { - return handler; - } - - /** - * - */ - private NotificationLogging() {} - - private static final String[] GETTER_PREFIXES = { "get", "is" }; - - public static String logNotification(INotificationData iNotif) { - if (iNotif == null) { - return "NULL"; - } - - Class<? extends INotificationData> clazz = iNotif.getClass(); - - Method[] declaredMethods = clazz.getDeclaredMethods(); - - if (declaredMethods == null || declaredMethods.length == 0) { - return "EMPTY"; // No declared methods in this class !!! - } - - StringBuilder buffer = new StringBuilder("ASDC Notification:"); - buffer.append(System.lineSeparator()); - - for (Method m : declaredMethods) { - if ((m != null) && isGetter(m)) { - for (String prefix : GETTER_PREFIXES) { - if (m.getName().startsWith(prefix)) { - buffer.append(m.getName().substring(prefix.length())); - break; - } - } - try { - buffer.append(testNull(m.invoke(iNotif, (Object[])null))); - } catch (IllegalAccessException | IllegalArgumentException - | InvocationTargetException e) { - logger.debug("Exception", e); - buffer.append("UNREADABLE"); - } - buffer.append(System.lineSeparator()); - } - } - - return buffer.toString(); - } - - private static boolean isGetter(Method method) { - - // Must start with a valid (and known) prefix - boolean prefixFound = false; - for (String prefix : GETTER_PREFIXES) { - if (method.getName().startsWith(prefix)) { - prefixFound = true; - break; - } - } - if (!prefixFound) { - return false; - } - - // Must not take any input arguments - if (method.getParameterTypes().length != 0) { - return false; - } - - // Must not have return type 'void' - if (void.class.equals(method.getReturnType())) { - return false; - } - - // Must be public - if (!Modifier.isPublic(method.getModifiers())) { - return false; - } - - return true; - } - - private static String testNull(Object object) { - if (object == null) { - return "NULL"; - } else if (object instanceof Integer) { - return object.toString(); - } else if (object instanceof String) { - return (String) object; - } else { - return "Type not recognized"; - } - } - - private static void registerForLog(INotificationData objectToLog) { - INotificationData proxy = (INotificationData) Proxy.newProxyInstance( - INotificationData.class.getClassLoader(), - new Class[] { INotificationData.class }, - NotificationLogging.getHandler()); - objectMethodsToLog.put(proxy, new ArrayList<>()); - } - - private static <T> void methodToLog(T methodCall) { - // - } - - @Override - public Object invoke(Object proxy, Method method, Object[] args) - throws Throwable { - // TODO Auto-generated method stub - return null; - } + + private static Map<Object, List<Method>> objectMethodsToLog = new HashMap<>(); + + protected static final Logger logger = LoggerFactory.getLogger(NotificationLogging.class); + + private static InvocationHandler handler = (arg0, arg1, arg2) -> { + List<Method> methods = objectMethodsToLog.get(arg0); + if ((methods == null) || (methods.isEmpty())) { + // Do nothing for now... + return null; + } + methods.add(arg1); + return arg1.invoke(arg0, arg2); + }; + + public static InvocationHandler getHandler() { + return handler; + } + + /** + * + */ + private NotificationLogging() {} + + private static final String[] GETTER_PREFIXES = {"get", "is"}; + + public static String logNotification(INotificationData iNotif) { + if (iNotif == null) { + return "NULL"; + } + + Class<? extends INotificationData> clazz = iNotif.getClass(); + + Method[] declaredMethods = clazz.getDeclaredMethods(); + + if (declaredMethods == null || declaredMethods.length == 0) { + return "EMPTY"; // No declared methods in this class !!! + } + + StringBuilder buffer = new StringBuilder("ASDC Notification:"); + buffer.append(System.lineSeparator()); + + for (Method m : declaredMethods) { + if ((m != null) && isGetter(m)) { + for (String prefix : GETTER_PREFIXES) { + if (m.getName().startsWith(prefix)) { + buffer.append(m.getName().substring(prefix.length())); + break; + } + } + try { + buffer.append(testNull(m.invoke(iNotif, (Object[]) null))); + } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { + logger.debug("Exception", e); + buffer.append("UNREADABLE"); + } + buffer.append(System.lineSeparator()); + } + } + + return buffer.toString(); + } + + private static boolean isGetter(Method method) { + + // Must start with a valid (and known) prefix + boolean prefixFound = false; + for (String prefix : GETTER_PREFIXES) { + if (method.getName().startsWith(prefix)) { + prefixFound = true; + break; + } + } + if (!prefixFound) { + return false; + } + + // Must not take any input arguments + if (method.getParameterTypes().length != 0) { + return false; + } + + // Must not have return type 'void' + if (void.class.equals(method.getReturnType())) { + return false; + } + + // Must be public + if (!Modifier.isPublic(method.getModifiers())) { + return false; + } + + return true; + } + + private static String testNull(Object object) { + if (object == null) { + return "NULL"; + } else if (object instanceof Integer) { + return object.toString(); + } else if (object instanceof String) { + return (String) object; + } else { + return "Type not recognized"; + } + } + + private static void registerForLog(INotificationData objectToLog) { + INotificationData proxy = (INotificationData) Proxy.newProxyInstance(INotificationData.class.getClassLoader(), + new Class[] {INotificationData.class}, NotificationLogging.getHandler()); + objectMethodsToLog.put(proxy, new ArrayList<>()); + } + + private static <T> void methodToLog(T methodCall) { + // + } + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + // TODO Auto-generated method stub + return null; + } } |