System.out.println(portletApp);
}
// now generate web part
WebApplicationDefinitionImpl webApp = null;
if (webXml.exists()) {
org.w3c.dom.Document webDocument =
XmlParser.parseWebXml(new FileInputStream(webXml));
Unmarshaller unmarshallerWeb = new Unmarshaller(mappingWebXml);
// modified by YCLI: START :: to ignore extra elements and attributes
unmarshallerWeb.setIgnoreExtraElements(true);
unmarshallerWeb.setIgnoreExtraAttributes(true);
// modified by YCLI: END
webApp =
(WebApplicationDefinitionImpl) unmarshallerWeb.unmarshal(
webDocument);
} else {
webApp = new WebApplicationDefinitionImpl();
DisplayNameImpl dispName = new DisplayNameImpl();
dispName.setDisplayName(webModule);
dispName.setLocale(Locale.ENGLISH);
DisplayNameSetImpl dispSet = new DisplayNameSetImpl();
dispSet.add(dispName);
webApp.setDisplayNames(dispSet);
DescriptionImpl desc = new DescriptionImpl();
desc.setDescription("Automated generated Application Wrapper");
desc.setLocale(Locale.ENGLISH);
DescriptionSetImpl descSet = new DescriptionSetImpl();
descSet.add(desc);
webApp.setDescriptions(descSet);
}
org.apache.pluto.om.ControllerFactory controllerFactory =
new org.apache.pluto.portalImpl.om.ControllerFactoryImpl();
ServletDefinitionListCtrl servletDefinitionSetCtrl =
(ServletDefinitionListCtrl) controllerFactory.get(
webApp.getServletDefinitionList());
Collection servletMappings = webApp.getServletMappings();
Iterator portlets =
portletApp.getPortletDefinitionList().iterator();
while (portlets.hasNext()) {
PortletDefinition portlet = (PortletDefinition) portlets.next();
// check if already exists
ServletDefinition servlet =
webApp.getServletDefinitionList().get(portlet.getName());
if (servlet != null) {
if (!servlet
.getServletClass()
.equals("org.apache.pluto.core.PortletServlet")) {
System.out.println(
"Note: Replaced already existing the servlet with the name '"
+ portlet.getName()
+ "' with the wrapper servlet.");
}
ServletDefinitionCtrl _servletCtrl =
(ServletDefinitionCtrl) controllerFactory.get(servlet);
_servletCtrl.setServletClass(
"org.apache.pluto.core.PortletServlet");
} else {
servlet =
servletDefinitionSetCtrl.add(
portlet.getName(),
"org.apache.pluto.core.PortletServlet");
}
ServletDefinitionCtrl servletCtrl =
(ServletDefinitionCtrl) controllerFactory.get(servlet);
DisplayNameImpl dispName = new DisplayNameImpl();
dispName.setDisplayName(portlet.getName() + " Wrapper");
dispName.setLocale(Locale.ENGLISH);
DisplayNameSetImpl dispSet = new DisplayNameSetImpl();
dispSet.add(dispName);
servletCtrl.setDisplayNames(dispSet);
DescriptionImpl desc = new DescriptionImpl();
desc.setDescription("Automated generated Portlet Wrapper");
desc.setLocale(Locale.ENGLISH);
DescriptionSetImpl descSet = new DescriptionSetImpl();
descSet.add(desc);
servletCtrl.setDescriptions(descSet);
ParameterSet parameters = servlet.getInitParameterSet();
ParameterSetCtrl parameterSetCtrl =
(ParameterSetCtrl) controllerFactory.get(parameters);
Parameter parameter1 = parameters.get("portlet-class");
if (parameter1 == null) {
parameterSetCtrl.add(
"portlet-class",
portlet.getClassName());
} else {
ParameterCtrl parameterCtrl =
(ParameterCtrl) controllerFactory.get(parameter1);
parameterCtrl.setValue(portlet.getClassName());
}
Parameter parameter2 = parameters.get("portlet-guid");
if (parameter2 == null) {
parameterSetCtrl.add(
"portlet-guid",
portlet.getId().toString());
} else {
ParameterCtrl parameterCtrl =
(ParameterCtrl) controllerFactory.get(parameter2);
parameterCtrl.setValue(portlet.getId().toString());
}
boolean found = false;
Iterator mappings = servletMappings.iterator();
while (mappings.hasNext()) {
ServletMappingImpl servletMapping =
(ServletMappingImpl) mappings.next();
if (servletMapping
.getServletName()
.equals(portlet.getName())) {
found = true;
servletMapping.setUrlPattern(
"/" + portlet.getName().replace(' ', '_') + "/*");
}
}
if (!found) {
ServletMappingImpl servletMapping =
new ServletMappingImpl();
servletMapping.setServletName(portlet.getName());
servletMapping.setUrlPattern(
"/" + portlet.getName().replace(' ', '_') + "/*");
servletMappings.add(servletMapping);
}
SecurityRoleRefSet servletSecurityRoleRefs =
((ServletDefinitionImpl)servlet).getInitSecurityRoleRefSet();
SecurityRoleRefSetCtrl servletSecurityRoleRefSetCtrl =
(SecurityRoleRefSetCtrl) controllerFactory.get(
servletSecurityRoleRefs);
SecurityRoleSet webAppSecurityRoles = webApp.getSecurityRoles();
SecurityRoleRefSet portletSecurityRoleRefs =
portlet.getInitSecurityRoleRefSet();
// TODO - Do we need this call? The variable is never read
SecurityRoleRefSetCtrl portletSecurityRoleRefSetCtrl =
(SecurityRoleRefSetCtrl) controllerFactory.get(
portletSecurityRoleRefs);
Iterator p = portletSecurityRoleRefs.iterator();
while (p.hasNext()) {
SecurityRoleRef portletSecurityRoleRef =
(SecurityRoleRef) p.next();
if ( portletSecurityRoleRef.getRoleLink()== null
&&
webAppSecurityRoles.get(portletSecurityRoleRef.getRoleName())==null
){
System.out.println(
"Note: The web application has no security role defined which matches the role name \""
+ portletSecurityRoleRef.getRoleName()
+ "\" of the security-role-ref element defined for the wrapper-servlet with the name '"
+ portlet.getName()
+ "'.");
break;
}
SecurityRoleRef servletSecurityRoleRef =
servletSecurityRoleRefs.get(
portletSecurityRoleRef.getRoleName());
if (null != servletSecurityRoleRef) {
System.out.println(
"Note: Replaced already existing element of type <security-role-ref> with value \""
+ portletSecurityRoleRef.getRoleName()
+ "\" for subelement of type <role-name> for the wrapper-servlet with the name '"
+ portlet.getName()
+ "'.");
servletSecurityRoleRefSetCtrl.remove(
servletSecurityRoleRef);
}
servletSecurityRoleRefSetCtrl.add(portletSecurityRoleRef);
}
}
TagDefinitionImpl portletTagLib =
new TagDefinitionImpl();
Collection taglibs = webApp.getCastorTagDefinitions();
taglibs.add(portletTagLib);
if (debug) {
System.out.println(webApp);