package com.kendelong.util.monitoring.webservice; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ExternalNameElementComputer { private final Logger logger = LoggerFactory.getLogger(this.getClass()); public String computeExternalNameElement(Class<?> clazz) { Class<?> correctClazz = findOriginalClass(clazz); String nameElement = null; if(correctClazz.isAnnotationPresent(WebServiceClient.class)) { nameElement = "client"; } if(correctClazz.isAnnotationPresent(WebServiceEndpoint.class)) { nameElement = "endpoint"; } return nameElement; } private Class<?> findOriginalClass(Class<?> clazz) { String className = clazz.getName(); String newClassName = cleanClassName(className); if(newClassName.equals(className)) { return clazz; } else { try { return clazz.getClassLoader().loadClass(newClassName); } catch(ClassNotFoundException e) { logger.warn("Class not found: [" + newClassName + "]"); return clazz; } } } String cleanClassName(String cn) { int index = cn.indexOf("$$EnhancerBySpring"); if(index < 0) { return cn; } else { return cn.substring(0, index); } } }