diff --git a/ccm-ldn-rss/doc/rss-standalone/README b/ccm-ldn-rss/doc/rss-standalone/README index 27fe5d314..cff30a0d5 100644 --- a/ccm-ldn-rss/doc/rss-standalone/README +++ b/ccm-ldn-rss/doc/rss-standalone/README @@ -4,7 +4,7 @@ application context: [webapps]/ccm-ldn-rss. Now it is installed inside the main APLAWS application context along with all other applications. -If shortcuts should be installed as its own web context again following +If rss should be installed as its own web context again following modifications are necessary: 1. remove webapp="xxx" from application.xml 2. move the files in this dir to WEB-INF/ @@ -15,7 +15,7 @@ modifications are necessary: Running it in its own webapplication context nevertheless is not suggestive. It needs several xsl files of the main application (esp. core) for basic -operations, which hac been directly mapped from the main applications directory +operations, which had been directly mapped from the main applications directory tree into its own directory tree. So no module separation is possible, no security context useable etc. diff --git a/ccm-ldn-rss/src/com/arsdigita/london/rss/Feed.java b/ccm-ldn-rss/src/com/arsdigita/london/rss/Feed.java index b02d57a9b..be29314a1 100755 --- a/ccm-ldn-rss/src/com/arsdigita/london/rss/Feed.java +++ b/ccm-ldn-rss/src/com/arsdigita/london/rss/Feed.java @@ -10,11 +10,11 @@ import com.arsdigita.persistence.SessionManager; import com.arsdigita.persistence.Session; import com.arsdigita.persistence.DataCollection; + /** * Domain object for an RSS channel. * @author Simon Buckle (sbuckle@arsdigita.com) */ - public class Feed extends ACSObject { public static final String BASE_DATA_OBJECT_TYPE diff --git a/ccm-ldn-rss/src/com/arsdigita/london/rss/Initializer.java b/ccm-ldn-rss/src/com/arsdigita/london/rss/Initializer.java index d5c18ddd2..29a9dd793 100755 --- a/ccm-ldn-rss/src/com/arsdigita/london/rss/Initializer.java +++ b/ccm-ldn-rss/src/com/arsdigita/london/rss/Initializer.java @@ -79,7 +79,7 @@ public class Initializer extends CompoundInitializer { ("ccm-ldn-rss.pdl.mf", new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl")))); - add(new LegacyInitializer("com/arsdigita/london/rss/enterprise.init")); + // add(new LegacyInitializer("com/arsdigita/london/rss/enterprise.init")); } /** diff --git a/ccm-ldn-rss/src/com/arsdigita/london/rss/Loader.java b/ccm-ldn-rss/src/com/arsdigita/london/rss/Loader.java index 9d159ca57..4b64a79db 100755 --- a/ccm-ldn-rss/src/com/arsdigita/london/rss/Loader.java +++ b/ccm-ldn-rss/src/com/arsdigita/london/rss/Loader.java @@ -18,12 +18,21 @@ package com.arsdigita.london.rss; +import com.arsdigita.categorization.CategoryPurpose; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainObject; +import com.arsdigita.kernel.ACSObjectInstantiator; import com.arsdigita.kernel.Kernel; import com.arsdigita.kernel.KernelExcursion; import com.arsdigita.loader.PackageLoader; +import com.arsdigita.persistence.DataObject; import com.arsdigita.portal.PortletType; import com.arsdigita.runtime.ScriptContext; import com.arsdigita.london.rss.portlet.WorkspaceDirectoryPortlet; +import com.arsdigita.web.Application; +import com.arsdigita.web.ApplicationSetup; +import com.arsdigita.web.ApplicationType; +import com.arsdigita.web.URL; import org.apache.log4j.Logger; @@ -43,11 +52,84 @@ public class Loader extends PackageLoader { public void excurse() { setEffectiveParty(Kernel.getSystemParty()); - loadWorkspaceDirectoryPortlet(); + // CatgegoryPurpose is deprecated and replaced by terms in + // some way. So this step may be ommitted. + String catKey = RSS.getConfig().getCategoryKey(); + s_log.info("Setting RSS Category Key to " + catKey + "."); + if (!CategoryPurpose.purposeExists(catKey)) { + (new CategoryPurpose(catKey, "RSS Feed")).save(); + } + + // load application type for admin application into database + // (i.e. create application type) + setupChannelControlCenter(); + + // Load local fveeds into database + setupLocalFeeds(); + + // load portlet type into database + loadWorkspaceDirectoryPortlet(); } }.run(); } + /** + * Creates the application type for the admin application as an + * (old style) compatible applicaiton. + */ + public void setupChannelControlCenter() { + ApplicationSetup setup = new ApplicationSetup(s_log); + + setup.setApplicationObjectType(RSS.BASE_DATA_OBJECT_TYPE); + setup.setKey("rss"); + setup.setTitle("RSS Channels"); + setup.setDescription("RSS Channels"); + setup.setSingleton(true); + setup.setInstantiator(new ACSObjectInstantiator() { + @Override + public DomainObject doNewInstance(DataObject dataObject) { + return new RSS(dataObject); + } + }); + ApplicationType type = setup.run(); + type.save(); + + if (!Application.isInstalled(RSS.BASE_DATA_OBJECT_TYPE, + "/channels/")) { + Application app = + Application.createApplication(type, + "channels", + "RSS", + null); + app.save(); + } + } + + public void setupLocalFeeds() { + + URL external = URL.there("/channels/rss/external.rss", null); + try { + Feed feed = Feed.retrieve(external.getURL()); + } catch (DataObjectNotFoundException ex) { + Feed feed = Feed.create(external.getURL(), + "External feeds", + "External rss content feeds", + true); + feed.save(); + } + + URL index = URL.there("/channels/rss/index.rss", null); + try { + Feed feed = Feed.retrieve(index.getURL()); + } catch (DataObjectNotFoundException ex) { + Feed feed = Feed.create(index.getURL(), + "Local content feeds", + "Local CMS content feeds", + true); + feed.save(); + } + } + private void loadWorkspaceDirectoryPortlet() { PortletType type = PortletType.createPortletType("Workspace Directory", PortletType.WIDE_PROFILE, diff --git a/ccm-ldn-rss/src/com/arsdigita/london/rss/RSSConfig.java b/ccm-ldn-rss/src/com/arsdigita/london/rss/RSSConfig.java index fedca4d57..352a1675b 100755 --- a/ccm-ldn-rss/src/com/arsdigita/london/rss/RSSConfig.java +++ b/ccm-ldn-rss/src/com/arsdigita/london/rss/RSSConfig.java @@ -27,26 +27,24 @@ import org.apache.log4j.Logger; /** * The file that contains all configuration information for - * the RSS application + * the RSS application. + * @version $Id: RSSConfig.java 1319 2006-09-15 10:52:49Z apevec $ */ public final class RSSConfig extends AbstractConfig { - public static final String versionId = - "$Id: RSSConfig.java 1319 2006-09-15 10:52:49Z apevec $" + - "$Author: apevec $" + - "$DateTime: 2003/11/27 11:55:32 $"; private static final Logger s_log = Logger.getLogger(RSSConfig.class); - private final Parameter m_categoryKey; - private final Parameter m_processingInstruction_xslt; + /** */ + private final Parameter m_categoryKey= new RSSCategoryKeyParameter + ("com.arsdigita.london.rss.categoryKey", Parameter.REQUIRED, "RSS"); + /** */ + private final Parameter m_processingInstruction_xslt= new StringParameter + ("com.arsdigita.london.rss.processingInstruction_xslt", + Parameter.OPTIONAL, null); public RSSConfig() { - m_categoryKey = new RSSCategoryKeyParameter - ("com.arsdigita.london.rss.categoryKey", Parameter.REQUIRED, "RSS"); - register(m_categoryKey); - m_processingInstruction_xslt = new StringParameter - ("com.arsdigita.london.rss.processingInstruction_xslt", Parameter.OPTIONAL, null); + register(m_categoryKey); register(m_processingInstruction_xslt); loadInfo(); diff --git a/ccm-ldn-rss/src/com/arsdigita/london/rss/dispatcher/RSSDispatcher.java b/ccm-ldn-rss/src/com/arsdigita/london/rss/dispatcher/RSSDispatcher.java index 0578d4021..b5061c3bb 100755 --- a/ccm-ldn-rss/src/com/arsdigita/london/rss/dispatcher/RSSDispatcher.java +++ b/ccm-ldn-rss/src/com/arsdigita/london/rss/dispatcher/RSSDispatcher.java @@ -35,11 +35,27 @@ import org.jdom.output.XMLOutputter; public abstract class RSSDispatcher implements Dispatcher { + /** + * + * @param request + * @param response + * @param actx + * @return + * @throws ServletException + */ public abstract RSSChannel getChannel(HttpServletRequest request, HttpServletResponse response, RequestContext actx) throws ServletException; + /** + * + * @param request + * @param response + * @param actx + * @throws IOException + * @throws ServletException + */ public void dispatch(HttpServletRequest request, HttpServletResponse response, RequestContext actx) diff --git a/ccm-ldn-rss/src/com/arsdigita/london/rss/dispatcher/SimpleRSSDispatcher.java b/ccm-ldn-rss/src/com/arsdigita/london/rss/dispatcher/SimpleRSSDispatcher.java index 3fc496977..3894a1634 100755 --- a/ccm-ldn-rss/src/com/arsdigita/london/rss/dispatcher/SimpleRSSDispatcher.java +++ b/ccm-ldn-rss/src/com/arsdigita/london/rss/dispatcher/SimpleRSSDispatcher.java @@ -30,10 +30,22 @@ public class SimpleRSSDispatcher extends RSSDispatcher { private RSSChannel m_channel; + /** + * Constructor. + * @param channel + */ public SimpleRSSDispatcher(RSSChannel channel) { m_channel = channel; } + /** + * Implementation auf abstract method in parent class + * @param request + * @param response + * @param actx + * @return + * @throws ServletException + */ public RSSChannel getChannel(HttpServletRequest request, HttpServletResponse response, RequestContext actx) diff --git a/ccm-ldn-rss/src/com/arsdigita/london/rss/installer/Initializer.java b/ccm-ldn-rss/src/com/arsdigita/london/rss/installer.nolongerInUse/Initializer.java.nolongerInUse similarity index 86% rename from ccm-ldn-rss/src/com/arsdigita/london/rss/installer/Initializer.java rename to ccm-ldn-rss/src/com/arsdigita/london/rss/installer.nolongerInUse/Initializer.java.nolongerInUse index 2230a566b..9f54a3ba0 100755 --- a/ccm-ldn-rss/src/com/arsdigita/london/rss/installer/Initializer.java +++ b/ccm-ldn-rss/src/com/arsdigita/london/rss/installer.nolongerInUse/Initializer.java.nolongerInUse @@ -21,15 +21,15 @@ package com.arsdigita.london.rss.installer; import com.arsdigita.initializer.Configuration; import com.arsdigita.initializer.InitializationException; -import com.arsdigita.persistence.TransactionContext; -import com.arsdigita.persistence.SessionManager; +// import com.arsdigita.persistence.TransactionContext; +//import com.arsdigita.persistence.SessionManager; import com.arsdigita.persistence.DataObject; import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DomainObject; import com.arsdigita.kernel.BaseInitializer; import com.arsdigita.kernel.ACSObjectInstantiator; -import com.arsdigita.categorization.CategoryPurpose; +// import com.arsdigita.categorization.CategoryPurpose; import com.arsdigita.london.rss.RSS; import com.arsdigita.london.rss.Feed; @@ -68,21 +68,23 @@ public class Initializer extends BaseInitializer { **/ protected void doStartup() throws InitializationException { - String catKey = RSS.getConfig().getCategoryKey(); - s_log.info("Setting RSS Category Key to " + catKey + "."); + // Moved into loader + // String catKey = RSS.getConfig().getCategoryKey(); + // s_log.info("Setting RSS Category Key to " + catKey + "."); - TransactionContext txn = SessionManager.getSession() - .getTransactionContext(); - txn.beginTxn(); + // TransactionContext txn = SessionManager.getSession() + // .getTransactionContext(); + // txn.beginTxn(); - if (!CategoryPurpose.purposeExists(catKey)) { - (new CategoryPurpose(catKey, "RSS Feed")).save(); - } + // if (!CategoryPurpose.purposeExists(catKey)) { + // (new CategoryPurpose(catKey, "RSS Feed")).save(); + // } - setupChannelControlCenter(); + // Moved into loader + // setupChannelControlCenter(); setupLocalFeeds(); - txn.commitTxn(); + // txn.commitTxn(); } public void setupChannelControlCenter() { @@ -120,8 +122,8 @@ public class Initializer extends BaseInitializer { public void setupLocalFeeds() { - URL external = URL.there("/channels/rss/external.rss", null); - + + URL external = URL.there("/channels/rss/external.rss", null); try { Feed feed = Feed.retrieve(external.getURL()); } catch (DataObjectNotFoundException ex) {