Package com.dotmarketing.osgi

Source Code of com.dotmarketing.osgi.AbstractViewToolActivator

package com.dotmarketing.osgi;

import java.util.Arrays;

import org.apache.velocity.tools.view.PrimitiveToolboxManager;
import org.apache.velocity.tools.view.ToolInfo;
import com.dotcms.repackage.org.osgi.framework.BundleActivator;
import com.dotcms.repackage.org.osgi.framework.BundleContext;
import com.dotcms.repackage.org.osgi.framework.ServiceEvent;
import com.dotcms.repackage.org.osgi.framework.ServiceListener;
import com.dotcms.repackage.org.osgi.framework.ServiceReference;

import com.dotmarketing.util.Logger;

/**
* @see GenericBundleActivator
* @see GenericBundleActivator#registerViewToolService(com.dotcms.repackage.org.osgi.framework.BundleContext, org.apache.velocity.tools.view.ToolInfo)
* @deprecated Class initially used to register ViewTool objects from and OSGI plugin, now you should use the {@link GenericBundleActivator} class instead of this class
*             to register those ViewTool objects using the method {@link GenericBundleActivator#registerViewToolService(com.dotcms.repackage.org.osgi.framework.BundleContext, org.apache.velocity.tools.view.ToolInfo)}.
*/
public class AbstractViewToolActivator implements BundleActivator, ServiceListener {
 
  private PrimitiveToolboxManager tm;
 
  private BundleContext context;
 
  private ToolInfo info;
 
  public AbstractViewToolActivator(ToolInfo info) {
    this.info = info;
  }
 
  public void start(BundleContext context) throws Exception {
   
    // Save OSGI context
    this.context = context;
   
    // Try to register to ViewTool service
    doRegister();

    // Register itself as listener for service adding/removal
    context.addServiceListener(this);
   
  }

  public void stop(BundleContext context) throws Exception {
   
    // Try to remove ViewTool
    unregister();
   
    // Remove itselt as listener
    context.removeServiceListener(this);

  }
 
  private void doRegister() {
   
    ServiceReference serviceRefSelected = context.getServiceReference(PrimitiveToolboxManager.class.getName());

    if ( serviceRefSelected == null )
      return;
   
    Object service = context.getService(serviceRefSelected);
    this.tm = (PrimitiveToolboxManager) service;
    register();
   
  }
   
  private void register() {
    tm.addTool(info);
      Logger.info(this,"Added View Tool: " + info.getKey());
  }
 
  private void unregister() {
    if ( tm != null ) {
      tm.removeTool(info);
    }
    Logger.info(this,"Removed View Tool: " + info.getKey());
  }

  public void serviceChanged(ServiceEvent serviceEvent) {
   
    String[] objectClass = (String[]) serviceEvent.getServiceReference().getProperty("objectClass");

    if ( objectClass == null )
      return;
   
    if ( objectClass.length == 0 )
      return;
   
    if (!Arrays.asList(objectClass).contains(PrimitiveToolboxManager.class.getName()))
      return;

    switch (serviceEvent.getType()) {
     
      case ServiceEvent.MODIFIED:
        unregister();
        doRegister();
        break;

      case ServiceEvent.MODIFIED_ENDMATCH:
        break;

      case ServiceEvent.REGISTERED:
        doRegister();
        break;
       
      case ServiceEvent.UNREGISTERING:
        unregister();
        break;
    }
       
  }

}
TOP

Related Classes of com.dotmarketing.osgi.AbstractViewToolActivator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.