/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.plugin.manager; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.util.tracker.ServiceTracker; import com.enonic.cms.api.plugin.ext.Extension; final class ExtensionTracker extends ServiceTracker { private final ExtensionHolder holder; public ExtensionTracker(final BundleContext context, final ExtensionHolder holder) { super( context, Extension.class.getName(), null ); this.holder = holder; } @Override public Object addingService( final ServiceReference ref ) { final Object ext = super.addingService( ref ); if ( ext instanceof Extension ) { this.holder.add(ref, (Extension)ext); } return ext; } @Override public void removedService( final ServiceReference ref, final Object service ) { this.holder.remove(ref); super.removedService( ref, service ); } }