Added first very minimalistic support for JSR286 compliant portlet support installable in Apache Pluto portlet server. i

Modify local.runtime.properties to use Pluto (uncomment the Pluto lines) and use 'ant install-runtime' to install Pluto as test environment. 
Modify project.xml to install ccm into an other context as ROOT! libreccm may be a nice choice. 
Deploy and load-bundle as usual. 
Invoke http://localhost:8080/libreccm to operate CCM as usual. 
Invoke http://localhost:8080/pluto to operate Pluto, login as admin and use Pluto admin tool to add ContentItemJSRPortlet to the Pluto Portal page (displays currently a simple HelloWorld Text).





git-svn-id: https://svn.libreccm.org/ccm/trunk@2652 8810af33-2d31-482b-a856-94f89814c4df
master
pb 2014-05-25 20:24:49 +00:00
parent 5097bfa76a
commit d5499cd6eb
25 changed files with 857 additions and 105 deletions

View File

@ -24,12 +24,14 @@ import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
import com.arsdigita.util.Assert;
import org.apache.log4j.Logger;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.util.Date;
import org.apache.log4j.Logger;
/**
* This content type represents an agenda data abject.
*
@ -53,7 +55,7 @@ import java.util.Date;
public class Agenda extends GenericArticle {
/** Data object type for this domain object (for CMS compatibility) */
private static final Logger s_log = Logger.getLogger(Logger.class);
private static final Logger s_log = Logger.getLogger(GenericArticle.class);
// PDL stuff *************************************************************
/** PDL property name for summary */
@ -192,6 +194,7 @@ public class Agenda extends GenericArticle {
set(SUMMARY, summary);
}
@Override
public Date getCreationDate() {
return (Date) get(CREATION_DATE);
}
@ -202,6 +205,7 @@ public class Agenda extends GenericArticle {
// Search stuff to allow the content type to be searchable
public static final int SUMMARY_LENGTH = 200;
@Override
public String getSearchSummary() {
TextAsset ta = getTextAsset();

View File

@ -0,0 +1,95 @@
/*
* Copyright (C) 2014 Peter Boy, Universitaet Bremen. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.portlet;
import com.arsdigita.portal.JSRPortlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.apache.log4j.Logger;
/**
* Currently a wrapper for ContentItemPortlet to deliver content to an JSR
* compliant portal server.
*
* WORK IN PROGRESS!
*
* @author pb
*/
public class ContentItemJSRPortlet extends JSRPortlet {
/** Internal logger instance to faciliate debugging. Enable logging output
* by editing /WEB-INF/conf/log4j.properties int the runtime environment
* and set com.arsdigita.portal.JSRPortlet=DEBUG
* by uncommenting or adding the line. */
private static final Logger s_log = Logger.getLogger(ContentItemJSRPortlet.class);
/**
*
* @param request
* @param response
* @throws PortletException
* @throws IOException
*/
@Override
protected void doEdit(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
response.setContentType("text/html");
PrintWriter writer = new PrintWriter(response.getWriter());
writer.println("You're now in Edit mode.");
}
/**
*
* @param request
* @param response
* @throws PortletException
* @throws IOException
*/
@Override
protected void doHelp(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
response.setContentType("text/html");
PrintWriter writer = new PrintWriter(response.getWriter());
writer.println("You're now in Help mode.");
}
/**
*
* @param request
* @param response
* @throws PortletException
* @throws IOException
*/
@Override
protected void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
response.setContentType("text/html");
PrintWriter writer = new PrintWriter(response.getWriter());
writer.println("Hello world! You're in View mode.");
}
}

View File

@ -0,0 +1,2 @@
javax.portlet.title=CCM Single Content Item
javax.portlet.short-title=Single Content Item

View File

@ -0,0 +1,2 @@
javax.portlet.title=Ein CCM Dokument
javax.portlet.short-title=Einzeldokument

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
<portlet>
<portlet-name>ContentItemJSRPortlet</portlet-name>
<display-name>ContentItem JSR Portlet</display-name>
<description>Single Content Item</description>
<portlet-class>
com.arsdigita.cms.portlet.ContentItemJSRPortlet
</portlet-class>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
<portlet-mode>HELP</portlet-mode>
</supports>
<portlet-info>
<title>Hello, Pluto at last!</title>
</portlet-info>
</portlet>
</portlet-app>

View File

@ -13,8 +13,11 @@
<ccm:buildRequires name="junitperf" version="1.8" relation="ge"/>
<ccm:buildRequires name="servlet-api" version="2.5" relation="ge"/>
<ccm:buildRequires name="jsp-api" version="2.1" relation="ge"/>
<ccm:buildRequires name="ojdbc14"/>
<ccm:buildRequires name="postgresql-jdbc"/>
<ccm:buildRequires name="portlet" version="2.0" relation="ge"/>
<!-- Oracle JDBC driver may not be part of CCM distribution by licence.
Has to be handled separately. -->
<!-- <ccm:buildRequires name="ojdbc14"/> -->
<ccm:runRequires name="servlet-api"/>
<ccm:runRequires name="jsp-api"/>
</ccm:dependencies>

View File

@ -0,0 +1,5 @@
ccm-core/etc/lib
contains the original distribution files of the libraries actually used in
ccm-core/lib and copied into CCM's WEB-INF/lib directory as external libs.
The version in CCM's lib may be adapted to CCM's requirements.

View File

@ -64,8 +64,7 @@ public final class BebopConfig extends AbstractConfig {
// /////////////////////////////////////////////////////////////////
/**
*
*/
* */
private final Parameter m_presenter = new SingletonParameter
("waf.bebop.presentation_manager", Parameter.REQUIRED,
new PageTransformer());

View File

@ -0,0 +1,43 @@
/*
* Copyright (C) 2014 Peter Boy, Universitaet Bremen. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.portal;
import javax.portlet.GenericPortlet;
import org.apache.log4j.Logger;
/**
* Currently a kind of wrapper class to enable CCM to deliver its portlets
* to JSR 286 compliant portal server.
*
* Currentliy WORK IN PROGRESS!
*
* @author pb
*/
public class JSRPortlet extends GenericPortlet {
/** Internal logger instance to faciliate debugging. Enable logging output
* by editing /WEB-INF/conf/log4j.properties int the runtime environment
* and set com.arsdigita.portal.JSRPortlet=DEBUG
* by uncommenting or adding the line. */
private static final Logger s_log = Logger.getLogger(JSRPortlet.class);
}

View File

@ -1,71 +0,0 @@
/*
* Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.portal;
import com.arsdigita.kernel.ACSObjectInstantiator;
import com.arsdigita.initializer.Configuration;
import com.arsdigita.initializer.InitializationException;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.domain.DomainObjectFactory;
import org.apache.log4j.Logger;
// //////////////////////////////////////////////////
// Replaced by NEW Initializer.
// Kept for the time of migration for easy reference.
// Will be removed later.
// //////////////////////////////////////////////////
/**
*
*
* Initializes the portal package.
*
* @author Justin Ross
* @version $Id: LegacyInitializer.java 738 2005-09-01 12:36:52Z sskracic $
*/
public class LegacyInitializer implements com.arsdigita.initializer.Initializer {
private static Logger s_log = Logger.getLogger(LegacyInitializer.class);
private Configuration m_conf = new Configuration();
public LegacyInitializer() throws InitializationException {
/* Empty */
}
public Configuration getConfiguration() {
return m_conf;
}
public void startup() {
DomainObjectFactory.registerInstantiator
(Portal.BASE_DATA_OBJECT_TYPE, new ACSObjectInstantiator() {
public DomainObject doNewInstance(DataObject dataObject) {
return new Portal(dataObject);
}
});
}
public void shutdown() {
/* Empty */
}
}

View File

@ -39,10 +39,7 @@ import java.util.LinkedList;
import org.apache.log4j.Logger;
/**
*
*
* <p>A domain class for portals. A Portal has a set of {@link
* Portlet}s.</p>
* <p>A domain class for portals. A Portal has a set of {@link Portlet}s.</p>
*
* <p>
* A Portal is a Persistence-backed framework for aggregating content
@ -69,6 +66,7 @@ public class Portal extends Resource {
private static final Logger s_log = Logger.getLogger(Portal.class);
@Override
protected String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE;
}
@ -123,6 +121,7 @@ public class Portal extends Resource {
* Create a new portal.
*
* @param title the default title of the portal template.
* @param parent
* @return a new portal template.
* @pre title != null
* @post return != null
@ -221,6 +220,7 @@ public class Portal extends Resource {
// Member properties
//
@Override
public String getTitle() {
String title = (String)get("title");
@ -229,6 +229,11 @@ public class Portal extends Resource {
return title;
}
/**
*
* @param title
*/
@Override
public void setTitle(String title) {
Assert.exists(title, String.class);
@ -253,7 +258,7 @@ public class Portal extends Resource {
// Only the methods getPortletListForCell() and save() may access
// this map. Otherwise, we endanger thread safety.
private Map m_cellPortletListMap = new HashMap();
private final Map m_cellPortletListMap = new HashMap();
private synchronized LinkedList getPortletListForCell(int cellNumber) {
Integer cellNumberInteger = new Integer(cellNumber);
@ -319,6 +324,7 @@ public class Portal extends Resource {
/**
* Return all of this Portal's Portlets for the given cell.
*
* @param cellNumber
* @return a set of Portlets in a PortletCollection.
* @post return != null
*/
@ -405,8 +411,10 @@ public class Portal extends Resource {
}
}
/**
*
*/
@Override
protected void beforeSave() {
if (s_log.isDebugEnabled()) {
s_log.debug("In before save on portal " + this);

View File

@ -14,22 +14,19 @@
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.web;
import com.arsdigita.kernel.security.UserContext;
import com.arsdigita.util.Assert;
import com.arsdigita.util.StringUtils;
//import com.arsdigita.util.UncheckedWrapperException;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
//import java.util.HashMap;
//import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;

View File

@ -0,0 +1,21 @@
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Apache Pluto
portlet injection code
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<servlet>
<servlet-name>ContentItemJSRPortlet</servlet-name>
<servlet-class>
org.apache.pluto.container.driver.PortletServlet
</servlet-class>
<init-param>
<param-name>portlet-name</param-name>
<param-value>ContentItemJSRPortlet</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ContentItemJSRPortlet</servlet-name>
<url-pattern>/PlutoInvoker/ContentItemJSRPortlet</url-pattern>
</servlet-mapping>

View File

@ -0,0 +1,545 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Scientific CMS</display-name>
<description>Content and Collaboration Management for Scientific Institutions</description>
<!-- path and filename of the log4j user accessible config file
WEB-INF/conf/log4j.properties is the built-in default value -->
<context-param>
<param-name>log4j-conf-file</param-name>
<param-value>WEB-INF/conf/log4j.properties</param-value>
</context-param>
<!-- Require secure connection by redirect to host-port part
of parameter waf.web.secure_server
<filter>
<filter-name>secured</filter-name>
<filter-class>com.arsdigita.web.SecureFilter</filter-class>
</filter>
-->
<!-- Initialize Profiler timers
NOT USED with standard / production
<filter>
<filter-name>profiler</filter-name>
<filter-class>com.arsdigita.profiler.ProfilerFilter</filter-class>
</filter>
-->
<filter>
<filter-name>shortcuts</filter-name>
<filter-class>com.arsdigita.shortcuts.ShortcutFilter</filter-class>
</filter>
<filter>
<filter-name>subsite</filter-name>
<filter-class>com.arsdigita.subsite.SubsiteFilter</filter-class>
</filter>
<!-- NOT USED HERE
<filter-mapping>
<filter-name>secured</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>profiler</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<filter-mapping>
<filter-name>subsite</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>shortcuts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Context Listener
required and used to initialize the runtime environment before any other
task is performed or any servlet initialized.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<listener>
<listener-class>com.arsdigita.web.CCMApplicationContextListener</listener-class>
</listener>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BASE SERVLET DECLARATIONS SECTION
basically requirred by ccm-core
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--
<servlet>
<servlet-name>reg</servlet-name>
<servlet-class>com.arsdigita.web.ContextRegistrationServlet</servlet-class>
<init-param>
<param-name>uri</param-name>
<param-value>/</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>ccm-dispatcher</servlet-name>
<servlet-class>com.arsdigita.web.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
-->
<servlet>
<servlet-name>ccm-dispatcher</servlet-name>
<servlet-class>com.arsdigita.web.CCMDispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>cache-manager</servlet-name>
<servlet-class>com.arsdigita.caching.CacheServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>db-test</servlet-name>
<servlet-class>com.arsdigita.web.monitoring.DBTestServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>versioning-log</servlet-name>
<servlet-class>com.arsdigita.versioning.VersioningServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.arsdigita.ui.login.LoginServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>webadmin</servlet-name>
<servlet-class>com.arsdigita.ui.admin.AdminServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>webadmin-permissions</servlet-name>
<servlet-class>com.arsdigita.ui.permissions.PermissionsServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>webdevsupport</servlet-name>
<servlet-class>com.arsdigita.webdevsupport.WebDevSupportServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>oid-redirect</servlet-name>
<servlet-class>com.arsdigita.web.OIDRedirectServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>resource-resolver</servlet-name>
<servlet-class>com.arsdigita.web.ResourceServlet</servlet-class>
</servlet>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ADDITIONAL SERVLET DECLARATIONS SECTION
basically requirred by ccm-cms
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<servlet>
<servlet-name>content-center</servlet-name>
<servlet-class>com.arsdigita.cms.ContentCenterServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>content-section</servlet-name>
<servlet-class>com.arsdigita.cms.ContentSectionServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>cms-service</servlet-name>
<servlet-class>com.arsdigita.cms.ServiceServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>content-type-xsl</servlet-name>
<servlet-class>com.arsdigita.cms.dispatcher.ContentTypeXSLServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>content-item-xsl</servlet-name>
<servlet-class>com.arsdigita.cms.dispatcher.ContentItemXSLServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>template-xsl</servlet-name>
<servlet-class>com.arsdigita.cms.dispatcher.TemplateXSLServlet</servlet-class>
</servlet>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MODULES SERVLET DECLARATIONS SECTION
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- module ccm-forum - servlet declarations BEGIN -->
<servlet>
<servlet-name>forum-main</servlet-name>
<servlet-class>com.arsdigita.forum.ForumServlet</servlet-class>
</servlet>
<!-- module ccm-forum - servlet declarations END -->
<servlet>
<servlet-name>portalworkspace-files</servlet-name>
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
<init-param>
<param-name>template-path</param-name>
<param-value>/templates/ccm-portalworkspace</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>navigation-files</servlet-name>
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
<init-param>
<param-name>template-path</param-name>
<param-value>/templates/ccm-navigation</param-value>
</init-param>
<init-param>
<param-name>file-resolver</param-name>
<param-value>com.arsdigita.navigation.NavigationFileResolver</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>portlet-type-xsl</servlet-name>
<servlet-class>com.arsdigita.dispatcher.PortletTypeXSLServlet</servlet-class>
</servlet>
<!-- module ccm-rssfeed - servlet declaration BEGIN -->
<servlet>
<servlet-name>rssfeed-files</servlet-name>
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
<init-param>
<param-name>template-path</param-name>
<param-value>/templates/ccm-rssfeed</param-value>
</init-param>
<init-param>
<param-name>file-resolver</param-name>
<param-value>com.arsdigita.rssfeed.RSSFileResolver</param-value>
</init-param>
</servlet>
<!-- module ccm-rssfeed - servlet declaration END -->
<!-- module ccm-ldn-search - servlet declarations BEGIN -->
<servlet>
<servlet-name>search-files</servlet-name>
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
<init-param>
<param-name>template-path</param-name>
<param-value>/templates/ccm-ldn-search</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>AxisServlet</servlet-name>
<display-name>Apache-Axis Servlet</display-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
<!-- module ccm-ldn-search - servlet declarations END -->
<!-- module ccm-shortcuts - servlet definitions -->
<servlet>
<servlet-name>shortcuts-files</servlet-name>
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
<init-param>
<param-name>template-path</param-name>
<param-value>/templates/ccm-shortcuts</param-value>
</init-param>
</servlet>
<!-- module ccm-subsite - servlet declarations BEGIN -->
<servlet>
<servlet-name>subsite-files</servlet-name>
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
<init-param>
<param-name>template-path</param-name>
<param-value>/templates/ccm-subsite</param-value>
</init-param>
</servlet>
<!-- module ccm-subsite - servlet declarations END -->
<!-- module ccm-ldn-terms - servlet declarations BEGIN -->
<servlet>
<servlet-name>terms-files</servlet-name>
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
<init-param>
<param-name>template-path</param-name>
<param-value>/templates/ccm-ldn-terms</param-value>
</init-param>
</servlet>
<!-- module ccm-ldn-terms - servlet declarations END -->
<!-- module ccm-themedirector - servlet declarations BEGIN -->
<servlet>
<servlet-name>theme-files</servlet-name>
<servlet-class>com.arsdigita.web.ApplicationFileServlet</servlet-class>
<init-param>
<param-name>template-path</param-name>
<param-value>/templates/ccm-themedirector</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>ThemeDownload</servlet-name>
<servlet-class>com.arsdigita.themedirector.dispatcher.ThemeDownloadServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ThemePreviewServlet</servlet-name>
<display-name>Servlet to allow admins to preview look/feel</display-name>
<servlet-class>
com.arsdigita.themedirector.dispatcher.InternalThemePrefixerServlet
</servlet-class>
<init-param>
<param-name>prefix</param-name>
<param-value>/theme</param-value>
</init-param>
</servlet>
<!-- module ccm-themedirector - servlet declarations END -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MODULES SERVLET MAPPINGS SECTION
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- module ccm-forum - servlet mappings BEGIN -->
<servlet-mapping>
<servlet-name>forum-main</servlet-name>
<url-pattern>/forum-main/main/*</url-pattern>
</servlet-mapping>
<!-- module ccm-forum - servlet mappings END -->
<servlet-mapping>
<servlet-name>portlet-type-xsl</servlet-name>
<url-pattern>/themes/servlet/portlet-type/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>portalworkspace-files</servlet-name>
<url-pattern>/ccm-portalworkspace/files/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>navigation-files</servlet-name>
<url-pattern>/ccm-navigation/files/*</url-pattern>
</servlet-mapping>
<!-- module ccm-rssfeed - servlet mappings BEGIN -->
<servlet-mapping>
<servlet-name>rssfeed-files</servlet-name>
<url-pattern>/ccm-rssfeed/files/*</url-pattern>
</servlet-mapping>
<!-- module ccm-rssfeed - servlet mappings END -->
<!-- module ccm-ldn-search - servlet mappings BEGIN -->
<servlet-mapping>
<servlet-name>search-files</servlet-name>
<url-pattern>/ccm-ldn-search/files/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<!-- module ccm-ldn-search - servlet mappings END -->
<!-- module ccm-shortcuts - servlet mappings -->
<servlet-mapping>
<servlet-name>shortcuts-files</servlet-name>
<url-pattern>/ccm-shortcuts/files/*</url-pattern>
</servlet-mapping>
<!-- module ccm-subsite - servlet mappings BEGIN -->
<servlet-mapping>
<servlet-name>subsite-files</servlet-name>
<url-pattern>/ccm-subsite/files/*</url-pattern>
</servlet-mapping>
<!-- module ccm-subsite - servlet mappings END -->
<!-- module ccm-ldn-terms - servlet mappings BEGIN -->
<servlet-mapping>
<servlet-name>terms-files</servlet-name>
<url-pattern>/ccm-ldn-terms/files/*</url-pattern>
</servlet-mapping>
<!-- module ccm-ldn-terms - servlet mappings END -->
<!-- module ccm-themedirector - servlet mappings BEGIN -->
<servlet-mapping>
<servlet-name>theme-files</servlet-name>
<url-pattern>/theme-files/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ThemeDownload</servlet-name>
<url-pattern>/theme-files/download/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ThemePreviewServlet</servlet-name>
<url-pattern>/theme/*</url-pattern>
</servlet-mapping>
<!-- module ccm-themedirector - servlet mappings END -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BASE SERVLET MAPPINGS SECTION
basically requirred by ccm-core
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<servlet-mapping>
<servlet-name>ccm-dispatcher</servlet-name>
<url-pattern>/ccm/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cache-manager</servlet-name>
<url-pattern>/expireCache/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>db-test</servlet-name>
<url-pattern>/dbtest</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>versioning-log</servlet-name>
<url-pattern>/versioning/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>webadmin</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>webadmin-permissions</servlet-name>
<url-pattern>/admin-permissions/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>webdevsupport</servlet-name>
<url-pattern>/webdevsupport/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>oid-redirect</servlet-name>
<url-pattern>/redirect/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resource-resolver</servlet-name>
<url-pattern>/resource/*</url-pattern>
</servlet-mapping>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ADDITIONAL SERVLET MAPPINGS SECTION
basically requirred by ccm-cms
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<servlet-mapping>
<servlet-name>content-center</servlet-name>
<url-pattern>/templates/servlet/content-center/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>content-section</servlet-name>
<url-pattern>/templates/servlet/content-section/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cms-service</servlet-name>
<url-pattern>/templates/servlet/cms-service/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>content-item-xsl</servlet-name>
<url-pattern>/templates/servlet/content-item/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>content-type-xsl</servlet-name>
<url-pattern>/themes/servlet/content-type/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>template-xsl</servlet-name>
<url-pattern>/themes/servlet/template/*</url-pattern>
</servlet-mapping>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ERROR PAGES
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<error-page>
<exception-type>com.arsdigita.dispatcher.AccessDeniedException</exception-type>
<location>/error/access-denied.jsp</location>
</error-page>
<error-page>
<exception-type>com.arsdigita.dispatcher.ObjectNotFoundException</exception-type>
<location>/error/object-not-found.jsp</location>
</error-page>
<error-page>
<exception-type>com.arsdigita.kernel.permissions.PermissionException</exception-type>
<location>/error/permission-denied.jsp</location>
</error-page>
<error-page>
<exception-type>com.arsdigita.persistence.DbNotAvailableException</exception-type>
<location>/error/db-not-available.jsp</location>
</error-page>
<error-page>
<exception-type>com.arsdigita.db.DbNotAvailableException</exception-type>
<location>/error/db-not-available.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error/general.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Error</exception-type>
<location>/error/general.jsp</location>
</error-page>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TAG LIBS
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/bebop-show.tld</taglib-uri>
<taglib-location>/WEB-INF/bebop-show.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/bebop-define.tld</taglib-uri>
<taglib-location>/WEB-INF/bebop-define.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>

View File

@ -72,6 +72,27 @@
<listener-class>com.arsdigita.web.CCMApplicationContextListener</listener-class>
</listener>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Apache Pluto
portlet injection code
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<servlet>
<servlet-name>ContentItemJSRPortlet</servlet-name>
<servlet-class>
org.apache.pluto.container.driver.PortletServlet
</servlet-class>
<init-param>
<param-name>portlet-name</param-name>
<param-value>ContentItemJSRPortlet</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ContentItemJSRPortlet</servlet-name>
<url-pattern>/PlutoInvoker/ContentItemJSRPortlet</url-pattern>
</servlet-mapping>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BASE SERVLET DECLARATIONS SECTION
basically requirred by ccm-core

View File

@ -13,8 +13,8 @@ classes/
JDO enhancer developed by Red Hat for use in APLAWS build system
lib/
Set of jar-files used by several tools (esp. to process xml files)
and required files vor compilation (e.g. servlet API, JDBC drivers, etc)
Set of jar-files used by several TOOLS, e.g. ANT und specifically to
process xml files.
src/
Source and build script for Red Hat APLAWS JDO enhancer

View File

@ -1,4 +1,8 @@
dev-lib/
set of files requirred by
either the test runtime environment
or the compiler to do its work (e.g. jdbc drivers)
set of files requirred by CCM build tools,
and the ECDC tools chain (e.g. assembling the
web.xml file or setting up the environment).
e.g. ant, and probably in the test environment.
Those files which are actually used are included
in ccm.tools.lib.dir

Binary file not shown.

View File

@ -79,7 +79,13 @@
<attribute name="webxml" type="string" use="optional">
<annotation>
<documentation xml:lang="en">The file to be copied to web.xml in the ROOT webapp upon deployment.</documentation>
<documentation xml:lang="en">The file to be copied to web.xml in the CCM webapp upon deployment.</documentation>
</annotation>
</attribute>
<attribute name="portletxml" type="string" use="optional">
<annotation>
<documentation xml:lang="en">The file to be copied to portlet.xml in the CCM webapp upon deployment.</documentation>
</annotation>
</attribute>

View File

@ -1,4 +1,12 @@
dev-lib/
set of files requirred by
either the test runtime environment
or the compiler to do its work (e.g. jdbc drivers)
set of external libraries requirred by CCM at runtime and usually
provided by the runtime environment (e.g. servlet api).
Provided as additional classpath element at compile time
(and probably in test environment)
All libraries included in application.xml as
<dependencies>
<ccm:buildRequires name=.... />
</dependencies>
MUST be placed here.

View File

@ -0,0 +1,15 @@
dev-lib/
set of external libraries requirred by CCM at runtime and usually
provided by the runtime environment (e.g. servlet api).
Provided as additional classpath element at compile time
(and probably in test environment)
All libraries included in application.xml as
<dependencies>
<ccm:buildRequires name=.... />
</dependencies>
MUST be placed here.
Some files may be copied into the runtime environment to simulated
the intended production runtime.

Binary file not shown.

View File

@ -15,14 +15,31 @@
<project name="appserver" default="start">
<target name="install-tomcat">
<echo>Installing app server into ${app.server.parent.dir}</echo>
<unzip src="${app.server.bundles.zip}" dest="${app.server.parent.dir}"
<target name="install-runtime">
<echo>Installing runtime test environment into ${app.server.parent.dir}</echo>
<echo>Selected application server: ${app.server.vendor}-${app.server.type} (${app.server.version})</echo>
<echo> </echo>
<if>
<contains string="${app.server.type}" substring="Pluto"
casesensitive="false"/>
<then>
<unzip src="${app.server.bundles.zip}"
dest="${app.server.parent.dir}"
overwrite="true" />
</then>
<else>
<!-- Default Server is Tomcat, installed without ROOT -->
<unzip src="${app.server.bundles.zip}"
dest="${app.server.parent.dir}"
overwrite="true">
<patternset>
<exclude name="**/ROOT/**" />
</patternset>
</unzip>
</else>
</if>
<!-- Copy additional files needed for operation -->
<!--
@ -38,6 +55,10 @@
-->
</target>
<target name="install-tomcat" depends="install-runtime">
<echo>DEPRECATED! Use install-runtime instead.</echo>
</target>
<target name="install-liferay" depends="uninstall-liferay">
<echo>Installing Liferay into ${app.server.webapp.dir}</echo>
<mkdir dir="${app.server.webapp.dir}/portal"/>