Old Initializer für core portal und einige deprecated Klassen ausgebaut, verschiedene Dokumentation und Kommentierungen ergänzt.

git-svn-id: https://svn.libreccm.org/ccm/trunk@677 8810af33-2d31-482b-a856-94f89814c4df
master
pb 2011-01-10 10:24:12 +00:00
parent 41c173670d
commit 1559f37f53
26 changed files with 644 additions and 175 deletions

View File

@ -28,6 +28,8 @@
storage="ccm-core/intermedia.properties"/> storage="ccm-core/intermedia.properties"/>
<config class="com.arsdigita.templating.TemplatingConfig" <config class="com.arsdigita.templating.TemplatingConfig"
storage="ccm-core/templating.properties"/> storage="ccm-core/templating.properties"/>
<config class="com.arsdigita.ui.UIConfig"
storage="ccm-core/ui.properties"/>
<config class="com.arsdigita.versioning.VersioningConfig" <config class="com.arsdigita.versioning.VersioningConfig"
storage="ccm-core/versioning.properties"/> storage="ccm-core/versioning.properties"/>
<config class="com.arsdigita.web.WebConfig" <config class="com.arsdigita.web.WebConfig"

View File

@ -82,6 +82,8 @@ public class Initializer extends CompoundInitializer {
("ccm-core.pdl.mf", ("ccm-core.pdl.mf",
new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl")))); new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl"))));
// add(new com.arsdigita.ui.Initializer());
add(new com.arsdigita.portal.Initializer());
add(new com.arsdigita.search.Initializer()); add(new com.arsdigita.search.Initializer());
add(new com.arsdigita.search.lucene.Initializer()); add(new com.arsdigita.search.lucene.Initializer());
add(new com.arsdigita.search.intermedia.Initializer()); add(new com.arsdigita.search.intermedia.Initializer());
@ -91,6 +93,7 @@ public class Initializer extends CompoundInitializer {
add(new OptionalLegacyInitializer("enterprise.init")); add(new OptionalLegacyInitializer("enterprise.init"));
} }
@Override
public final void init(final DomainInitEvent e) { public final void init(final DomainInitEvent e) {
super.init(e); super.init(e);

View File

@ -4,7 +4,8 @@
// //
init com.arsdigita.globalization.Initializer { // init com.arsdigita.globalization.Initializer {
init com.arsdigita.globalization.LegacyInitializer {
// See http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc // See http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc
charsets = { charsets = {
"ISO-8859-1", "ISO-8859-1",
@ -58,7 +59,7 @@ init com.arsdigita.webdevsupport.Initializer {
init com.arsdigita.toolbox.CharsetEncodingProviderInitializer { } init com.arsdigita.toolbox.CharsetEncodingProviderInitializer { }
init com.arsdigita.ui.Initializer { init com.arsdigita.ui.LegacyInitializer {
// If using the default SimplePage class, the following // If using the default SimplePage class, the following
// two parameters specify the class names of the bebop // two parameters specify the class names of the bebop
// components to (optionally) add to margins of pages // components to (optionally) add to margins of pages
@ -75,7 +76,8 @@ init com.arsdigita.ui.Initializer {
} }
init com.arsdigita.portal.Initializer { } // init com.arsdigita.portal.Initializer { }
// init com.arsdigita.portal.LegacyInitializer { }
// The formbuilder application is now deprecated and will // The formbuilder application is now deprecated and will

View File

@ -41,17 +41,17 @@ import org.apache.log4j.Logger;
* *
* @version $Revision: #15 $ $Date: 2004/08/16 $ * @version $Revision: #15 $ $Date: 2004/08/16 $
*/ */
public class Initializer implements com.arsdigita.initializer.Initializer { public class LegacyInitializer implements com.arsdigita.initializer.Initializer {
private static final String DEFAULT_CHARSET = "defaultCharset"; private static final String DEFAULT_CHARSET = "defaultCharset";
private static final String CHARSETS = "charsets"; private static final String CHARSETS = "charsets";
private static final String LOCALES = "locales"; private static final String LOCALES = "locales";
private static final Logger s_log = Logger.getLogger(Initializer.class); private static final Logger s_log = Logger.getLogger(LegacyInitializer.class);
private Configuration m_conf = new Configuration(); private Configuration m_conf = new Configuration();
public Initializer() throws InitializationException { public LegacyInitializer() throws InitializationException {
m_conf.initParameter m_conf.initParameter
(CHARSETS, (CHARSETS,
"Recognized character sets", "Recognized character sets",

View File

@ -44,9 +44,11 @@ import org.apache.log4j.Logger;
* Represents a package type. * Represents a package type.
* *
* @since ACS 5.0 * @since ACS 5.0
* @deprecated Use {@link com.arsdigita.web.ApplicationType} instead.
* @version $Revision: #15 $, $Date: 2004/08/16 $ * @version $Revision: #15 $, $Date: 2004/08/16 $
* @version $Id: PackageType.java 287 2005-02-22 00:29:02Z sskracic $ * @version $Id: PackageType.java 287 2005-02-22 00:29:02Z sskracic $
* @deprecated without direct replacement. Refactor to use
* {@link com.arsdigita.web.ApplicationType} instead.
*/ */
public class PackageType extends com.arsdigita.domain.DomainObject { public class PackageType extends com.arsdigita.domain.DomainObject {
@ -396,6 +398,11 @@ public class PackageType extends com.arsdigita.domain.DomainObject {
* @return an array of stylesheets for the specificed locale and * @return an array of stylesheets for the specificed locale and
* output type. * output type.
* @see #addStylesheet(Stylesheet) * @see #addStylesheet(Stylesheet)
*
* @deprecated without direct replacement. It is designed to work with
* {@link com.arsdigita.templating.LegacyStylesheetResolver} which is
* replaced by {@link com.arsdigita.templating.PatternStylesheetResolver}.
* So thes method is just not used anymore. (pboy)
*/ */
public Stylesheet[] getStylesheets(Locale locale, String outputType) { public Stylesheet[] getStylesheets(Locale locale, String outputType) {
return StyleAssociation return StyleAssociation
@ -409,6 +416,11 @@ public class PackageType extends com.arsdigita.domain.DomainObject {
* "text/html" * "text/html"
* @return the best match stylesheet for this package. * @return the best match stylesheet for this package.
* @see #addStylesheet(Stylesheet) * @see #addStylesheet(Stylesheet)
*
* @deprecated without direct replacement. It is designed to work with
* {@link com.arsdigita.templating.LegacyStylesheetResolver} which is
* replaced by {@link com.arsdigita.templating.PatternStylesheetResolver}.
* So thes method is just not used anymore. (pboy)
*/ */
public Stylesheet getStylesheet(Locale locale, String outputType) { public Stylesheet getStylesheet(Locale locale, String outputType) {
return StyleAssociation return StyleAssociation

View File

@ -58,12 +58,13 @@ import org.apache.log4j.Logger;
* child of the root <code>SiteNode</code> with a name of "news."</li> * child of the root <code>SiteNode</code> with a name of "news."</li>
* </ul> * </ul>
* *
* @deprecated Use {@link com.arsdigita.web.Application} instead.
* @version 1.0 * @version 1.0
* @since ACS 5.0 */ * @version $Id: SiteNode.java 287 2005-02-22 00:29:02Z sskracic $
* @since ACS 5.0
* @deprecated Refactor to use {@link com.arsdigita.web.Application} instead.
*/
public class SiteNode extends ACSObject { public class SiteNode extends ACSObject {
public static final String versionId =
"$Id: SiteNode.java 287 2005-02-22 00:29:02Z sskracic $ by $Author: sskracic $, $DateTime: 2004/08/16 18:10:38 $";
private static final String s_typeName = "com.arsdigita.kernel.SiteNode"; private static final String s_typeName = "com.arsdigita.kernel.SiteNode";
private static final Logger s_log = private static final Logger s_log =
Logger.getLogger(SiteNode.class.getName()); Logger.getLogger(SiteNode.class.getName());
@ -86,6 +87,7 @@ public class SiteNode extends ACSObject {
* *
* @see com.arsdigita.persistence.DataObject * @see com.arsdigita.persistence.DataObject
* @see com.arsdigita.persistence.metadata.ObjectType * @see com.arsdigita.persistence.metadata.ObjectType
* @deprecated see above
*/ */
public SiteNode() { public SiteNode() {
super(s_typeName); super(s_typeName);
@ -98,6 +100,7 @@ public class SiteNode extends ACSObject {
* @param dataObject the data object to encapsulate in the new domain * @param dataObject the data object to encapsulate in the new domain
* object * object
* @see com.arsdigita.persistence.Session#retrieve(String) * @see com.arsdigita.persistence.Session#retrieve(String)
* @deprecated see above
*/ */
public SiteNode(DataObject dataObject) { public SiteNode(DataObject dataObject) {
super(dataObject); super(dataObject);
@ -119,6 +122,7 @@ public class SiteNode extends ACSObject {
* @param id a SiteNode ID * @param id a SiteNode ID
* @exception DataObjectNotFoundException if the ID does not match * @exception DataObjectNotFoundException if the ID does not match
* a SiteNode in the system. * a SiteNode in the system.
* @deprecated see above
*/ */
public SiteNode(BigDecimal id) throws DataObjectNotFoundException { public SiteNode(BigDecimal id) throws DataObjectNotFoundException {
super(new OID(s_typeName, id)); super(new OID(s_typeName, id));
@ -130,7 +134,8 @@ public class SiteNode extends ACSObject {
* @param oid the OID for the retrieved instance * @param oid the OID for the retrieved instance
* @see com.arsdigita.domain.DomainObject#DomainObject(OID) * @see com.arsdigita.domain.DomainObject#DomainObject(OID)
* @see com.arsdigita.persistence.OID * @see com.arsdigita.persistence.OID
**/ * @deprecated see above
*/
public SiteNode(OID oid) throws DataObjectNotFoundException { public SiteNode(OID oid) throws DataObjectNotFoundException {
super(oid); super(oid);
} }
@ -243,14 +248,16 @@ public class SiteNode extends ACSObject {
} }
/** /**
* @return <code>true</code> if this SiteNode can have children; <code>false</code> otherwise. * @return <code>true</code> if this SiteNode can have children;
* <code>false</code> otherwise.
*/ */
public boolean isDirectory() { public boolean isDirectory() {
return ((Boolean) (get("isDirectory"))).booleanValue(); return ((Boolean) (get("isDirectory"))).booleanValue();
} }
/** /**
* @return <code>true</code> if the SiteNode supports patterns; <code>false</code> otherwise. * @return <code>true</code> if the SiteNode supports patterns;
* <code>false</code> otherwise.
* @deprecated * @deprecated
*/ */
public boolean isPattern() { public boolean isPattern() {
@ -450,11 +457,31 @@ public class SiteNode extends ACSObject {
} }
/**
*
* @param locale
* @param outputType
* @return
* @deprecated without direct replacement. It is designed to work with
* {@link com.arsdigita.templating.LegacyStylesheetResolver} which is
* replaced by {@link com.arsdigita.templating.PatternStylesheetResolver}.
* So thes method is just not used anymore. (pboy)
*/
public Stylesheet[] getStylesheets(Locale locale, String outputType) { public Stylesheet[] getStylesheets(Locale locale, String outputType) {
return StyleAssociation return StyleAssociation
.getStylesheets(get("defaultStyle"), locale, outputType); .getStylesheets(get("defaultStyle"), locale, outputType);
} }
/**
*
* @param locale
* @param outputType
* @return
* @deprecated without direct replacement. It is design wo work with
* {@link com.arsdigita.templating.LegacyStylesheetResolver} which is
* replaced by {@link com.arsdigita.templating.PatternStylesheetResolver}.
* So this method is just not used anymore. (pboy)
*/
public Stylesheet getStylesheet(Locale locale, String outputType) { public Stylesheet getStylesheet(Locale locale, String outputType) {
return StyleAssociation return StyleAssociation
.getStylesheet(get("defaultStyle"), locale, outputType); .getStylesheet(get("defaultStyle"), locale, outputType);

View File

@ -30,8 +30,16 @@ import java.util.ArrayList;
import org.apache.log4j.Logger; // for logging import org.apache.log4j.Logger; // for logging
/**
*
* @version $Id: StyleAssociation.java 287 2005-02-22 00:29:02Z sskracic $
*
* @deprecated without direct replacement. It is designed to work with
* {@link com.arsdigita.templating.LegacyStylesheetResolver} which is
* replaced by {@link com.arsdigita.templating.PatternStylesheetResolver}.
* So thes method is just not used anymore. (pboy)
*/
public class StyleAssociation { public class StyleAssociation {
public static final String versionId = "$Id: StyleAssociation.java 287 2005-02-22 00:29:02Z sskracic $ by $Author: sskracic $, $DateTime: 2004/08/16 18:10:38 $";
/** this class is static-only */ /** this class is static-only */
private StyleAssociation() {}; private StyleAssociation() {};
@ -39,7 +47,8 @@ public class StyleAssociation {
private static final Logger s_cat = private static final Logger s_cat =
Logger.getLogger(StyleAssociation.class.getName()); Logger.getLogger(StyleAssociation.class.getName());
/** Gets an array with all applicable stylesheets. /**
* Gets an array with all applicable stylesheets.
* @param style a DataAssociation that is the result from get("defaultStylesheet") * @param style a DataAssociation that is the result from get("defaultStylesheet")
* @param locale the locale of the request * @param locale the locale of the request
* @param outputType the desired type of output (HTML, WML, XML, and so on) * @param outputType the desired type of output (HTML, WML, XML, and so on)
@ -47,6 +56,7 @@ public class StyleAssociation {
* @return an array with all applicable stylesheets. * @return an array with all applicable stylesheets.
* *
* @pre style != null && style instanceof DataAssociation * @pre style != null && style instanceof DataAssociation
* @deprecated see above
*/ */
public static Stylesheet[] getStylesheets(Object style, public static Stylesheet[] getStylesheets(Object style,
Locale locale, Locale locale,
@ -131,6 +141,7 @@ public class StyleAssociation {
* @return the first stylesheet associated with this object. * @return the first stylesheet associated with this object.
* *
* @pre style != null && style instanceof DataAssociation * @pre style != null && style instanceof DataAssociation
* @deprecated see above
*/ */
public static Stylesheet getStylesheet(Object style, public static Stylesheet getStylesheet(Object style,
Locale locale, Locale locale,

View File

@ -60,10 +60,12 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
/**
*
* @version $Id: Stylesheet.java 287 2005-02-22 00:29:02Z sskracic $
*/
public class Stylesheet extends ACSObject implements Templates { public class Stylesheet extends ACSObject implements Templates {
public static final String versionId = "$Id: Stylesheet.java 287 2005-02-22 00:29:02Z sskracic $ by $Author: sskracic $, $DateTime: 2004/08/16 18:10:38 $";
/** Composite of a String and a boolean. The boolean defaults to false. /** Composite of a String and a boolean. The boolean defaults to false.
* We use it to keep track of all XSL Files and which of them are valid. * We use it to keep track of all XSL Files and which of them are valid.
*/ */
@ -501,7 +503,8 @@ public class Stylesheet extends ACSObject implements Templates {
// Saxon requires full path info // Saxon requires full path info
if(usingSaxon()) if(usingSaxon())
{ {
String pathname = rm.getResourceAsFile(getPath()).getAbsolutePath(); String pathname = rm.getResourceAsFile(getPath())
.getAbsolutePath();
ssSource.setSystemId(pathname); ssSource.setSystemId(pathname);
} }
m_lastModified = System.currentTimeMillis(); m_lastModified = System.currentTimeMillis();
@ -524,10 +527,11 @@ public class Stylesheet extends ACSObject implements Templates {
if (tfact == null) { if (tfact == null) {
tfact = TransformerFactory.newInstance(); tfact = TransformerFactory.newInstance();
if (usingXSLTC()) { if (usingXSLTC()) {
//disable template inlining, otherwise xsltc might generate methods //disable template inlining, otherwise xsltc might generate
//that are too long, or contain jump offsets that are too large for //methods that are too long, or contain jump offsets that
//the JVM to handle for more details see "Known problems for XSLTC //are too large for the JVM to handle.
//Translets - http://xml.apache.org/xalan-j/xsltc_constraints.html#xsltcknownproblems //For more details see "Known problems for XSLTC Translets -
//http://xml.apache.org/xalan-j/xsltc_constraints.html#xsltcknownproblems
tfact.setAttribute("disable-inlining", new Boolean(true)); tfact.setAttribute("disable-inlining", new Boolean(true));
s_cat.info("set disable-inlining to true for XSLSTC"); s_cat.info("set disable-inlining to true for XSLSTC");
tfact.setErrorListener(new ErrorListener() { tfact.setErrorListener(new ErrorListener() {

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved. * Copyright (C) 2010 pboy (pboy@barkhof.uni-bremen.de) All Rights Reserved.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -16,49 +16,77 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* *
*/ */
package com.arsdigita.portal; 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.DomainObject;
import com.arsdigita.domain.DomainObjectFactory; // import com.arsdigita.domain.DomainObjectInstantiator;
import com.arsdigita.kernel.ACSObjectInstantiator;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.runtime.CompoundInitializer;
import com.arsdigita.runtime.DomainInitEvent;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
/**
*
*
* Initializes the portal package.
*
* @author Justin Ross
* @version $Id: Initializer.java 738 2005-09-01 12:36:52Z sskracic $
*/
public class Initializer implements com.arsdigita.initializer.Initializer {
/**
* Initializes the core portal package.
*
* Initializer is invoked by the add-method in the core initializer.
*
* @author pb
* @version $Id: $
*/
// Not shure if this initializeris realy needed. In a short test - commenting
// the initializer out - made no difference. (pboy-2011-01-09)
public class Initializer extends CompoundInitializer {
/** Creates a s_logging category with name = to the full name of class */
private static Logger s_log = Logger.getLogger(Initializer.class); private static Logger s_log = Logger.getLogger(Initializer.class);
private Configuration m_conf = new Configuration(); // Currently no configuration options for portlets available
//private static PortalConfig s_conf= PortalConfig.getConfig();
public Initializer() throws InitializationException { /**
/* Empty */ *
*/
public Initializer() {
} }
public Configuration getConfiguration() { /**
return m_conf; * Initializes domain-coupling machinery, usually consisting of
} * registering object instantiators and observers.
*
*/
public void init(DomainInitEvent e) {
s_log.debug("publishToFile.Initializer.init(DomainInitEvent) invoked");
public void startup() { // Recursive invokation of init, is it really necessary??
// On the other hand:
// An empty implementations prevents this initializer from being executed.
// A missing implementations causes the super class method to be executed,
// which invokes the above added LegacyInitializer.
// If super is not invoked, various other cms sub-initializer may not run.
super.init(e);
/* From old Initializer system
DomainObjectFactory.registerInstantiator DomainObjectFactory.registerInstantiator
(Portal.BASE_DATA_OBJECT_TYPE, new ACSObjectInstantiator() { (Portal.BASE_DATA_OBJECT_TYPE, new ACSObjectInstantiator() {
public DomainObject doNewInstance(DataObject dataObject) { public DomainObject doNewInstance(DataObject dataObject) {
return new Portal(dataObject); return new Portal(dataObject);
} }
}); });
*/
e.getFactory().registerInstantiator
(Portal.BASE_DATA_OBJECT_TYPE,
new ACSObjectInstantiator() {
@Override
public DomainObject doNewInstance(DataObject dataObject) {
return new Portal(dataObject);
} }
});
public void shutdown() { s_log.debug("publishToFile.Initializer.init(DomainInitEvent) completed");
/* Empty */
} }
} }

View File

@ -0,0 +1,71 @@
/*
* 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

@ -81,8 +81,7 @@ public abstract class AbstractConfig extends AbstractParameterContext {
/** /**
* Default constructor for subclasses. * Default constructor for subclasses.
**/ */
protected AbstractConfig() {} protected AbstractConfig() {}
/** /**
@ -98,8 +97,7 @@ public abstract class AbstractConfig extends AbstractParameterContext {
* unmarshaling and loading. * unmarshaling and loading.
* *
* @see ConfigRegistry * @see ConfigRegistry
**/ */
public final void load(ErrorList errors) { public final void load(ErrorList errors) {
ConfigRegistry reg = new ConfigRegistry(); ConfigRegistry reg = new ConfigRegistry();
reg.load(this, errors); reg.load(this, errors);
@ -122,8 +120,7 @@ public abstract class AbstractConfig extends AbstractParameterContext {
* configuration loading. * configuration loading.
* *
* @see #load(ErrorList) * @see #load(ErrorList)
**/ */
public final ErrorList load() { public final ErrorList load() {
ErrorList errs = new ErrorList(); ErrorList errs = new ErrorList();
load(errs); load(errs);
@ -132,16 +129,14 @@ public abstract class AbstractConfig extends AbstractParameterContext {
/** /**
* @deprecated Use @{link #load()} instead. * @deprecated Use @{link #load()} instead.
**/ */
public final ErrorList load(final String resource) { public final ErrorList load(final String resource) {
return load(); return load();
} }
/** /**
* @deprecated Use @{link #load()} instead. * @deprecated Use @{link #load()} instead.
**/ */
public final ErrorList require(final String resource) { public final ErrorList require(final String resource) {
return load(); return load();
} }

View File

@ -68,7 +68,6 @@ public final class RuntimeConfig extends AbstractConfig {
* Constructs an empty RuntimeConfig object. * Constructs an empty RuntimeConfig object.
* *
*/ */
public RuntimeConfig() { public RuntimeConfig() {
// pboy: According to the comment for the getConfig() method a singleton // pboy: According to the comment for the getConfig() method a singleton
// pattern is to be used. Therefore the constructor must be changed to // pattern is to be used. Therefore the constructor must be changed to

View File

@ -72,10 +72,12 @@ import org.apache.log4j.Logger;
* do the same tree walk except we'll look for the stylesheet * do the same tree walk except we'll look for the stylesheet
* associated with the <em>package</em> mounted on each site node. * associated with the <em>package</em> mounted on each site node.
* *
* @deprecated Use {@link com.arsdigita.templating.SimplePresentationManager} instead.
*
* @author Bill Schneider * @author Bill Schneider
* @version $Id: BasePresentationManager.java 562 2005-06-12 23:53:19Z apevec $ * @version $Id: BasePresentationManager.java 562 2005-06-12 23:53:19Z apevec $
*
* @deprecated Use {@link com.arsdigita.templating.SimplePresentationManager} instead.
* SimplePresentationManager is deprecated as well, use
* {@link com.arsdigita.bebop.page.PageTransformer} instead!
*/ */
public class BasePresentationManager implements PresentationManager { public class BasePresentationManager implements PresentationManager {
@ -172,6 +174,11 @@ public class BasePresentationManager implements PresentationManager {
* the default stylesheet for the mounted package on this site node, * the default stylesheet for the mounted package on this site node,
* or the default stylesheets for the packages mounted on ancestors * or the default stylesheets for the packages mounted on ancestors
* of this site node. (lowest precedence) * of this site node. (lowest precedence)
*
* @deprecated without direct replacement. It is design wo work with
* {@link com.arsdigita.templating.LegacyStylesheetResolver} which is
* replaced by {@link com.arsdigita.templating.PatternStylesheetResolver}.
* So this method is just not used anymore. (pboy)
*/ */
protected Stylesheet findStylesheet(SiteNodeRequestContext rctx) { protected Stylesheet findStylesheet(SiteNodeRequestContext rctx) {
return findStylesheet(rctx.getSiteNode(), return findStylesheet(rctx.getSiteNode(),
@ -192,6 +199,11 @@ public class BasePresentationManager implements PresentationManager {
* the default stylesheet for the mounted package on this site node, * the default stylesheet for the mounted package on this site node,
* or the default stylesheets for the packages mounted on ancestors * or the default stylesheets for the packages mounted on ancestors
* of this site node. (lowest precedence) * of this site node. (lowest precedence)
*
* @deprecated without direct replacement. It is design wo work with
* {@link com.arsdigita.templating.LegacyStylesheetResolver} which is
* replaced by {@link com.arsdigita.templating.PatternStylesheetResolver}.
* So this method is just not used anymore. (pboy)
*/ */
protected synchronized Stylesheet findStylesheet protected synchronized Stylesheet findStylesheet
(SiteNode sn, Locale l, String outputType) { (SiteNode sn, Locale l, String outputType) {
@ -214,6 +226,18 @@ public class BasePresentationManager implements PresentationManager {
return stylesheet; return stylesheet;
} }
/**
*
* @param sn
* @param l
* @param outputType
* @return
*
* @deprecated without direct replacement. It is design wo work with
* {@link com.arsdigita.templating.LegacyStylesheetResolver} which is
* replaced by {@link com.arsdigita.templating.PatternStylesheetResolver}.
* So this method is just not used anymore. (pboy)
*/
private Stylesheet findStylesheetHelper(SiteNode sn, private Stylesheet findStylesheetHelper(SiteNode sn,
Locale l, Locale l,
String outputType) { String outputType) {

View File

@ -3,7 +3,7 @@
<head> <head>
<title>com.arsdigita.sitenode</title> <title>com.arsdigita.sitenode</title>
</head> </head>
<body bgcolor="white"> <body>
<p> <p>
Provides a Dispatcher implementation that is backed by the "Site Map" of Provides a Dispatcher implementation that is backed by the "Site Map" of
SiteNode domain objects. The reason this package is not part of the SiteNode domain objects. The reason this package is not part of the

View File

@ -18,7 +18,6 @@
*/ */
package com.arsdigita.templating; package com.arsdigita.templating;
import com.arsdigita.templating.PatternGenerator;
import com.arsdigita.web.Web; import com.arsdigita.web.Web;
import com.arsdigita.web.Application; import com.arsdigita.web.Application;

View File

@ -37,14 +37,11 @@ import org.apache.log4j.Logger;
* using the old packagetype <-> stylesheet and sitenode <-> stylesheet * using the old packagetype <-> stylesheet and sitenode <-> stylesheet
* mappings in the database. * mappings in the database.
* </p> * </p>
* @version $Id: LegacyStylesheetResolver.java 287 2005-02-22 00:29:02Z sskracic $
* *
* @deprecated use {@link PatternStylesheetResolver} in new code. * @deprecated use {@link PatternStylesheetResolver} in new code.
*/ */
public class LegacyStylesheetResolver implements StylesheetResolver { public class LegacyStylesheetResolver implements StylesheetResolver {
public static final String versionId =
"$Id: LegacyStylesheetResolver.java 287 2005-02-22 00:29:02Z sskracic $" +
"$Author: sskracic $" +
"$DateTime: 2004/08/16 18:10:38 $";
private static final Logger s_log = Logger.getLogger private static final Logger s_log = Logger.getLogger
(LegacyStylesheetResolver.class); (LegacyStylesheetResolver.class);

View File

@ -19,10 +19,24 @@
package com.arsdigita.templating; package com.arsdigita.templating;
/** /**
* @deprecated Use {@link com.arsdigita.bebop.page.PageTransformer} * An Implementation of a Presentation Manager as specified by the
* {@link PresentationManager} interface which may be used as a default.
*
* As bebop is currently the only one providing a presenation layer it simply
* links to the bebop implementation. At the same time it makes shure an
* implementation exists which can be used as default in the templating
* configuration registry.
*/
/* NON Javadoc comment:
* Used to be depracated in version 6.6.0. Reverted to non-deprecated in version
* 6.6.0 release 3. Package templating provides the basic mechanism for CCM
* templating system an should provide an implementation of the Presentation
* Manager interface to be complete.
* @ deprecated Use {@link com.arsdigita.bebop.page.PageTransformer}
* instead * instead
*/ */
public class SimplePresentationManager public class SimplePresentationManager
extends com.arsdigita.bebop.page.PageTransformer { extends com.arsdigita.bebop.page.PageTransformer
implements PresentationManager{
// Empty // Empty
} }

View File

@ -39,12 +39,10 @@ import org.apache.log4j.Logger;
* all the URLs that have been loaded. If you set this as the URI * all the URLs that have been loaded. If you set this as the URI
* resolver for a Transformer then this will track all the * resolver for a Transformer then this will track all the
* <code>xsl:import</code> and <code>xsl:include</code> statements. * <code>xsl:import</code> and <code>xsl:include</code> statements.
*
* @version $Id: SimpleURIResolver.java 287 2005-02-22 00:29:02Z sskracic $
*/ */
final class SimpleURIResolver implements URIResolver { final class SimpleURIResolver implements URIResolver {
public static final String versionId =
"$Id: SimpleURIResolver.java 287 2005-02-22 00:29:02Z sskracic $" +
"$Author: sskracic $" +
"$DateTime: 2004/08/16 18:10:38 $";
private static final Logger s_log = Logger.getLogger private static final Logger s_log = Logger.getLogger
(SimpleURIResolver.class); (SimpleURIResolver.class);

View File

@ -14,13 +14,12 @@
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/ */
package com.arsdigita.templating; package com.arsdigita.templating;
import com.arsdigita.bebop.Bebop; // XXX Blech import com.arsdigita.bebop.Bebop;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.caching.CacheTable; import com.arsdigita.caching.CacheTable;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.util.Assert; import com.arsdigita.util.Assert;
import com.arsdigita.util.ExceptionUnwrapper; import com.arsdigita.util.ExceptionUnwrapper;
import com.arsdigita.util.Exceptions; import com.arsdigita.util.Exceptions;
@ -49,9 +48,8 @@ import org.apache.log4j.Logger;
/** /**
* An entry-point class for the functions of the templating package. * An entry-point class for the functions of the templating package.
* *
* This class maintains a cache of <code>XSLTemplate</code> objects, * This class maintains a cache of <code>XSLTemplate</code> objects, managed
* managed via the <code>getTemplate</code> and * via the <code>getTemplate</code> and <code>purgeTemplate</code> methods.
* <code>purgeTemplate</code> methods.
* *
* @author Dan Berrange * @author Dan Berrange
* @author Justin Ross &lt;jross@redhat.com&gt; * @author Justin Ross &lt;jross@redhat.com&gt;
@ -61,9 +59,9 @@ public class Templating {
private static final Logger s_log = Logger.getLogger(Templating.class); private static final Logger s_log = Logger.getLogger(Templating.class);
// XXX eliminate these? // just a tag to assure an implementation exists
public static final Class DEFAULT_PRESENTATION_MANAGER // public static final Class DEFAULT_PRESENTATION_MANAGER
= SimplePresentationManager.class; // = SimplePresentationManager.class;
/** /**
* This is the name of the attribute that is set in the request whose * This is the name of the attribute that is set in the request whose
@ -115,30 +113,37 @@ public class Templating {
} }
/** /**
* Returns a new instance of the current presentation manager * Returns a new instance of the current presentation manager class. This is
* class. This is an object which has the {@link * an object which has the {@link com.arsdigita.templating.PresentationManager
* PresentationManager} interface which can be used to transform * PresentationManager} interface which can be used to transform an XML
* an XML document into an output stream. * document into an output stream.
*
* As of v ersion 6.6.0 the bebop framework is the only instance to provide
* an implementation. To avoid class hierachie kludge we directly return the
* bebop config here.
* *
* @deprecated Use {@link
* com.arsdigita.bebop.BebopConfig#getPresentationManager()}
* instead.
* @return an instance of the <code>PresentationManager</code> * @return an instance of the <code>PresentationManager</code>
* interface * interface
*/ */
/* NON Javadoc
* Used to be deprecated up to version 6.6.0. Reverted to non-deprecated.
* Package templating provides the basic mechanism for CCM templating
* machinerie and provides the Presentation Manager interface. It should be
* able to be queried for an implementation as well.
* @ deprecated Use {@link
* com.arsdigita.bebop.BebopConfig#getPresentationManager()}
* instead.
*/
public static PresentationManager getPresentationManager() { public static PresentationManager getPresentationManager() {
// XXX Very broken dependency.
return Bebop.getConfig().getPresentationManager(); return Bebop.getConfig().getPresentationManager();
} }
/** /**
* Retrieves an XSL template. If the template is already loaded in * Retrieves an XSL template. If the template is already loaded in the
* the cache, it will be returned. If the template has been * cache, it will be returned. If the template has been modified since
* modified since it was first generated, it will be regenerated * it was first generated, it will be regenerated first.
* first.
* *
* @param source the <code>URL</code> to the top-level template * @param source the <code>URL</code> to the top-level template resource
* resource
* @return an <code>XSLTemplate</code> instance representing * @return an <code>XSLTemplate</code> instance representing
* <code>source</code> * <code>source</code>
*/ */
@ -147,13 +152,11 @@ public class Templating {
} }
/** /**
* Retrieves an XSL template. If the template is already loaded in * Retrieves an XSL template. If the template is already loaded in the
* the cache, it will be returned. If the template has been * cache, it will be returned. If the template has been modified since
* modified since it was first generated, it will be regenerated * it was first generated, it will be regenerated first.
* first.
* *
* @param source the <code>URL</code> to the top-level template * @param source the <code>URL</code> to the top-level template resource
* resource
* @param fancyErrors Should this place any xsl errors in the request * @param fancyErrors Should this place any xsl errors in the request
* for use by another class. If this is true, the * for use by another class. If this is true, the
* the errors are stored for later use. * the errors are stored for later use.

View File

@ -34,28 +34,31 @@ public final class TemplatingConfig extends AbstractConfig {
private static final Logger s_log = Logger.getLogger private static final Logger s_log = Logger.getLogger
(TemplatingConfig.class); (TemplatingConfig.class);
private final Parameter m_paths; /** Fully qualified path string to file contain the pattern file for
private final Parameter m_resolver; {@link com.arsdigita.templating.PatternStylesheetResolver
private final Parameter m_cacheSize; PatternStylesheetResolver} */
private final Parameter m_cacheAge; private final Parameter m_paths = new StringParameter
public TemplatingConfig() {
m_paths = new StringParameter
("waf.templating.stylesheet_paths", Parameter.REQUIRED, ("waf.templating.stylesheet_paths", Parameter.REQUIRED,
"/WEB-INF/resources/stylesheet-paths.txt"); "/WEB-INF/resources/stylesheet-paths.txt");
m_resolver = new SingletonParameter /** Specifies class for the implementation of StylesheetResolver Interface
to resolve a modules stylesheet. */
private final Parameter m_resolver = new SingletonParameter
("waf.templating.stylesheet_resolver", Parameter.REQUIRED, ("waf.templating.stylesheet_resolver", Parameter.REQUIRED,
new PatternStylesheetResolver()); new PatternStylesheetResolver());
m_cacheSize = new IntegerParameter /** Specifies number of stylesheets cached. */
private final Parameter m_cacheSize = new IntegerParameter
("waf.templating.stylesheet_cache_size", Parameter.OPTIONAL, ("waf.templating.stylesheet_cache_size", Parameter.OPTIONAL,
null); null);
m_cacheAge = new IntegerParameter /** Duration of stylesheet cache in seconds */
private final Parameter m_cacheAge = new IntegerParameter
("waf.templating.stylesheet_cache_age", Parameter.OPTIONAL, ("waf.templating.stylesheet_cache_age", Parameter.OPTIONAL,
null); null);
public TemplatingConfig() {
register(m_paths); register(m_paths);
register(m_resolver); register(m_resolver);
register(m_cacheSize); register(m_cacheSize);
@ -64,6 +67,11 @@ public final class TemplatingConfig extends AbstractConfig {
loadInfo(); loadInfo();
} }
/**
* Get name and location of stylesheet pattern file.
*
* @return String with fully qualified file name
*/
final String getStylesheetPaths() { final String getStylesheetPaths() {
return (String) get(m_paths); return (String) get(m_paths);
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2002-2004 Red Hat Inc. All Rights Reserved. * Copyright (C) 2010 pboy (pboy@barkhof.uni-bremen.de) All Rights Reserved.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -16,47 +16,63 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* *
*/ */
package com.arsdigita.ui; package com.arsdigita.ui;
import com.arsdigita.initializer.Configuration; // import com.arsdigita.domain.DomainObject;
import org.apache.log4j.Logger; // import com.arsdigita.domain.DomainObjectInstantiator;
// import com.arsdigita.kernel.ACSObjectInstantiator;
// import com.arsdigita.persistence.DataObject;
// import com.arsdigita.runtime.CompoundInitializer;
import com.arsdigita.runtime.ContextInitEvent;
import com.arsdigita.runtime.ConfigError;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import com.arsdigita.initializer.InitializationException; import org.apache.log4j.Logger;
/**
* Initializes the core ui package.
*
* Initializer is invoked by the add-method in the core initializer.
*
* @author pb
* @version $Id: $
*/
// public class Initializer extends CompoundInitializer {
public class Initializer extends com.arsdigita.runtime.GenericInitializer {
public class Initializer implements com.arsdigita.initializer.Initializer { /** Creates a s_logging category with name = to the full name of class */
private static Logger s_log = Logger.getLogger(Initializer.class);
private Configuration m_conf = new Configuration(); /** Config object for the UI package */
private static final Logger s_log = private static UIConfig s_conf = UIConfig.getConfig();
Logger.getLogger(Initializer.class); // s_log.debug("ui configuration loaded.");
public static final String DEFAULT_LAYOUT = "defaultLayout";
public static final String APPLICATION_LAYOUTS = "applicationLayouts";
/**
*
*/
public Initializer() { public Initializer() {
m_conf.initParameter
(DEFAULT_LAYOUT,
"The default layout for the SimplePage class",
List.class);
m_conf.initParameter
(APPLICATION_LAYOUTS,
"The customized layout for applications using the SimplePage class",
List.class);
} }
public void startup() throws InitializationException {
s_log.info("Starting UI initializer");
List defaultLayout = (List)m_conf.getParameter(DEFAULT_LAYOUT); /**
* Implementation of the {@link Initializer#init(ContextInitEvent)}
* method.
*
* @param evt The context init event.
*/
public void init(ContextInitEvent evt) {
s_log.debug("UI context initialization started.");
List defaultLayout = (List) s_conf.getDefaultLayout();
if (defaultLayout != null) { if (defaultLayout != null) {
s_log.info("Processing default layout"); s_log.info("Processing default layout");
SimplePage.setDefaultLayout(buildLayout(defaultLayout)); SimplePage.setDefaultLayout(buildLayout(defaultLayout));
} }
List apps = (List)m_conf.getParameter(APPLICATION_LAYOUTS); List apps = (List) s_conf.getApplicationLayouts();
if (apps != null) { if (apps != null) {
Iterator i = apps.iterator(); Iterator i = apps.iterator();
while (i.hasNext()) { while (i.hasNext()) {
@ -72,16 +88,9 @@ public class Initializer implements com.arsdigita.initializer.Initializer {
} }
} }
s_log.info("UI initializer completed"); s_log.debug("UI context initialization completed");
} }
public Configuration getConfiguration() {
return m_conf;
}
public void shutdown() {
// nada
}
private SimplePageLayout buildLayout(List desc) { private SimplePageLayout buildLayout(List desc) {
SimplePageLayout layout = new SimplePageLayout(); SimplePageLayout layout = new SimplePageLayout();
@ -97,9 +106,7 @@ public class Initializer implements com.arsdigita.initializer.Initializer {
try { try {
classObject = Class.forName(className); classObject = Class.forName(className);
} catch (ClassNotFoundException ex) { } catch (ClassNotFoundException ex) {
throw new InitializationException( throw new ConfigError("cannot find component " + className);
"cannot find component " + className, ex
);
} }
s_log.info("Adding " + className + " to " + position); s_log.info("Adding " + className + " to " + position);
@ -110,4 +117,5 @@ public class Initializer implements com.arsdigita.initializer.Initializer {
return layout; return layout;
} }
} }

View File

@ -0,0 +1,113 @@
/*
* 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.ui;
import com.arsdigita.initializer.Configuration;
import org.apache.log4j.Logger;
import java.util.Iterator;
import java.util.List;
import com.arsdigita.initializer.InitializationException;
public class LegacyInitializer implements com.arsdigita.initializer.Initializer {
private Configuration m_conf = new Configuration();
private static final Logger s_log =
Logger.getLogger(LegacyInitializer.class);
public static final String DEFAULT_LAYOUT = "defaultLayout";
public static final String APPLICATION_LAYOUTS = "applicationLayouts";
public LegacyInitializer() {
m_conf.initParameter
(DEFAULT_LAYOUT,
"The default layout for the SimplePage class",
List.class);
m_conf.initParameter
(APPLICATION_LAYOUTS,
"The customized layout for applications using the SimplePage class",
List.class);
}
public void startup() throws InitializationException {
s_log.info("Starting UI initializer");
List defaultLayout = (List)m_conf.getParameter(DEFAULT_LAYOUT);
if (defaultLayout != null) {
s_log.info("Processing default layout");
SimplePage.setDefaultLayout(buildLayout(defaultLayout));
}
List apps = (List)m_conf.getParameter(APPLICATION_LAYOUTS);
if (apps != null) {
Iterator i = apps.iterator();
while (i.hasNext()) {
List app = (List)i.next();
String name = (String)app.get(0);
List layout = (List)app.get(1);
s_log.info("Processing layout for " + name);
SimplePage.setLayout(name,
buildLayout(layout));
}
}
s_log.info("UI initializer completed");
}
public Configuration getConfiguration() {
return m_conf;
}
public void shutdown() {
// nada
}
private SimplePageLayout buildLayout(List desc) {
SimplePageLayout layout = new SimplePageLayout();
Iterator comps = desc.iterator();
while (comps.hasNext()) {
List comp = (List)comps.next();
String position = (String)comp.get(0);
String className = (String)comp.get(1);
Class classObject;
try {
classObject = Class.forName(className);
} catch (ClassNotFoundException ex) {
throw new InitializationException(
"cannot find component " + className, ex
);
}
s_log.info("Adding " + className + " to " + position);
layout.addComponent(classObject,
position);
}
return layout;
}
}

View File

@ -0,0 +1,142 @@
/*
* Copyright (C) 2010 pboy (pboy@barkhof.uni-bremen.de) 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.ui;
import com.arsdigita.runtime.AbstractConfig;
import com.arsdigita.util.parameter.StringArrayParameter;
import com.arsdigita.util.parameter.Parameter;
import java.util.Arrays;
// import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
/**
* A configuration record for configuration of the core UI package
* (layoput of main UI components).
*
* @author Peter Boy &lt;pboy@barkhof.uni-bremen.de&gt;
* @version $Id: $
*/
public class UIConfig extends AbstractConfig {
/** A logger instance. */
private static final Logger s_log = Logger.getLogger(UIConfig.class);
/** Singelton config object. */
private static UIConfig s_conf;
/**
* Gain a UIConfig object.
*
* Singelton pattern, don't instantiate a lifecacle object using the
* constructor directly!
* @return
*/
public static final synchronized UIConfig getConfig() {
if (s_conf == null) {
s_conf = new UIConfig();
s_conf.load();
}
return s_conf;
}
/**
* Default set of page component objects defining the default layout for the
* SimplePage class.
* Format: list
*
*/
// From the OLD initializer:
// If using the default SimplePage class, the following
// two parameters specify the class names of the bebop
// components to (optionally) add to margins of pages
// The is default set of page components
// defaultLayout = {
// { "top", "com.arsdigita.ui.UserBanner" },
// { "bottom", "com.arsdigita.ui.SiteBanner" },
// { "bottom", "com.arsdigita.ui.DebugPanel" }
//
// // { "left", "com.arsdigita.x.y.z" },
// // { "right", "com.arsdigita.x.y.z" }
// };
private final Parameter m_defaultLayout =
new StringArrayParameter(
"waf.ui.default_layout",
Parameter.REQUIRED,
new String[]
{ "top:com.arsdigita.ui.UserBanner",
"bottom:com.arsdigita.ui.SiteBanner",
"bottom:com.arsdigita.ui.DebugPanel"
// "left,com.arsdigita.x.y.zl",
// "right,com.arsdigita.x.y.zr",
}
);
/**
* The customized layout for applications using the SimplePage class
* Format: list
*/
private final Parameter m_applicationLayouts =
new StringArrayParameter(
"waf.ui.application_layouts",
Parameter.OPTIONAL,
null
);
/**
* Constructs an empty RuntimeConfig object.
*
*/
public UIConfig() {
// pboy: According to the comment for the getConfig() method a singleton
// pattern is to be used. Therefore the constructor must be changed to
// private!
// private UIConfig() {
register(m_defaultLayout);
register(m_applicationLayouts);
loadInfo();
}
/**
* Retrieve the set of default page component objects defining
* the default layout for SimplePage class.
*/
public List getDefaultLayout() {
String[] defaultLayoutArray = (String[]) get(m_defaultLayout);
return Arrays.asList(defaultLayoutArray);
}
/**
* Retrieve the set of default page component objects defining
* the default layout for SimplePage class.
*/
public List getApplicationLayouts() {
String[] layouts = (String[]) get(m_applicationLayouts);
return Arrays.asList(layouts);
}
}

View File

@ -0,0 +1,9 @@
waf.ui.default_layout.title=Default Layout
waf.ui.default_layout.purpose=Default layout components for SimplePage class
waf.ui.default_layout.example="top,com.arsdigita.ui.UserBanner","bottom,com.arsdigita.ui.SiteBanner","left,com.arsdigita.x.y.zl",
waf.ui.default_layout.format=[StringArray]
waf.ui.application_layouts.title=Application Layouts
waf.ui.application_layouts.purpose=The customized layout for applications using the SimplePage class
waf.ui.application_layouts.example=unkown
waf.ui.application_layouts.format=[StringArray]

View File

@ -51,11 +51,14 @@ public class StringUtils {
private static Perl5Util s_re = new Perl5Util(); private static Perl5Util s_re = new Perl5Util();
public static final String NEW_LINE = System.getProperty("line.separator");
private StringUtils() { private StringUtils() {
// can't instantiate me! // can't instantiate me!
} }
public static final String NEW_LINE = System.getProperty("line.separator");
/** /**
* Tests if a string is empty. * Tests if a string is empty.
* @param s A string to test * @param s A string to test
@ -463,7 +466,7 @@ public class StringUtils {
/** /**
* Convert a string of items separated by a separator * Convert a string of items separated by a separator
* character to an array of the items. sep is the separator * character to an (string)array of the items. sep is the separator
* character. Example: Input - s == "cat,house,dog" sep==',' * character. Example: Input - s == "cat,house,dog" sep==','
* Output - {"cat", "house", "dog"} * Output - {"cat", "house", "dog"}
* @param s string contains items separated by a separator character. * @param s string contains items separated by a separator character.
@ -710,7 +713,6 @@ public class StringUtils {
* Get a String representation for an Object. If it has an * Get a String representation for an Object. If it has an
* asString method, use that; otherwise fall back on toString * asString method, use that; otherwise fall back on toString
*/ */
public static String toString(Object o) { public static String toString(Object o) {
try { try {
return (String) o.getClass().getMethod("asString", null) return (String) o.getClass().getMethod("asString", null)
@ -727,7 +729,6 @@ public class StringUtils {
* create a String representation of a map. This method is not * create a String representation of a map. This method is not
* too necessary, because Map.toString() does almost the same. * too necessary, because Map.toString() does almost the same.
*/ */
public static String toString(Map m) { public static String toString(Map m) {
StringBuffer to = new StringBuffer(); StringBuffer to = new StringBuffer();
if (m == null) { if (m == null) {
@ -881,7 +882,6 @@ public class StringUtils {
* string consists of nothing but whitespace characters, an empty * string consists of nothing but whitespace characters, an empty
* string is returned. * string is returned.
*/ */
public final static String trimleft(String s) { public final static String trimleft(String s) {
for (int i = 0; i < s.length(); i++) { for (int i = 0; i < s.length(); i++) {
if (!Character.isWhitespace(s.charAt(i))) { if (!Character.isWhitespace(s.charAt(i))) {
@ -898,7 +898,6 @@ public class StringUtils {
* @param pattern the pattern String * @param pattern the pattern String
* @param repeatCount the number of time to repeat it * @param repeatCount the number of time to repeat it
*/ */
public final static String repeat(String pattern, int repeatCount) { public final static String repeat(String pattern, int repeatCount) {
StringBuffer sb = new StringBuffer(repeatCount * pattern.length()); StringBuffer sb = new StringBuffer(repeatCount * pattern.length());
for (int i = 0; i < repeatCount; i++) { for (int i = 0; i < repeatCount; i++) {
@ -914,7 +913,6 @@ public class StringUtils {
* @param pattern the pattern character * @param pattern the pattern character
* @param repeatCount the number of time to repeat it * @param repeatCount the number of time to repeat it
*/ */
public final static String repeat(char pattern, int repeatCount) { public final static String repeat(char pattern, int repeatCount) {
return repeat(String.valueOf(pattern), repeatCount); return repeat(String.valueOf(pattern), repeatCount);
} }
@ -928,7 +926,6 @@ public class StringUtils {
* *
* @since 5.1.2 * @since 5.1.2
*/ */
public final static String wrap(String input) { public final static String wrap(String input) {
return wrap(input,80); return wrap(input,80);
} }
@ -1252,7 +1249,7 @@ public class StringUtils {
/** /**
* @throws NullPointerException if <code>throwable</code> is null * @throws NullPointerException if <code>throwable</code> is null
**/ */
public static String getStackTrace(Throwable throwable) { public static String getStackTrace(Throwable throwable) {
if (throwable==null) { throw new NullPointerException("throwable"); } if (throwable==null) { throw new NullPointerException("throwable"); }
@ -1289,7 +1286,7 @@ public class StringUtils {
* *
* @see #getStackTrace(Throwable) * @see #getStackTrace(Throwable)
* @throws NullPointerException if <code>throwable</code> is null * @throws NullPointerException if <code>throwable</code> is null
**/ */
public static List getStackList(Throwable throwable) { public static List getStackList(Throwable throwable) {
StringTokenizer tkn = new StringTokenizer StringTokenizer tkn = new StringTokenizer
(getStackTrace(throwable), System.getProperty("line.separator")); (getStackTrace(throwable), System.getProperty("line.separator"));

View File

@ -25,7 +25,7 @@ import com.arsdigita.util.StringUtils;
/** /**
* StringArrayParameter * StringArrayParameter
* *
* Usage Esample: * Usage Example:
* <pre> * <pre>
* private static parameter exampleName ; * private static parameter exampleName ;
* exampleName = new StringArrayParameter( * exampleName = new StringArrayParameter(
@ -52,6 +52,7 @@ public class StringArrayParameter extends StringParameter {
} }
@Override
protected String marshal(final Object value) { protected String marshal(final Object value) {
if (value == null) { if (value == null) {
return null; return null;
@ -60,6 +61,7 @@ public class StringArrayParameter extends StringParameter {
} }
} }
@Override
protected Object unmarshal(final String literal, protected Object unmarshal(final String literal,
final ErrorList errors) { final ErrorList errors) {
final String[] literals = StringUtils.split(literal, ','); final String[] literals = StringUtils.split(literal, ',');
@ -77,6 +79,7 @@ public class StringArrayParameter extends StringParameter {
return strings; return strings;
} }
@Override
protected void doValidate(final Object value, protected void doValidate(final Object value,
final ErrorList errors) { final ErrorList errors) {
if (value != null) { if (value != null) {