Package com.sun.enterprise.deployment

Source Code of com.sun.enterprise.deployment.WebComponentDescriptor

/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License").  You
* may not use this file except in compliance with the License. You can obtain
* a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
* or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
* Sun designates this particular file as subject to the "Classpath" exception
* as provided by Sun in the GPL Version 2 section of the License file that
* accompanied this code.  If applicable, add the following below the License
* Header, with the fields enclosed by brackets [] replaced by your own
* identifying information: "Portions Copyrighted [year]
* [name of copyright owner]"
*
* Contributor(s):
*
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license."  If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above.  However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
package com.sun.enterprise.deployment;

import java.util.*;
import com.sun.enterprise.deployment.*;
import com.sun.enterprise.deployment.web.InitializationParameter;
import com.sun.enterprise.deployment.web.SecurityRoleReference;

    /**
    * I am a superclass representing the common data nad behavior of the deployment
    * information about a JSP or JavaServlet in J2EE.
    *
    *@author Danny Coward
    */
public class WebComponentDescriptor extends Descriptor  {
   
    private WebBundleDescriptor webBundleDescriptor = null;
    /** Constant for Basic authentication.*/
    public static final String BASIC_AUTHENTICATION = "basic";
    /** Constant for Form authentication.*/
    public static final String FORM_AUTHENTICATION = "form";
    /** Constant for Secure authentication.*/
    public static final String SSL_AUTHENTICATION = "ssl";
    /** Constant for the htpp GET method. */
    public static final String GET = "GET";
    /** Constant for the http PUT method.*/
    public static final String PUT = "PUT";
    /** Constant for the http POST method.*/
    public static final String POST = "POST";
    /** Constant for the http DELET method.*/
    public static final String DELETE = "DELETE";
   
    private Set initializationParameters;
    private Set urlPatterns;
    private String canonicalName;
    private int loadOnStartUp = -1;
    private Set securityRoleReferences;
   
    private RunAsIdentityDescriptor runAs;
   
    /**
    * The default constructor.
    */

    public WebComponentDescriptor() {}
   
    // the copy constructor
    public WebComponentDescriptor(WebComponentDescriptor other) {
        setCanonicalName(other.getCanonicalName());
        setServlet(other.isServlet());
        setWebComponentImplementation(
            other.getWebComponentImplementation());
        getInitializationParameterSet().addAll(
            other.getInitializationParameterSet());
        getUrlPatternsSet().addAll(other.getUrlPatternsSet());
        setLoadOnStartUp(other.getLoadOnStartUp());
        getSecurityRoleReferenceSet().addAll(
            other.getSecurityRoleReferenceSet());
        setRunAsIdentity(other.getRunAsIdentity());
        setWebBundleDescriptor(other.getWebBundleDescriptor());
    }

    private Set getInitializationParameterSet() {
  if (this.initializationParameters == null) {
      this.initializationParameters = new OrderedSet();
  }
  return this.initializationParameters = new OrderedSet(this.initializationParameters);
    }
   
  /**
  * Return the Set of servlet initialization parameters.
  */
    public Enumeration getInitializationParameters() {
  return (new Vector(this.getInitializationParameterSet())).elements();
    }
   
  /**
  * Return a matching initialization parameter by its name if there is one.
  */
    public InitializationParameter getInitializationParameterByName(String name) {
  for (Iterator itr = this.getInitializationParameterSet().iterator(); itr.hasNext();) {
      InitializationParameter next = (InitializationParameter) itr.next();
      if (next.getName().equals(name)) {
    return next;
      }
  }
  return null;
    }
   
  /**
  * Adds a servlet initialization parameter to this component.
  */
    public void addInitializationParameter(InitializationParameter initializationParameter) {
  this.getInitializationParameterSet().add(initializationParameter);
  this.changed();
    }
    /**
    * Removes the given servlet initialization parameter from this component.
    */
    public void removeInitializationParameter(InitializationParameter initializationParameter) {
  this.getInitializationParameterSet().remove(initializationParameter);
  this.changed();
    }

  /**
  * Return the set of URL pattern aliases for this component.
  */
    public Set getUrlPatternsSet() {
  if (this.urlPatterns == null) {
      this.urlPatterns = new OrderedSet();
  }
  return this.urlPatterns;
    }

  /**
  * Returns an enumeration of (String) URL pattern aliases for this component.
  */
    public Enumeration getUrlPatterns() {
  return (new Vector(this.getUrlPatternsSet())).elements();
    }
   
  /**
  * Adds an alias to this web component.
  */
    public void addUrlPattern(String urlPattern) {
  this.getUrlPatternsSet().add(urlPattern);
  this.changed();
    }
   
  /**
  * Removes a URL pattern from this web component.
  */
    public void removeUrlPattern(String urlPattern) {
  this.getUrlPatternsSet().remove(urlPattern);
  this.changed();
    }
   
    void setWebBundleDescriptor(WebBundleDescriptor webBundleDescriptor) {
  this.webBundleDescriptor = webBundleDescriptor;
    }
   
  /**
  * Return the web app object to which I belong or null
  */
    public WebBundleDescriptor getWebBundleDescriptor() {
  return this.webBundleDescriptor;
    }
   
  /**
  * The canonical name for the web component.
  */
    public String getCanonicalName() {
  if (this.canonicalName == null) {
      this.canonicalName = this.getName();
  }
  return this.canonicalName;
    }
   
  /**
  * Sets the canonical name of this web component.
  */
    public void setCanonicalName(String canonicalName) {
  this.canonicalName = canonicalName;
  this.changed();
    }
   
    /**
    * Return the order on which this component will be loaded by the web server.
    */
    public int getLoadOnStartUp() {
  return this.loadOnStartUp;
    }
   
    /**
    * Sets the order on which this component will be loaded by the web server.
    */
    public void setLoadOnStartUp(int loadOnStartUp) {
  this.loadOnStartUp = loadOnStartUp;
  this.changed();
    }
   
    /**
    * Sets the order on which this component will be loaded by the web server.
    */
    public void setLoadOnStartUp(String loadOnStartUp) throws NumberFormatException {
        this.loadOnStartUp = Integer.decode(loadOnStartUp).intValue();
        this.changed();
    }   
   
    Set getSecurityRoleReferenceSet() {
  if (this.securityRoleReferences == null) {
      this.securityRoleReferences = new OrderedSet();
  }
  return this.securityRoleReferences = new OrderedSet(this.securityRoleReferences);
    }
   
    /**
    * Return the Set of security role references that I have.
    */
    public Enumeration getSecurityRoleReferences() {
  return (new Vector(this.getSecurityRoleReferenceSet())).elements();
    }
   
    /**
    * Return a matching role reference by name or null if there is none matching.
    */
    public SecurityRoleReference getSecurityRoleReferenceByName(String roleReferenceName) {
  for (Enumeration e = this.getSecurityRoleReferences(); e.hasMoreElements();) {
      SecurityRoleReference nextRR = (SecurityRoleReference) e.nextElement();
      if (nextRR.getRolename().equals( roleReferenceName )) {
    return nextRR;
      }
  }
  return null;  
    }
   
    /**
    * Adds a security role reference to this web component.
    */
    public void addSecurityRoleReference(SecurityRoleReference securityRoleReference) {
  this.getSecurityRoleReferenceSet().add(securityRoleReference);
  this.changed();
    }
   
    /**
    * Removes the given security role reference from this web component.
    */
    public void removeSecurityRoleReference(SecurityRoleReference securityRoleReference) {
  this.getSecurityRoleReferenceSet().remove(securityRoleReference);
  this.changed();
    }
   
     /**
      * Gets the run-as of the referee EJB.
      * @return the value of run-as.
      */
     public void setRunAsIdentity(RunAsIdentityDescriptor runAs) {
         if (this.runAs == null) {
             this.runAs = runAs;
         }
     }
    
    /**
      * Sets the run-as of the referee EJB.
      * @param the value of run-as
      */
     public RunAsIdentityDescriptor getRunAsIdentity() {
         return this.runAs;
     }   

     public boolean getUsesCallerIdentity() {
  return (this.runAs==null);
     }

     public void setUsesCallerIdentity(boolean isCallerID) {
  if (isCallerID) {
      this.runAs = null;
  } else {
      this.runAs = new RunAsIdentityDescriptor("");
        }
     }

     public Application getApplication() {
  if (this.getWebBundleDescriptor()!=null) {
      return this.getWebBundleDescriptor().getApplication();
        }
  return null;
     }
    
     private String implFile="";
     private boolean isServlet=false;
    
     /**
      * sets the implementation file for this web component, the
      * implementation file is either a servlet class name of a jsp
      * file name.
      * @param implFile the servlet class name or the jsp file
      */
     public void setWebComponentImplementation(String implFile) {
         if (!isServlet &&  !implFile.startsWith("/")) {
    implFile = "/" + implFile;
   }            
         this.implFile = implFile;
         changed();
     }
    
     public String getWebComponentImplementation() {
         return implFile;        
     }
    
     public boolean isServlet() {
         return isServlet;
     }
    
     public void setServlet(boolean isServlet) {
         this.isServlet=isServlet;
     }
    
    /* -----------
    */   

    /**
    * A formatted string representing my state.
    */
    public void print(StringBuffer toStringBuffer) {
  super.print(toStringBuffer);
        toStringBuffer.append("WebComponentDescriptor\n");       
  toStringBuffer.append( "\n initializationParameters ").append(initializationParameters);
  toStringBuffer.append( "\n urlPatterns ").append(urlPatterns);
  toStringBuffer.append( "\n canonicalName ").append(canonicalName);
  toStringBuffer.append( "\n loadOnStartUp ").append(loadOnStartUp);
  toStringBuffer.append( "\n securityRoleReferences ").append(securityRoleReferences);
        if (isServlet()) {
            toStringBuffer.append( "\n servlet className ").append(getWebComponentImplementation());           
        } else {
            toStringBuffer.append( "\n jspFileName ").append(getWebComponentImplementation());           
        }       
    }

       
    public void changed() {
  if (this.getWebBundleDescriptor() != null) {
      this.getWebBundleDescriptor().changed();
  } else {
      super.changed();
  }
    }   

    public boolean equals(Object other) {
        if (other instanceof WebComponentDescriptor &&
            this.getCanonicalName().equals(((
            WebComponentDescriptor)other).getCanonicalName())) {
                return true;
        }
        return false;
    }

    public int hashCode() {
        int result = 17;
        result = 37*result + getCanonicalName().hashCode();
        return result;
    }


    // this method will combine the information from this "other"
    // WebComponentDescriptor with current WebComponentDescriptor
    //
    // when there are conflicts between the contents of the two,
    // the value from current WebComponentDescriptor will override
    // the value in "other"
    //
    // Note: in the Set API, we only add value when such value
    // is not existed in the Set already
    public void add(WebComponentDescriptor other) {
        // do not do anything if the canonical name of the two web
        // components are different
        if (! getCanonicalName().equals(other.getCanonicalName())) {
            return;
        }
        // do not do anything if the type of the two web
        // components are different
        if ( (isServlet() && !other.isServlet()) ||
             (!isServlet() && other.isServlet()) ) {
            return;
        }

        // for simple String types, we can rely on Set API
        getUrlPatternsSet().addAll(other.getUrlPatternsSet());

        // for complex types, only added it if the complex type with same
        // name is not in the set yet

        for (Iterator initParamIter =
            other.getInitializationParameterSet().iterator()
            initParamIter.hasNext();) {
            InitializationParameter initParam =
                (InitializationParameter)initParamIter.next();
            if (getInitializationParameterByName(initParam.getName()) == null) {
                getInitializationParameterSet().add(initParam);
            }
        }
        for (Iterator secRoleRefIter =
            other.getSecurityRoleReferenceSet().iterator();
            secRoleRefIter.hasNext();) {
            SecurityRoleReference secRoleRef =
                (SecurityRoleReference) secRoleRefIter.next();
            if (getSecurityRoleReferenceByName(secRoleRef.getRolename())
                == null) {
                getSecurityRoleReferenceSet().add(secRoleRef);
            }
        }

        // only set these values if they are not set in the current
        // web component already

        if (getLoadOnStartUp() == -1) {
            setLoadOnStartUp(other.getLoadOnStartUp());
        }
        if (getRunAsIdentity() == null) { 
            setRunAsIdentity(other.getRunAsIdentity());
        }
        if (getWebComponentImplementation() == null) {
            setWebComponentImplementation(
                other.getWebComponentImplementation());
        }
    }
}
TOP

Related Classes of com.sun.enterprise.deployment.WebComponentDescriptor

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.