use of org.glassfish.web.deployment.runtime.SunWebAppImpl in project Payara by payara.
the class ASCacheHelperClass method check.
public Result check(WebBundleDescriptor descriptor) {
Result result = getInitializedResult();
ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
boolean oneFailed = false;
boolean notApp = false;
boolean oneWarning = false;
boolean presentHelper = false;
try {
Cache cache = ((SunWebAppImpl) descriptor.getSunDescriptor()).getCache();
CacheHelper[] helperClasses = null;
CacheHelper helperClass = null;
WebProperty[] webProps;
String name = null;
String classname = null;
String[] names = null;
// to-do vkv# check for class-name attribute.
if (cache != null)
helperClasses = cache.getCacheHelper();
if (cache != null && helperClasses != null && helperClasses.length > 0) {
names = new String[helperClasses.length];
for (int rep = 0; rep < helperClasses.length; rep++) {
helperClass = helperClasses[rep];
if (helperClass == null)
continue;
int i = rep + 1;
name = getXPathValue("sun-web-app/cache/cache-helper[" + i + "]/@name");
classname = getXPathValue("sun-web-app/cache/cache-helper[" + i + "]/@class-name");
Class hClass = null;
names[rep] = name;
if (name != null && name.length() != 0) {
// check if the name already exist
boolean isDuplicate = false;
for (int rep1 = 0; rep1 < rep; rep1++) {
if (name.equals(names[rep1])) {
isDuplicate = true;
break;
}
}
if (isDuplicate) {
oneFailed = true;
addErrorDetails(result, compName);
result.failed(smh.getLocalString(getClass().getName() + ".failed", "FAILED [AS-WEB cache-helper] name attribute [ {0} ], must be unique in the entire list of cache-helper.", new Object[] { name }));
} else {
if (classname != null && classname.length() != 0) {
hClass = loadClass(result, classname);
}
if (hClass != null)
presentHelper = true;
else
presentHelper = false;
if (!presentHelper) {
addWarningDetails(result, compName);
result.warning(smh.getLocalString(getClass().getName() + ".error", "WARNING [AS-WEB cache-helper] " + "name [ {0} ], class not present in the war file.", new Object[] { name }));
oneWarning = true;
} else {
addGoodDetails(result, compName);
result.passed(smh.getLocalString(getClass().getName() + ".passed", "PASSED [AS-WEB cache-helper] name [ {0} ], helper class is valid.", new Object[] { name }));
}
}
} else {
addErrorDetails(result, compName);
result.failed(smh.getLocalString(getClass().getName() + ".failed1", "FAILED [AS-WEB cache-helper] name [ {0} ], either empty or null.", new Object[] { name }));
oneFailed = true;
}
webProps = helperClass.getWebProperty();
if (ASWebProperty.checkWebProperties(webProps, result, descriptor, this)) {
oneFailed = true;
addErrorDetails(result, compName);
result.failed(smh.getLocalString(getClass().getName() + ".failed2", "FAILED [AS-WEB cache-helper] Atleast one name/value pair is not valid in helper-class of [ {0} ].", new Object[] { descriptor.getName() }));
}
}
// end of for
} else {
notApp = true;
addNaDetails(result, compName);
result.notApplicable(smh.getLocalString(getClass().getName() + ".notApplicable", "NOT APPLICABLE [AS-WEB cache-helper] There is no cache-helper element for the web application", new Object[] { descriptor.getName() }));
}
if (oneFailed) {
result.setStatus(Result.FAILED);
} else if (oneWarning) {
result.setStatus(Result.WARNING);
} else if (notApp) {
result.setStatus(Result.NOT_APPLICABLE);
} else {
result.setStatus(Result.PASSED);
}
} catch (Exception ex) {
oneFailed = true;
addErrorDetails(result, compName);
result.failed(smh.getLocalString(getClass().getName() + ".failed3", "FAILED [AS-WEB cache-helper] could not create the cache object"));
}
return result;
}
use of org.glassfish.web.deployment.runtime.SunWebAppImpl in project Payara by payara.
the class WebBundleRuntimeNode method writeDescriptor.
/**
* write the descriptor class to a DOM tree and return it
*
* @param parent node for the DOM tree
* @param bundleDescriptor the descriptor to write
* @return the DOM tree top node
*/
@Override
public Node writeDescriptor(Node parent, WebBundleDescriptorImpl bundleDescriptor) {
Element web = (Element) super.writeDescriptor(parent, bundleDescriptor);
SunWebAppImpl sunWebApp = (SunWebAppImpl) bundleDescriptor.getSunDescriptor();
// context-root?
appendTextChild(web, RuntimeTagNames.CONTEXT_ROOT, bundleDescriptor.getContextRoot());
// security-role-mapping
SecurityRoleMapping[] roleMappings = sunWebApp.getSecurityRoleMapping();
if (roleMappings != null && roleMappings.length > 0) {
SecurityRoleMappingNode srmn = new SecurityRoleMappingNode();
for (SecurityRoleMapping roleMapping : roleMappings) {
srmn.writeDescriptor(web, RuntimeTagNames.SECURITY_ROLE_MAPPING, roleMapping);
}
}
// servlet
Set servlets = bundleDescriptor.getServletDescriptors();
org.glassfish.web.deployment.node.runtime.gf.ServletNode servletNode = new org.glassfish.web.deployment.node.runtime.gf.ServletNode();
for (Iterator itr = servlets.iterator(); itr.hasNext(); ) {
WebComponentDescriptor servlet = (WebComponentDescriptor) itr.next();
servletNode.writeDescriptor(web, RuntimeTagNames.SERVLET, servlet);
}
// idempotent-url-pattern
IdempotentUrlPattern[] patterns = sunWebApp.getIdempotentUrlPatterns();
if (patterns != null && patterns.length > 0) {
IdempotentUrlPatternNode node = new IdempotentUrlPatternNode();
for (IdempotentUrlPattern pattern : patterns) {
node.writeDescriptor(web, RuntimeTagNames.IDEMPOTENT_URL_PATTERN, pattern);
}
}
// session-config?
if (sunWebApp.getSessionConfig() != null) {
SessionConfigNode scn = new SessionConfigNode();
scn.writeDescriptor(web, RuntimeTagNames.SESSION_CONFIG, sunWebApp.getSessionConfig());
}
// ejb-ref*
Set<EjbReference> ejbRefs = bundleDescriptor.getEjbReferenceDescriptors();
if (ejbRefs.size() > 0) {
EjbRefNode node = new EjbRefNode();
for (EjbReference ejbRef : ejbRefs) {
node.writeDescriptor(web, RuntimeTagNames.EJB_REF, ejbRef);
}
}
// resource-ref*
Set<ResourceReferenceDescriptor> resourceRefs = bundleDescriptor.getResourceReferenceDescriptors();
if (resourceRefs.size() > 0) {
ResourceRefNode node = new ResourceRefNode();
for (ResourceReferenceDescriptor resourceRef : resourceRefs) {
node.writeDescriptor(web, RuntimeTagNames.RESOURCE_REF, resourceRef);
}
}
// resource-env-ref*
Set<ResourceEnvReferenceDescriptor> resourceEnvRefs = bundleDescriptor.getResourceEnvReferenceDescriptors();
if (resourceEnvRefs.size() > 0) {
ResourceEnvRefNode node = new ResourceEnvRefNode();
for (ResourceEnvReferenceDescriptor resourceEnvRef : resourceEnvRefs) {
node.writeDescriptor(web, RuntimeTagNames.RESOURCE_ENV_REF, resourceEnvRef);
}
}
// service-ref*
if (bundleDescriptor.hasServiceReferenceDescriptors()) {
ServiceRefNode serviceNode = new ServiceRefNode();
for (ServiceReferenceDescriptor next : bundleDescriptor.getServiceReferenceDescriptors()) {
serviceNode.writeDescriptor(web, WebServicesTagNames.SERVICE_REF, next);
}
}
// message-destination-ref*
MessageDestinationRefNode.writeMessageDestinationReferences(web, bundleDescriptor);
// cache?
Cache cache = sunWebApp.getCache();
if (cache != null) {
CacheNode cn = new CacheNode();
cn.writeDescriptor(web, RuntimeTagNames.CACHE, cache);
}
// class-loader?
ClassLoader classLoader = sunWebApp.getClassLoader();
if (classLoader != null) {
ClassLoaderNode cln = new ClassLoaderNode();
cln.writeDescriptor(web, RuntimeTagNames.CLASS_LOADER, classLoader);
}
// jsp-config?
if (sunWebApp.getJspConfig() != null) {
WebPropertyNode propertyNode = new WebPropertyNode();
Node jspConfig = appendChild(web, RuntimeTagNames.JSP_CONFIG);
propertyNode.writeDescriptor(jspConfig, RuntimeTagNames.PROPERTY, sunWebApp.getJspConfig().getWebProperty());
}
// locale-charset-info?
if (sunWebApp.getLocaleCharsetInfo() != null) {
LocaleCharsetInfoNode localeNode = new LocaleCharsetInfoNode();
localeNode.writeDescriptor(web, RuntimeTagNames.LOCALE_CHARSET_INFO, sunWebApp.getLocaleCharsetInfo());
}
// parameter-encoding?
if (sunWebApp.isParameterEncoding()) {
Element parameter = appendChild(web, RuntimeTagNames.PARAMETER_ENCODING);
if (sunWebApp.getAttributeValue(SunWebApp.PARAMETER_ENCODING, SunWebApp.FORM_HINT_FIELD) != null) {
setAttribute(parameter, RuntimeTagNames.FORM_HINT_FIELD, sunWebApp.getAttributeValue(SunWebApp.PARAMETER_ENCODING, SunWebApp.FORM_HINT_FIELD));
}
if (sunWebApp.getAttributeValue(SunWebApp.PARAMETER_ENCODING, SunWebApp.DEFAULT_CHARSET) != null) {
setAttribute(parameter, RuntimeTagNames.DEFAULT_CHARSET, sunWebApp.getAttributeValue(SunWebApp.PARAMETER_ENCODING, SunWebApp.DEFAULT_CHARSET));
}
}
// property*
WebPropertyNode props = new WebPropertyNode();
props.writeDescriptor(web, RuntimeTagNames.PROPERTY, sunWebApp.getWebProperty());
// valve*
if (sunWebApp.getValve() != null) {
ValveNode valve = new ValveNode();
valve.writeDescriptor(web, RuntimeTagNames.VALVE, sunWebApp.getValve());
}
// message-destination*
RuntimeDescriptorNode.writeMessageDestinationInfo(web, bundleDescriptor);
// webservice-description*
WebServiceRuntimeNode webServiceNode = new WebServiceRuntimeNode();
webServiceNode.writeWebServiceRuntimeInfo(web, bundleDescriptor);
// error-url
if (sunWebApp.getAttributeValue(SunWebApp.ERROR_URL) != null) {
setAttribute(web, RuntimeTagNames.ERROR_URL, sunWebApp.getAttributeValue(SunWebApp.ERROR_URL));
}
// httpservlet-security-provider
if (sunWebApp.getAttributeValue(SunWebApp.HTTPSERVLET_SECURITY_PROVIDER) != null) {
setAttribute(web, RuntimeTagNames.HTTPSERVLET_SECURITY_PROVIDER, sunWebApp.getAttributeValue(SunWebApp.HTTPSERVLET_SECURITY_PROVIDER));
}
// keep-state
appendTextChild(web, RuntimeTagNames.KEEP_STATE, String.valueOf(bundleDescriptor.getKeepState()));
return web;
}
use of org.glassfish.web.deployment.runtime.SunWebAppImpl in project Payara by payara.
the class WebBundleRuntimeNode method addDescriptor.
/**
* Adds a new DOL descriptor instance to the descriptor instance associated with this XMLNode
*
* @param newDescriptor the new descriptor
*/
@Override
public void addDescriptor(Object newDescriptor) {
SunWebAppImpl sunWebApp = (SunWebAppImpl) descriptor.getSunDescriptor();
if (newDescriptor instanceof WebComponentDescriptor) {
WebComponentDescriptor servlet = (WebComponentDescriptor) newDescriptor;
// for backward compatibility with s1as schema2beans generated desc
Servlet s1descriptor = new Servlet();
s1descriptor.setServletName(servlet.getCanonicalName());
if (servlet.getRunAsIdentity() != null) {
s1descriptor.setPrincipalName(servlet.getRunAsIdentity().getPrincipal());
}
sunWebApp.addServlet(s1descriptor);
} else if (newDescriptor instanceof ServiceReferenceDescriptor) {
descriptor.addServiceReferenceDescriptor((ServiceReferenceDescriptor) newDescriptor);
} else if (newDescriptor instanceof SecurityRoleMapping) {
SecurityRoleMapping srm = (SecurityRoleMapping) newDescriptor;
sunWebApp.addSecurityRoleMapping(srm);
// store it in the application using pure DOL descriptors...
Application app = descriptor.getApplication();
if (app != null) {
Role role = new Role(srm.getRoleName());
SecurityRoleMapper rm = app.getRoleMapper();
if (rm != null) {
List<PrincipalNameDescriptor> principals = srm.getPrincipalNames();
for (int i = 0; i < principals.size(); i++) {
rm.assignRole(principals.get(i).getPrincipal(), role, descriptor);
}
List<String> groups = srm.getGroupNames();
for (int i = 0; i < groups.size(); i++) {
rm.assignRole(new Group(groups.get(i)), role, descriptor);
}
}
}
} else if (newDescriptor instanceof IdempotentUrlPattern) {
sunWebApp.addIdempotentUrlPattern((IdempotentUrlPattern) newDescriptor);
} else if (newDescriptor instanceof SessionConfig) {
sunWebApp.setSessionConfig((SessionConfig) newDescriptor);
} else if (newDescriptor instanceof Cache) {
sunWebApp.setCache((Cache) newDescriptor);
} else if (newDescriptor instanceof ClassLoader) {
sunWebApp.setClassLoader((ClassLoader) newDescriptor);
} else if (newDescriptor instanceof JspConfig) {
sunWebApp.setJspConfig((JspConfig) newDescriptor);
} else if (newDescriptor instanceof LocaleCharsetInfo) {
sunWebApp.setLocaleCharsetInfo((LocaleCharsetInfo) newDescriptor);
} else if (newDescriptor instanceof WebProperty) {
sunWebApp.addWebProperty((WebProperty) newDescriptor);
} else if (newDescriptor instanceof Valve) {
sunWebApp.addValve((Valve) newDescriptor);
} else
super.addDescriptor(descriptor);
}
use of org.glassfish.web.deployment.runtime.SunWebAppImpl in project Payara by payara.
the class JSPCompiler method configureJspc.
// //////////////////////////////////////////////////////////////////////////
/*
* Configures the given JspC instance with the jsp-config properties
* specified in the sun-web.xml of the web module represented by the
* given WebBundleDescriptor.
*
* @param jspc JspC instance to be configured
* @param wbd WebBundleDescriptor of the web module whose sun-web.xml
* is used to configure the given JspC instance
*/
private static void configureJspc(JspC jspc, WebBundleDescriptor wbd) {
SunWebAppImpl sunWebApp = (SunWebAppImpl) wbd.getSunDescriptor();
if (sunWebApp == null) {
return;
}
// START SJSAS 6384538
if (sunWebApp.sizeWebProperty() > 0) {
WebProperty[] webProperties = sunWebApp.getWebProperty();
for (WebProperty prop : webProperties) {
String pName = prop.getAttributeValue("name");
String pValue = prop.getAttributeValue("value");
if (pName == null || pValue == null) {
throw new IllegalArgumentException("Missing sun-web-app property name or value");
}
if ("enableTldValidation".equals(pName)) {
jspc.setIsValidationEnabled(Boolean.valueOf(pValue));
}
}
}
// END SJSAS 6384538
// START SJSAS 6170435
/*
* Configure JspC with the init params of the JspServlet
*/
Set<WebComponentDescriptor> webComponentDescriptors = wbd.getWebComponentDescriptors();
if (!webComponentDescriptors.isEmpty()) {
for (WebComponentDescriptor webComponentDesc : webComponentDescriptors) {
if ("jsp".equals(webComponentDesc.getCanonicalName())) {
Enumeration<InitializationParameter> en = webComponentDesc.getInitializationParameters();
if (en != null) {
while (en.hasMoreElements()) {
InitializationParameter initP = en.nextElement();
configureJspc(jspc, initP.getName(), initP.getValue());
}
}
break;
}
}
}
// END SJSAS 6170435
/*
* Configure JspC with jsp-config properties from sun-web.xml,
* which override JspServlet init params of the same name.
*/
JspConfig jspConfig = sunWebApp.getJspConfig();
if (jspConfig == null) {
return;
}
WebProperty[] webProperties = jspConfig.getWebProperty();
if (webProperties != null) {
for (WebProperty prop : webProperties) {
configureJspc(jspc, prop.getAttributeValue("name"), prop.getAttributeValue("value"));
}
}
}
use of org.glassfish.web.deployment.runtime.SunWebAppImpl in project Payara by payara.
the class WebContainer method processWebBundleDescriptor.
private void processWebBundleDescriptor(VirtualServer virtualServer, WebModule webModule, WebModuleConfig webModuleConfig, String displayContextPath) {
WebBundleDescriptor webBundleDescriptor = webModuleConfig.getDescriptor();
if (webBundleDescriptor != null) {
// Determine if an alternate DD is set for this web-module in the application
webModule.configureAlternateDD(webBundleDescriptor);
webModule.configureWebServices(webBundleDescriptor);
}
// Object containing sun-web.xml information
// The default context is the only case when wbd == null
final SunWebAppImpl iasBean = webBundleDescriptor == null ? null : (SunWebAppImpl) webBundleDescriptor.getSunDescriptor();
// set the sun-web config bean
webModule.setIasWebAppConfigBean(iasBean);
// Configure SingleThreadedServletPools, work/tmp directory etc
webModule.configureMiscSettings(virtualServer, displayContextPath);
// Configure alternate docroots if dummy web module
if (webModule.getID().startsWith(DEFAULT_WEB_MODULE_NAME)) {
webModule.setAlternateDocBases(virtualServer.getProperties());
}
// Configure the session manager and other related settings
webModule.configureSessionSettings(webBundleDescriptor, webModuleConfig);
}
Aggregations