X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=inline;f=opendaylight%2Fclustering%2Fservices_implementation%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fclustering%2Fservices_implementation%2Finternal%2FClassResolver.java;fp=opendaylight%2Fclustering%2Fservices_implementation%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fclustering%2Fservices_implementation%2Finternal%2FClassResolver.java;h=521a773966a42a340867f65640f1d64bf282b392;hb=81004658f4171a0f06c3a5496f39c61801189c04;hp=0000000000000000000000000000000000000000;hpb=74c92401812b8e77e8ceade6e8714d0fc1c35d3a;p=controller.git diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClassResolver.java b/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClassResolver.java new file mode 100644 index 0000000000..521a773966 --- /dev/null +++ b/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClassResolver.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.clustering.services_implementation.internal; + +import java.lang.ref.WeakReference; + +import org.jboss.marshalling.ContextClassResolver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class ClassResolver extends ContextClassResolver { + private WeakReference osgiClassLoader = null; + private static final Logger logger = LoggerFactory.getLogger(ClassResolver.class); + + public ClassResolver() { + ClassLoader cl = this.getClass() + .getClassLoader(); + if (cl != null) { + this.osgiClassLoader = new WeakReference(cl); + logger.trace("Acquired weak reference to OSGi classLoader {}", cl); + } + } + + @Override + protected ClassLoader getClassLoader() { + ClassLoader ret = null; + if (this.osgiClassLoader != null) { + ret = this.osgiClassLoader.get(); + if (ret != null) { + if (logger.isTraceEnabled()) { + logger.trace("Returning OSGi class loader {}", ret); + } + return ret; + } + } + + logger.warn("Could not resolve classloader!"); + return ret; + } +}