00001
00027 package org.objectweb.jonas_lib.deployment.api;
00028
00029 import java.util.Hashtable;
00030 import java.util.List;
00031 import java.util.Map;
00032 import java.util.Vector;
00033
00034 import javax.xml.namespace.QName;
00035
00036 import org.objectweb.jonas_lib.deployment.xml.InitParam;
00037 import org.objectweb.jonas_lib.deployment.xml.Handler;
00038
00039
00051 public class HandlerDesc {
00052
00054 private String name;
00055
00057 private String className;
00058
00060 private Class clazz;
00061
00063 private Map params = new Hashtable();
00064
00066 private List headers = new Vector();
00067
00069 private List roles = new Vector();
00070
00072 private List portNames = new Vector();
00073
00083 public HandlerDesc(ClassLoader classLoader, Handler handler)
00084 throws DeploymentDescException {
00085
00086 name = handler.getHandlerName();
00087
00088 className = handler.getHandlerClass();
00089
00090 try {
00091 clazz = classLoader.loadClass(className);
00092 } catch (ClassNotFoundException e) {
00093 throw new DeploymentDescException("handler class not found", e);
00094 }
00095
00096
00097 List iparams = handler.getInitParamList();
00098 try {
00099 for (int i = 0; i < iparams.size(); i++) {
00100
00101 InitParam p = (InitParam) iparams.get(i);
00102
00103 if (p != null) {
00104 params.put(p.getParamName(), p.getParamValue());
00105 }
00106 }
00107 } catch (NullPointerException e) {
00108 throw new DeploymentDescException("parameter name missing", e);
00109 }
00110
00111
00112 List shl = handler.getSoapHeaderList();
00113 for (int i = 0; i < shl.size(); i++) {
00114
00115 org.objectweb.jonas_lib.deployment.xml.Qname sh = (org.objectweb.jonas_lib.deployment.xml.Qname) shl.get(i);
00116
00117 if (sh != null) {
00118 QName qn = sh.getQName();
00119 headers.add(qn);
00120 }
00121 }
00122
00123
00124 List srl = handler.getSoapRoleList();
00125 for (int i = 0; i < srl.size(); i++) {
00126 String role = (String) srl.get(i);
00127 if (role != null) {
00128 roles.add(role);
00129 }
00130 }
00131
00132
00133 List pnl = handler.getPortNameList();
00134 for (int i = 0; i < pnl.size(); i++) {
00135 String pn = (String) pnl.get(i);
00136 if (pn != null) {
00137 portNames.add(pn);
00138 }
00139 }
00140 }
00141
00147 public String getName() {
00148 return name;
00149 }
00150
00151
00157 public String getHandlerClassName() {
00158 return className;
00159 }
00160
00166 public Class getHandlerClass() {
00167 return clazz;
00168 }
00169
00175 public Map getInitParams() {
00176 return params;
00177 }
00178
00186 public String getInitParam(String pname) {
00187 return (String) params.get(pname);
00188 }
00189
00195 public List getSOAPHeaders() {
00196 return headers;
00197 }
00198
00205 public List getSOAPRoles() {
00206 return roles;
00207 }
00208
00215 public List getPortNames() {
00216 return portNames;
00217 }
00218
00226 public boolean equals(Object other) {
00227 if (other == null) {
00228 return false;
00229 }
00230 if (!(other instanceof HandlerDesc)) {
00231 return false;
00232 }
00233 HandlerDesc ref = (HandlerDesc) other;
00234 if (!name.equals(ref.getName())) {
00235 return false;
00236 }
00237 if (!clazz.getName().equals(ref.getHandlerClass().getName())) {
00238 return false;
00239 }
00240 if (!params.equals(ref.getInitParams())) {
00241 return false;
00242 }
00243 if (!headers.equals(ref.getSOAPHeaders())) {
00244 return false;
00245 }
00246 if (!roles.equals(ref.getSOAPRoles())) {
00247 return false;
00248 }
00249 if (!portNames.equals(ref.getPortNames())) {
00250 return false;
00251 }
00252
00253 return true;
00254 }
00255
00259 public String toString() {
00260 StringBuffer sb = new StringBuffer();
00261 sb.append("\n" + getClass().getName());
00262 sb.append("\ngetName()=" + getName());
00263 sb.append("\ngetClassname()=" + getHandlerClassName());
00264 sb.append("\ngetSOAPRoles()=" + getSOAPRoles());
00265 sb.append("\ngetSOAPHeaders()=" + getSOAPHeaders());
00266 sb.append("\ngetInitParams()=" + getInitParams());
00267 sb.append("\ngetPortNames()=" + getPortNames());
00268 return sb.toString();
00269 }
00270
00271 }