com.sun.enterprise.web.pwc.PwcWebModule Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of payara-micro Show documentation
Show all versions of payara-micro Show documentation
Micro Distribution of the Payara Project
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2012 Oracle and/or its affiliates. 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_1_1.html
* or packager/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 packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [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.web.pwc;
import com.sun.enterprise.web.session.SessionCookieConfig;
import com.sun.enterprise.web.session.WebSessionCookieConfig;
import org.apache.catalina.Globals;
import org.apache.catalina.Wrapper;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.core.StandardWrapper;
import java.util.Enumeration;
/**
* Class representing a web module (servlet context).
*/
public abstract class PwcWebModule extends StandardContext {
// ----------------------------------------------------- Class Variables
// ----------------------------------------------------- Instance Variables
// The id of this web module as specified in the configuration.
protected String _id = null;
// The session cookie configuration for this web module.
private SessionCookieConfig _cookieConfig = null;
private boolean _useResponseCTForHeaders = false;
/**
* Determines whether or not we should encode the cookies.
* By default cookies are not URL encoded.
*/
private boolean _encodeCookies = false;
// START OF IASRI 4731830
/**
* Maximum number of SingleThreadModel instances for each wrapper
* in this context.
*/
private int stmPoolSize = 5;
// END OF IASRI 4731830
// START S1AS8PE 4920021
/**
* Rave required attribute
* True if the web-module implements web services endpoints.
*/
private boolean hasWebServices = false;
/**
* Rave required attribute
* An array of URL addresses defined in this web-module to invoke
* web services endpoints implementations.
*/
private String[] endpointAddresses = null;
// END S1AS8PE 4920021
// The web module context root
private String contextRoot;
// Indicates whether this WebModule has a web.xml deployment descriptor
private boolean hasWebXml;
private String moduleName;
private String[] cacheControls;
protected String formHintField = null;
protected String defaultCharset;
protected WebSessionCookieConfig webSessionCookieConfig = null;
/**
* Gets this web module's identifier.
*
* @return Web module identifier
*/
public String getID() {
return _id;
}
/**
* Sets this web module's identifier.
*
* @param id Web module identifier
*/
public void setID(String id) {
_id = id;
}
/**
* Gets the session tracking cookie configuration of this
* ServletContext.
*/
@Override
public synchronized javax.servlet.SessionCookieConfig getSessionCookieConfig() {
if (webSessionCookieConfig == null) {
webSessionCookieConfig = new WebSessionCookieConfig(this);
}
return webSessionCookieConfig;
}
/**
* Return the session cookie configuration for this web module.
*/
public SessionCookieConfig getSessionCookieConfigFromSunWebXml() {
return _cookieConfig;
}
/**
* Set the session cookie configuration for this web module.
*
* @param cookieConfig The new session cookie configuration
*/
public void setSessionCookieConfigFromSunWebXml(SessionCookieConfig cookieConfig) {
_cookieConfig = cookieConfig;
}
/**
* return parameter-encoding form-hint-field attribute value
*/
public String getFormHintField() {
return formHintField;
}
/**
* Gets the value of the default-charset attribute of the
* parameter-encoding element
*
* @return Value of the default-charset attribute of the
* parameter-encoding element, or null if not present
*/
public String getDefaultCharset() {
return defaultCharset;
}
/**
* sets _useResponseCTForHeaders property value. When
* _useResponseCTForHeaders is set to true, it means that
* we send the response header in the same encoding of the
* response charset instead of UTF-8, (see the method sendHeaders
* in com.sun.enterprise.web.connector.nsapi.nsapiNSAPIResponse)
*/
public void setResponseCTForHeaders() {
_useResponseCTForHeaders = true;
}
/**
* Determines whether cookies should be encoded or not.
* If the property encodeCookies is set to false in sun-web.xml,
* cookies will not be URL encoded. The default behaviuor is that
* we always encode the cookies unless the property encodeCookies
* is set to false in sun-web.xml.
*/
public void setEncodeCookies(boolean flag) {
_encodeCookies = flag;
}
/**
* return _useResponseCTForHeaders property value
*/
public boolean getResponseCTForHeaders() {
return _useResponseCTForHeaders;
}
/**
* return _encodeCookies property value
*/
public boolean getEncodeCookies() {
return _encodeCookies;
}
/**
* Return maximum number of instances that will be allocated when a single
* thread model servlet is used in this web module.
*/
public int getSTMPoolSize() {
return (this.stmPoolSize);
}
/**
* Set the maximum number of instances that will be allocated when a single
* thread model servlet is used in this web module.
*
* @param newPoolSize New value of SingleThreadModel servlet pool size
*/
public void setSTMPoolSize(int newPoolSize) {
int oldPoolSize = this.stmPoolSize;
this.stmPoolSize = newPoolSize;
support.firePropertyChange("stmPoolSize", Integer.valueOf(oldPoolSize),
Integer.valueOf(this.stmPoolSize));
}
/**
* Factory method to create and return a new Wrapper instance, of
* the Java implementation class appropriate for this Context
* implementation. The constructor of the instantiated Wrapper
* will have been called, but no properties will have been set.
*/
@Override
public Wrapper createWrapper() {
Wrapper wrapper = super.createWrapper();
((StandardWrapper) wrapper).setMaxInstances(stmPoolSize);
return wrapper;
}
// START S1AS8PE 4920021
/**
* Return the hasWebServices flag for this web module.
*/
public boolean getHasWebServices() {
return hasWebServices;
}
/**
* Set the hasWebServices boolean flag for this web module.
*
* @param hasWebServices boolean flag hasWebServices for this web module
*/
public void setHasWebServices(boolean hasWebServices) {
this.hasWebServices = hasWebServices;
}
/**
* Gets the URL addresses corresponding to the web services endpoints of
* this web module.
*
* @return Array of URL addresses corresponding to the web services
* endpoints of this web module
*/
public String[] getEndpointAddresses() {
return endpointAddresses;
}
/**
* Sets the URL addresses corresponding to the web services endpoints of
* this web module.
*
* @param endpointAddresses Array of URL addresses corresponding to the
* web services endpoints of this web module
*/
public void setEndpointAddresses(String[] endpointAddresses) {
this.endpointAddresses = (String[])endpointAddresses.clone();
}
// END S1AS8PE 4920021
/**
* Gets this web module's context root.
*
* @return Web module context root
*/
public String getContextRoot(){
return contextRoot;
}
/**
* Sets this web module's context root.
*
* @param contextRoot Web module context root
*/
public void setContextRoot(String contextRoot){
this.contextRoot = contextRoot;
}
/*
* @param hasWebXml true if this WebModule has a web.xml deployment
* descriptor, false otherwise
*/
public void setHasWebXml(boolean hasWebXml) {
this.hasWebXml = hasWebXml;
}
/*
* @return true if this WebModule has a web.xml deployment descriptor,
* false otherwise
*/
public boolean hasWebXml() {
return hasWebXml;
}
/**
* Sets this web module's name.
*
* @param moduleName Web module name
*/
public void setModuleName(String moduleName) {
this.moduleName = moduleName;
}
/**
* Gets this web module's name.
*
* @return Web module name
*/
public String getModuleName() {
return this.moduleName;
}
/**
* Sets the Cache-Control configuration for this web module.
*
* @param cacheControls Cache-Control configuration settings for this
* web module
*/
public void setCacheControls(String[] cacheControls) {
this.cacheControls = cacheControls;
}
/**
* Gets the Cache-Control settings of this web module.
*
* @return Cache-Control settings of this web module, or null if
* no such settings exist for this web module.
*/
public String[] getCacheControls() {
return cacheControls;
}
/**
* Returns true if this web module specifies a locale-charset-map in its
* sun-web.xml, false otherwise.
*
* @return true if this web module specifies a locale-charset-map in its
* sun-web.xml, false otherwise
*/
public abstract boolean hasLocaleToCharsetMapping();
/**
* Matches the given request locales against the charsets specified in
* the locale-charset-map of this web module's sun-web.xml, and returns
* the first matching charset.
*
* @param locales Request locales
*
* @return First matching charset, or null if this web module does not
* specify any locale-charset-map in its sun-web.xml, or no match was
* found
*/
public abstract String mapLocalesToCharset(Enumeration locales);
}