From: Prasanth Pallamreddy Date: Wed, 16 Oct 2013 18:48:56 +0000 (-0700) Subject: Remove the usages of @XmlSeeAlso annotation. X-Git-Tag: jenkins-controller-bulk-release-prepare-only-2-1~614 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=bbba9ddecc8fa5835d066741328d3d812b8433b0 Remove the usages of @XmlSeeAlso annotation. - The @XmlSeeAlso annotations are unnecessary now that the bundle scanner can detect them automatically. - minor fix to the bundle scanner to allow annotated classes to be loaded from a proper classloader Change-Id: I4445ddbdb5b2f2f8edce34f0c056e3da61f916d5 Signed-off-by: Prasanth Pallamreddy --- diff --git a/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleInfo.java b/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleInfo.java index a10893110c..4e94c5f845 100644 --- a/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleInfo.java +++ b/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleInfo.java @@ -69,7 +69,7 @@ import org.slf4j.LoggerFactory; result.add(entry.getKey()); } } - return BundleScanner.loadClasses(bundle, result); + return BundleScanner.loadClasses(result, bundle); } private boolean matches(Pattern pattern, Set values) { @@ -81,13 +81,22 @@ import org.slf4j.LoggerFactory; return false; } + /** + * Get classes with annotations matching a pattern + * + * @param allbundles - all bundles + * @param pattern - annotation pattern to match + * @param initBundle - the bundle which initiated this call + * + * @return list of annotated classes matching the pattern + */ public List> getAnnotatedClasses( Collection allbundles, - Pattern pattern) + Pattern pattern, Bundle initBundle) { List> classes = getAnnotatedClasses(pattern); processAnnotatedClassesInternal(this, allbundles, pattern, - new HashSet(), classes); + new HashSet(), classes, initBundle); return classes; } @@ -115,17 +124,18 @@ import org.slf4j.LoggerFactory; Collection bundlesToScan, Pattern pattern, Collection visited, - List> classes) + List> classes, + Bundle initBundle) { for (BundleInfo other : bundlesToScan) { if (other.getId() == target.getId()) continue; if (target.isDependantOn(other)) { if (!visited.contains(other)) { - classes.addAll(BundleScanner.loadClasses(other.getBundle(), - other.getExportedAnnotatedClasses(pattern))); + classes.addAll(BundleScanner.loadClasses( + other.getExportedAnnotatedClasses(pattern), initBundle)); visited.add(other); processAnnotatedClassesInternal(other, bundlesToScan, - pattern, visited, classes); + pattern, visited, classes, initBundle); } } } diff --git a/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanner.java b/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanner.java index 3e517e9a1f..a5a2073a61 100644 --- a/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanner.java +++ b/opendaylight/northbound/bundlescanner/implementation/src/main/java/org/opendaylight/controller/northbound/bundlescanner/internal/BundleScanner.java @@ -73,7 +73,8 @@ import org.slf4j.LoggerFactory; Pattern pattern = mergePatterns(annotations, false); List> result = null; if (includeDependentBundleClasses) { - result = info.getAnnotatedClasses(bundleAnnotations.values(), pattern); + result = info.getAnnotatedClasses(bundleAnnotations.values(), + pattern, context.getBundle()); } else { result = info.getAnnotatedClasses(pattern); } @@ -237,17 +238,23 @@ import org.slf4j.LoggerFactory; // find bundle dependencies } - public static List> loadClasses(Bundle bundle, - Collection annotatedClasses) + public static List> loadClasses( + Collection annotatedClasses, + Bundle initBundle) { List> result = new ArrayList>(); + StringBuilder errors = new StringBuilder(); for (String name : annotatedClasses) { try { - result.add(bundle.loadClass(name)); - } catch (Exception e) { - LOGGER.error("Unable to load class: {}", name, e); + result.add(initBundle.loadClass(name)); + } catch (ClassNotFoundException e) { + errors.append(name).append(", "); } } + if (LOGGER.isDebugEnabled() && errors.length() > 0) { + LOGGER.debug("Bundle: {} could not load classes: {}", + initBundle.getSymbolicName(), errors.toString()); + } return result; } diff --git a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/JacksonJsonProcessingExceptionMapper.java b/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/JacksonJsonProcessingExceptionMapper.java index ca0d1b7cae..5e5dee3279 100644 --- a/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/JacksonJsonProcessingExceptionMapper.java +++ b/opendaylight/northbound/commons/src/main/java/org/opendaylight/controller/northbound/commons/JacksonJsonProcessingExceptionMapper.java @@ -11,7 +11,6 @@ package org.opendaylight.controller.northbound.commons; import javax.ws.rs.Consumes; import javax.ws.rs.core.GenericEntity; import javax.ws.rs.core.MediaType; -import javax.ws.rs.Produces; import javax.ws.rs.core.Response; import javax.ws.rs.ext.ExceptionMapper; import javax.ws.rs.ext.Provider; @@ -22,7 +21,7 @@ import org.codehaus.jackson.JsonProcessingException; * A custom exception mapper for handling Jackson JsonProcessingException types */ @Provider -@Consumes({MediaType.APPLICATION_JSON, "text/json"}) +@Consumes({MediaType.APPLICATION_JSON}) public class JacksonJsonProcessingExceptionMapper implements ExceptionMapper { diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Action.java b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Action.java index cd3e45492d..6076293fbc 100644 --- a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Action.java +++ b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/action/Action.java @@ -20,10 +20,6 @@ import java.io.Serializable; */ @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) -@XmlSeeAlso({ Controller.class, Drop.class, Flood.class, FloodAll.class, HwPath.class, Loopback.class, Output.class, - PopVlan.class, PushVlan.class, SetDlDst.class, SetDlSrc.class, SetDlType.class, SetNwDst.class, SetNwSrc.class, - SetNwTos.class, SetTpDst.class, SetTpSrc.class, SetVlanCfi.class, SetVlanId.class, SetVlanPcp.class, - SwPath.class }) public abstract class Action implements Serializable { private static final long serialVersionUID = 1L; private static final Logger logger = LoggerFactory.getLogger(Action.class); diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Property.java b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Property.java index 9dc00d0dcd..c36ac92cef 100644 --- a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Property.java +++ b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/core/Property.java @@ -31,11 +31,6 @@ import javax.xml.bind.annotation.XmlSeeAlso; */ @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) -@XmlSeeAlso({ Config.class, Name.class, State.class, TimeStamp.class, - Latency.class, Bandwidth.class, Tier.class, Actions.class, - AdvertisedBandwidth.class, Buffers.class, Capabilities.class, - MacAddress.class, PeerBandwidth.class, SupportedBandwidth.class, - Tables.class, Description.class, ForwardingMode.class }) abstract public class Property implements Serializable, Cloneable { private static final long serialVersionUID = 1L; private final String name; diff --git a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/DataLinkAddress.java b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/DataLinkAddress.java index 96a992b3c3..fbf8a0d1b1 100644 --- a/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/DataLinkAddress.java +++ b/opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/packet/address/DataLinkAddress.java @@ -26,7 +26,6 @@ import javax.xml.bind.annotation.XmlSeeAlso; * */ @XmlRootElement -@XmlSeeAlso( { EthernetAddress.class }) abstract public class DataLinkAddress implements Serializable { private static final long serialVersionUID = 1L; private String name; @@ -53,6 +52,7 @@ abstract public class DataLinkAddress implements Serializable { * * @return A clone of this DataLinkAddress */ + @Override abstract public DataLinkAddress clone(); /**