Package com.adito.extensions.types

Source Code of com.adito.extensions.types.DefaultAgentType

package com.adito.extensions.types;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.jdom.Element;

import com.adito.agent.AgentExtensionDefinition;
import com.adito.agent.AgentExtensionVerifier;
import com.adito.agent.AgentTunnel;
import com.adito.agent.DefaultAgentManager;
import com.adito.boot.ContextHolder;
import com.adito.core.CoreUtil;
import com.adito.extensions.ExtensionDescriptor;
import com.adito.extensions.ExtensionException;
import com.adito.policyframework.Resource.LaunchRequirement;
import com.adito.security.SessionInfo;



/**
* Special extension type for the <i>Agent</i>.
*/
public class DefaultAgentType extends AbstractJavaType {
  private static Map<String, AgentExtensionDefinition> agentExtensions = new HashMap<String, AgentExtensionDefinition>();
 
 
  /**
   * Type name
   */
    public final static String TYPE = "defaultAgent";

  /**
   * Constructor.
   */
  public DefaultAgentType() {
    super(TYPE, false);
  }

  /* (non-Javadoc)
   * @see com.adito.extensions.types.AbstractJavaType#isHidden()
   */
  public boolean isHidden() {
    return true;
  }

  /* (non-Javadoc)
     * @see com.adito.extensions.types.AbstractJavaType#start(com.adito.extensions.ExtensionDescriptor, org.jdom.Element)
     */
    public void start(ExtensionDescriptor descriptor, Element element) throws ExtensionException {
        super.start(descriptor, element);
        try {
          if(descriptor.containsFile("agent-en.jar")) {
            ContextHolder.getContext().addContextLoaderURL(descriptor.getFile("agent-en.jar").toURL());
          }
          if(descriptor.containsFile("launcher-en.jar")) {
            ContextHolder.getContext().addContextLoaderURL(descriptor.getFile("launcher-en.jar").toURL());
          }
        }
        catch(IOException ioe) {
            throw new ExtensionException(ExtensionException.INTERNAL_ERROR, ioe, "Failed to configure classpath for agent.");
        }
    }

  /* (non-Javadoc)
   * @see com.adito.extensions.ExtensionType#descriptorCreated(org.jdom.Element)
   */
  public void descriptorCreated(Element element, SessionInfo session) throws IOException {
    Element agents = new Element("agents");
    String extensionClasses = "";

    for (Iterator it = agentExtensions.values().iterator(); it.hasNext();) {
      AgentExtensionDefinition def = (AgentExtensionDefinition) it.next();

      if(PluginType.getPlugin(def.getPlugin()) instanceof AgentExtensionVerifier) {
        if(!((AgentExtensionVerifier)PluginType.getPlugin(def.getPlugin())).verifyAccess(def.getName(),
            session.getUser()))
            continue;
      }
      Element a = (Element)def.getAgentXML().clone();

      if (def.getClassName() != null) {
        extensionClasses += (extensionClasses.equals("") ? def.getClassName() : "," + def.getClassName());
      }

      agents.addContent(a);
    }

    // Add the agents element to the root descriptor
    if (agents.getChildren().size() > 0) {
      agents.setAttribute("extensionClasses", extensionClasses);
      element.addContent(0, agents);
   
   
  }

  /**
   * @param agent
   */
  public static void addAgentExtension(AgentExtensionDefinition agent) {
    agentExtensions.put(agent.getName(), agent);
  }

  /**
   * @param agent
   */
  public static void removeAgentExtension(AgentExtensionDefinition agent) {
    agentExtensions.remove(agent.getName());
  }
 
  /* (non-Javadoc)
   * @see com.adito.extensions.ExtensionType#getTypeBundle()
   */
  public String getTypeBundle() {
    return "extensions";
  }

    /* (non-Javadoc)
     * @see com.adito.extensions.ExtensionType#getLaunchRequirement()
     */
    public LaunchRequirement getLaunchRequirement() {
        return LaunchRequirement.NOT_LAUNCHABLE;
    }

}
TOP

Related Classes of com.adito.extensions.types.DefaultAgentType

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.