WsEndpointDDModifier.java

00001 
00025 package org.objectweb.jonas_ws.wsgen.ddmodifier;
00026 
00027 import org.objectweb.util.monolog.api.BasicLevel;
00028 import org.w3c.dom.Document;
00029 import org.w3c.dom.Element;
00030 import org.w3c.dom.Node;
00031 import org.w3c.dom.NodeList;
00032 import org.w3c.dom.Text;
00033 
00038 public class WsEndpointDDModifier extends DeploymentDescModifier {
00039 
00043     private static final String SERVLET = "servlet";
00044 
00048     private static final String SERVLET_NAME = "servlet-name";
00049 
00053     private static final String SERVLET_CLASS = "servlet-class";
00054 
00058     private static final String SERVLET_MAPPING = "servlet-mapping";
00059 
00063     private static final String URL_MAPPING = "url-pattern";
00064 
00068     private static final String INIT_PARAM = "init-param";
00069 
00073     private static final String PARAM_NAME = "param-name";
00074 
00078     private static final String PARAM_VALUE = "param-value";
00079 
00083     private static final String SECURITY_ROLE_REF = "security-role-ref";
00084 
00088     private static final String URL_PATTERN = "url-pattern";
00089 
00093     private static final String SECURITY_CONSTRAINT = "security-constraint";
00094 
00099     public WsEndpointDDModifier(Document web) {
00100         super(web.getDocumentElement(), web);
00101     }
00102 
00108     public void addServlet(String name, String classname) {
00109         Element servlet = newJ2EEElement(SERVLET);
00110         Element servletName = newJ2EEElement(SERVLET_NAME, name);
00111         Element servletClass = newJ2EEElement(SERVLET_CLASS, classname);
00112 
00113         servlet.appendChild(servletName);
00114         servlet.appendChild(servletClass);
00115 
00116         // add servlet in the webapp Element
00117         getElement().appendChild(servlet);
00118 
00119     }
00120 
00125     public void removeServlet(String name) {
00126         Element servlet = findServlet(name);
00127 
00128         if (servlet != null) {
00129             getElement().removeChild(servlet);
00130         }
00131     }
00132 
00138     public NodeList removeServletWithSecurity(String name) {
00139         Element servlet = findServlet(name);
00140         NodeList elements = null;
00141 
00142         if (servlet != null) {
00143 
00144             elements = servlet.getElementsByTagNameNS(J2EE_NS, SECURITY_ROLE_REF);
00145             // if the list is empty, return null
00146             if (elements.getLength() == 0) {
00147                 elements = null;
00148             }
00149             getElement().removeChild(servlet);
00150         }
00151         return elements;
00152     }
00153 
00159     public void addServletMapping(String name, String mapping) {
00160         Element servletMapping = newJ2EEElement(SERVLET_MAPPING);
00161         Element servletName = newJ2EEElement(SERVLET_NAME, name);
00162         Element urlMapping = newJ2EEElement(URL_MAPPING, mapping);
00163 
00164         servletMapping.appendChild(servletName);
00165         servletMapping.appendChild(urlMapping);
00166 
00167         // add servletMapping in the webapp Element
00168         getElement().appendChild(servletMapping);
00169     }
00170 
00177     public void addServletParam(String servletName, String pName, String pValue) {
00178         Element ip = newJ2EEElement(INIT_PARAM);
00179         Element pn = newJ2EEElement(PARAM_NAME, pName);
00180         Element pv = newJ2EEElement(PARAM_VALUE, pValue);
00181 
00182         ip.appendChild(pn);
00183         ip.appendChild(pv);
00184 
00185         Element servlet = findServlet(servletName);
00186         servlet.appendChild(ip);
00187 
00188     }
00189 
00196     public void addServletSecurityRoleRefs(String servletName, NodeList securityRoleRefs) {
00197         // find the servlet
00198         Element servlet = findServlet(servletName);
00199         // add all security-role-ref
00200         for (int i = 0; i < securityRoleRefs.getLength(); i++) {
00201             Node securityRoleRefItem = securityRoleRefs.item(i);
00202             servlet.appendChild(securityRoleRefItem);
00203         }
00204     }
00205 
00212     private Element findServlet(String name) {
00213         NodeList nl = getElement().getElementsByTagNameNS(J2EE_NS, SERVLET);
00214         Element servlet = null;
00215 
00216         for (int i = 0; (i < nl.getLength()) && (servlet == null); i++) {
00217             Element e = (Element) nl.item(i);
00218 
00219             NodeList names = e.getElementsByTagNameNS(J2EE_NS, SERVLET_NAME);
00220 
00221             // test servlet/servlet-name/#text-node.value
00222             if (names.item(0).getFirstChild().getNodeValue().equals(name)) {
00223                 servlet = e;
00224             }
00225         }
00226 
00227         return servlet;
00228     }
00229 
00235     public String removeServletMapping(String sName) {
00236         NodeList nl = getElement().getElementsByTagNameNS(J2EE_NS, SERVLET_MAPPING);
00237         Element mapping = null;
00238         String urlPatternValue = null;
00239 
00240         for (int i = 0; (i < nl.getLength()) && (mapping == null); i++) {
00241             Element e = (Element) nl.item(i);
00242 
00243             NodeList names = e.getElementsByTagNameNS(J2EE_NS, SERVLET_NAME);
00244 
00245             // test servlet-mapping/servlet-name/#text-node.value
00246             if (names.item(0).getFirstChild().getNodeValue().equals(sName)) {
00247                 mapping = e;
00248             }
00249         }
00250 
00251         if (mapping != null) {
00252             getLogger().log(BasicLevel.DEBUG, "mapping element found : " + mapping);
00253             // pick up the url-pattern before removing
00254             NodeList urlPatterns = mapping.getElementsByTagNameNS(J2EE_NS, URL_PATTERN);
00255             urlPatternValue = urlPatterns.item(0).getFirstChild().getNodeValue();
00256 
00257             getElement().removeChild(mapping);
00258         }
00259 
00260         return urlPatternValue;
00261     }
00262 
00269     public void updateSecurityConstraint(String oldUrlPatter, String newUrlPatterValue) {
00270 
00271         NodeList nl = getElement().getElementsByTagNameNS(J2EE_NS, SECURITY_CONSTRAINT);
00272 
00273         // loop over security constraints
00274         for (int i = 0; i < nl.getLength(); i++) {
00275             Element e = (Element) nl.item(i);
00276 
00277             // look at nested url-pattern Element(s)
00278             NodeList urlPatternCollection = e.getElementsByTagNameNS(J2EE_NS, URL_PATTERN);
00279             for (int j = 0; j < urlPatternCollection.getLength(); j++) {
00280 
00281                 Element urlPatternElement = (Element) urlPatternCollection.item(j);
00282                 Text urlPatternText = (Text) urlPatternElement.getFirstChild();
00283 
00284                 // if found urlPattern Element, replace its value
00285                 if (urlPatternText.getNodeValue().equals(oldUrlPatter)) {
00286                     urlPatternText.setNodeValue(newUrlPatterValue);
00287                 }
00288             }
00289         }
00290     }
00291 
00299     public void addEjbRef(String name, String home, String remote, String link) {
00300 
00301         Element ejbRef = newJ2EEElement("ejb-ref");
00302         Element ejbRefName = newJ2EEElement("ejb-ref-name", name);
00303         Element ejbRefType = newJ2EEElement("ejb-ref-type", "Session");
00304         Element ejbHome = newJ2EEElement("home", home);
00305         Element ejbRemote = newJ2EEElement("remote", remote);
00306         Element ejbLink = newJ2EEElement("ejb-link", link);
00307 
00308         ejbRef.appendChild(ejbRefName);
00309         ejbRef.appendChild(ejbRefType);
00310         ejbRef.appendChild(ejbHome);
00311         ejbRef.appendChild(ejbRemote);
00312         ejbRef.appendChild(ejbLink);
00313 
00314         getElement().appendChild(ejbRef);
00315 
00316     }
00317 
00325     public void addEjbLocalRef(String name, String home, String remote, String link) {
00326 
00327         Element ejbRef = newJ2EEElement("ejb-local-ref");
00328         Element ejbRefName = newJ2EEElement("ejb-ref-name", name);
00329         Element ejbRefType = newJ2EEElement("ejb-ref-type", "Session");
00330         Element ejbHome = newJ2EEElement("local-home", home);
00331         Element ejbRemote = newJ2EEElement("local", remote);
00332         Element ejbLink = newJ2EEElement("ejb-link", link);
00333 
00334         ejbRef.appendChild(ejbRefName);
00335         ejbRef.appendChild(ejbRefType);
00336         ejbRef.appendChild(ejbHome);
00337         ejbRef.appendChild(ejbRemote);
00338         ejbRef.appendChild(ejbLink);
00339 
00340         getElement().appendChild(ejbRef);
00341 
00342     }
00343 }

Generated on Tue Feb 15 15:06:00 2005 for JOnAS by  doxygen 1.3.9.1