/* * 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; } }