KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > extensions > types > DefaultAgentType


1 package com.sslexplorer.extensions.types;
2
3 import java.io.File JavaDoc;
4 import java.io.IOException JavaDoc;
5 import java.util.HashMap JavaDoc;
6 import java.util.Iterator JavaDoc;
7 import java.util.Map JavaDoc;
8
9 import org.jdom.Element;
10
11 import com.sslexplorer.agent.AgentExtensionDefinition;
12 import com.sslexplorer.agent.AgentExtensionVerifier;
13 import com.sslexplorer.agent.AgentTunnel;
14 import com.sslexplorer.agent.DefaultAgentManager;
15 import com.sslexplorer.boot.ContextHolder;
16 import com.sslexplorer.core.CoreUtil;
17 import com.sslexplorer.extensions.ExtensionDescriptor;
18 import com.sslexplorer.extensions.ExtensionException;
19 import com.sslexplorer.security.SessionInfo;
20
21
22
23 /**
24  * Special extension type for the <i>Agent</i>.
25  *
26  * @author Brett Smith <a HREF="mailto: brett@3sp.com">&lt;brett@3sp.com&gt;</a>
27  */

28 public class DefaultAgentType extends AbstractJavaType {
29     private static Map JavaDoc<String JavaDoc, AgentExtensionDefinition> agentExtensions = new HashMap JavaDoc<String JavaDoc, AgentExtensionDefinition>();
30     
31     
32     /**
33      * Type name
34      */

35     public final static String JavaDoc TYPE = "defaultAgent";
36
37     /**
38      * Constructor.
39      */

40     public DefaultAgentType() {
41         super(TYPE, false);
42     }
43
44     /* (non-Javadoc)
45      * @see com.sslexplorer.extensions.types.AbstractJavaType#isHidden()
46      */

47     public boolean isHidden() {
48         return true;
49     }
50
51     /* (non-Javadoc)
52      * @see com.sslexplorer.extensions.types.AbstractJavaType#start(com.sslexplorer.extensions.ExtensionDescriptor, org.jdom.Element)
53      */

54     public void start(ExtensionDescriptor descriptor, Element element) throws ExtensionException {
55         super.start(descriptor, element);
56         try {
57             if(descriptor.containsFile("agent-en.jar")) {
58                 ContextHolder.getContext().addContextLoaderURL(descriptor.getFile("agent-en.jar").toURL());
59             }
60             if(descriptor.containsFile("launcher-en.jar")) {
61                 ContextHolder.getContext().addContextLoaderURL(descriptor.getFile("launcher-en.jar").toURL());
62             }
63         }
64         catch(IOException JavaDoc ioe) {
65             throw new ExtensionException(ExtensionException.INTERNAL_ERROR, ioe, "Failed to configure classpath for agent.");
66         }
67     }
68
69     /* (non-Javadoc)
70      * @see com.sslexplorer.extensions.ExtensionType#descriptorCreated(org.jdom.Element)
71      */

72     public void descriptorCreated(Element element, SessionInfo session) throws IOException JavaDoc {
73         Element agents = new Element("agents");
74         String JavaDoc extensionClasses = "";
75
76         for (Iterator JavaDoc it = agentExtensions.values().iterator(); it.hasNext();) {
77             AgentExtensionDefinition def = (AgentExtensionDefinition) it.next();
78
79             if(PluginType.getPlugin(def.getPlugin()) instanceof AgentExtensionVerifier) {
80                 if(!((AgentExtensionVerifier)PluginType.getPlugin(def.getPlugin())).verifyAccess(def.getName(),
81                         session.getUser()))
82                         continue;
83             }
84             Element a = (Element)def.getAgentXML().clone();
85
86             if (def.getClassName() != null) {
87                 extensionClasses += (extensionClasses.equals("") ? def.getClassName() : "," + def.getClassName());
88             }
89
90             agents.addContent(a);
91         }
92
93         // Add the agents element to the root descriptor
94
if (agents.getChildren().size() > 0) {
95             agents.setAttribute("extensionClasses", extensionClasses);
96             element.addContent(0, agents);
97         }
98         
99     }
100
101     /**
102      * @param agent
103      */

104     public static void addAgentExtension(AgentExtensionDefinition agent) {
105         agentExtensions.put(agent.getName(), agent);
106     }
107
108     /**
109      * @param agent
110      */

111     public static void removeAgentExtension(AgentExtensionDefinition agent) {
112         agentExtensions.remove(agent.getName());
113     }
114
115     /* (non-Javadoc)
116      * @see com.sslexplorer.extensions.ExtensionType#getTypeBundle()
117      */

118     public String JavaDoc getTypeBundle() {
119         return "extensions";
120     }
121
122 }
123
Popular Tags