ccm-core kommt jetzt ohne enterprise.ini aus, old style initializers sind eliminiert bis auf formbuilder.installer.Initialializer, die von ccm-cms und ccm-cms-types-survey genutzt werden.

git-svn-id: https://svn.libreccm.org/ccm/trunk@749 8810af33-2d31-482b-a856-94f89814c4df
master
pb 2011-02-14 01:47:47 +00:00
parent 32aec3251d
commit b0f365bddf
23 changed files with 646 additions and 322 deletions

View File

@ -10,6 +10,8 @@
storage="ccm-core/domain.properties"/>
<config class="com.arsdigita.formbuilder.util.FormBuilderConfig"
storage="ccm-core/formbuilder.properties"/>
<config class="com.arsdigita.globalization.GlobalizationConfig"
storage="ccm-core/globalization.properties"/>
<config class="com.arsdigita.kernel.KernelConfig"
storage="ccm-core/kernel.properties"/>
<config class="com.arsdigita.kernel.security.SecurityConfig"

View File

@ -19,20 +19,23 @@
package com.arsdigita.auditing;
/**
* Factory for auditing save information.
* <p>
* Factory for auditing save information, i.e. an implementation of the
* AuditingSaveInfo interface.
*
* Currently there is only one implementation available: WebAuditingSaveInfo.
* Therefore there is no configuration object required.
*
* </p>
*
* @author Joseph Bank
* @version 1.0
*/
public class AuditingSaveFactory {
// default to using WebAuditingSaveInfo
/** Static Auditing save info instance */
private static ThreadLocal s_proto = new ThreadLocal() {
@Override
public Object initialValue() {
return new WebAuditingSaveInfo();
}

View File

@ -21,6 +21,14 @@ package com.arsdigita.auditing;
import com.arsdigita.initializer.Configuration;
import com.arsdigita.initializer.InitializationException;
// ////////////////////////////////////////////////////////////////////////////
//
// Obviously not used anymore.
// There is no entry in enterprise.init for this Initializer since several
// releases.
//
// ////////////////////////////////////////////////////////////////////////////
/**
* Initializer for the auditing service. Currently the only available
* configuration is AuditingSaveInfoClass, which must implement the

View File

@ -33,9 +33,9 @@ import com.arsdigita.persistence.pdl.ManifestSource;
import com.arsdigita.persistence.pdl.NameFilter;
import com.arsdigita.runtime.CompoundInitializer;
import com.arsdigita.runtime.DomainInitEvent;
import com.arsdigita.runtime.LegacyInitEvent;
import com.arsdigita.runtime.LegacyInitializer;
import com.arsdigita.runtime.OptionalLegacyInitializer;
// import com.arsdigita.runtime.LegacyInitEvent;
// import com.arsdigita.runtime.LegacyInitializer;
// import com.arsdigita.runtime.OptionalLegacyInitializer;
import com.arsdigita.runtime.PDLInitializer;
import com.arsdigita.runtime.RuntimeConfig;
import com.arsdigita.toolbox.CharsetEncodingProvider;
@ -63,8 +63,7 @@ import org.apache.log4j.Logger;
*
* @author Rafael H. Schloming &lt;rhs@mit.edu&gt;
* @version $Id: Initializer.java 1547 2007-03-29 14:24:57Z chrisgilbert23 $
**/
*/
public class Initializer extends CompoundInitializer {
private static Logger s_log = Logger.getLogger(Initializer.class);
@ -88,14 +87,15 @@ public class Initializer extends CompoundInitializer {
add(new com.arsdigita.ui.Initializer());
add(new com.arsdigita.kernel.Initializer());
add(new com.arsdigita.kernel.security.Initializer());
add(new com.arsdigita.globalization.Initializer());
add(new com.arsdigita.portal.Initializer());
add(new com.arsdigita.search.Initializer());
add(new com.arsdigita.search.lucene.Initializer());
add(new com.arsdigita.search.intermedia.Initializer());
add(new com.arsdigita.notification.Initializer());
add(new LegacyInitializer("com/arsdigita/core/enterprise.init"));
add(new OptionalLegacyInitializer("enterprise.init"));
// add(new LegacyInitializer("com/arsdigita/core/enterprise.init"));
// add(new OptionalLegacyInitializer("enterprise.init"));
}
/**
@ -106,7 +106,9 @@ public class Initializer extends CompoundInitializer {
public final void init(final DomainInitEvent e) {
super.init(e);
s_log.info("Running core init(DomainInitEvent) ...");
s_log.error("Running core init(DomainInitEvent) ...");
FactoriesSetup.setupFactories();
e.getFactory().registerInstantiator
(Host.BASE_DATA_OBJECT_TYPE,
@ -223,6 +225,16 @@ public class Initializer extends CompoundInitializer {
// Initialize the the CharsetEncodingProvider internal data structure
URLRewriter.addParameterProvider(new CharsetEncodingProvider());
// Creates an entry in table web_hosts. Might be considered a loader
// task (and is already handled there). But configuration may be
// changed so we have to recheck here.
Session session = SessionManager.getSession();
TransactionContext txn = session.getTransactionContext();
txn.beginTxn();
CoreLoader.loadHost();
txn.commitTxn();
s_log.info("Core init(DomainInitEvent) done");
}
@ -230,19 +242,19 @@ public class Initializer extends CompoundInitializer {
*
* @param e
*/
public final void init(final LegacyInitEvent e) {
super.init(e);
// public final void init(final LegacyInitEvent e) {
// super.init(e);
s_log.info("Running core init(LegacyInitEvent) ...");
// s_log.info("Running core init(LegacyInitEvent) ...");
Session session = SessionManager.getSession();
TransactionContext txn = session.getTransactionContext();
txn.beginTxn();
CoreLoader.loadHost();
txn.commitTxn();
// Session session = SessionManager.getSession();
// TransactionContext txn = session.getTransactionContext();
// txn.beginTxn();
// CoreLoader.loadHost();
// txn.commitTxn();
FactoriesSetup.setupFactories();
// FactoriesSetup.setupFactories();
s_log.info("Core init(LegacyInitEvent) done");
}
// s_log.info("Core init(LegacyInitEvent) done");
// }
}

View File

@ -1,177 +0,0 @@
// ccm.core.enterprise.init
//
// Old initialization prozess configuration file.
//
// 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
charsets = {
"ISO-8859-1",
"UTF-8"
};
// Each entry in the "locales" list is a 4-tuple of the form
// {language, country, variant, charset}
// The charset must be one of the values specified in the "charsets"
// parameter above.
locales = {
{"en", "", "", "UTF-8"},
{"en", "GB", "", "UTF-8"},
{"en", "US", "", "UTF-8"},
{"es", "", "", "UTF-8"},
{"es", "ES", "", "UTF-8"},
{"da", "", "", "UTF-8"},
{"da", "DK", "", "UTF-8"},
{"de", "", "", "UTF-8"},
{"de", "DE", "", "UTF-8"},
{"fr", "", "", "UTF-8"},
{"fr", "FR", "", "UTF-8"},
{"ru", "", "", "UTF-8"}
};
// Default character set for locales not explicitly listed above.
defaultCharset = "UTF-8";
}
// Should get integrated into the same configuration file as parameter
// waf.debug, i.e. ccm-core/kernel.properties.
init com.arsdigita.webdevsupport.Initializer {
active = false;
}
// /////////////////////////////////////////////////////////////////
//
// Initializer definitely replaced by new initialization system
//
// /////////////////////////////////////////////////////////////////
// Move configuration options to enterprise.init.nolongerInUse
// init com.arsdigita.kernel.LegacyInitializer {}
// -init com.arsdigita.kernel.security.LegacyInitializer {
// - securityHelperClass = "com.arsdigita.kernel.security.DefaultSecurityHelper";
// - sessionTrackingMethod = "cookie";
// -
// - excludedExtensions = { ".jpg", ".gif", ".png", ".pdf" };
// -
// -}
// Set to true when using intermedia search
//-init com.arsdigita.mimetypes.LegacyMimeTypeInitializer {
//- INSOFilterEnabled = false;
//-}
// init com.arsdigita.toolbox.CharsetEncodingProviderInitializer { }
// init com.arsdigita.ui.LegacyInitializer {
// 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" }
// };
// }
// init com.arsdigita.portal.Initializer { }
// init com.arsdigita.portal.LegacyInitializer { }
// The formbuilder application is now deprecated and will
// be removed in the next release. Use the FormItem content
// type instead
// Method commend says:
// /**
// * Called on startup. Note. As you can not find a call
// * to this method in enterprise.ini, this method
// * may appear to execute mysteriously.
// * However, the process that runs through enterprise.ini
// * automitically calls the startup() method of any
// * class that implements com.arsdigita.util.initializer.Initializer
// * present in enterprise.ini
// **/
// Has to be checked in detail. As of version 6.5 a lot of packages nevertheless
// are using it!
//
// init com.arsdigita.formbuilder.Initializer { }
// This is an example initializer for populating
// the BebopObjectType & MetaObject stores
//init com.arsdigita.formbuilder.installer.Initializer {
// widgetTypes = {
// { "forms", "Checkbox group", "Checkbox groups",
// "com.arsdigita.formbuilder.PersistentCheckboxGroup",
// "com.arsdigita.formbuilder.ui.editors.CheckboxGroupEditor" },
// { "forms", "Date field", "Date fields",
// "com.arsdigita.formbuilder.PersistentDate",
// "com.arsdigita.formbuilder.ui.editors.DateForm" }
// };
// processListenerTypes = {
// { "forms", "Confirmation email", "Confirmation emails",
// "com.arsdigita.formbuilder.actions.ConfirmEmailListener",
// "com.arsdigita.formbuilder.ui.editors.ConfirmEmailForm" },
// { "forms", "URL redirect", "URL redirects",
// "com.arsdigita.formbuilder.actions.ConfirmRedirectListener",
// "com.arsdigita.formbuilder.ui.editors.ConfirmRedirectForm" }
// };
// dataQueries = {
// { "forms", "com.arsdigita.formbuilder.DataQueryUsers",
// "List of all registered users" },
// { "forms", "com.arsdigita.formbuilder.DataQueryPackages",
// "List of all installed packages" }
// };
//}
// init com.arsdigita.populate.apps.Initializer {
// numApps=3;
// PopulateAppPair = {
// //populateForum args: numPosts, numMsgs per post
// { "com.arsdigita.forum.PopulateForum", {3, 5}},
// //populateDocmgr args: numFolderLevels, numFolders, numFiles
// { "com.arsdigita.docmgr.PopulateDocmgr", {3, 2, 2}},
// //populateFaq args: numQuestions
// { "com.arsdigita.faq.PopulateFaq", {5}},
// //populateGlossary args: numWords
// { "com.arsdigita.glossary.PopulateGlossary", {5}},
// //populateBookmarks args: numBookmarks
// { "com.arsdigita.bookmarks.PopulateBookmarks", {5}}
// };
// }
// no longer used - old versioning system?
// init com.arsdigita.versioning.Initializer { }
// Application specific page components
// applicationLayouts = {
// { "forums",
// {
// { "top", "com.arsdigita.x.y.z" },
// { "left", "com.arsdigita.x.y.z" },
// { "bottom", "com.arsdigita.x.y.z" },
// { "right", "com.arsdigita.x.y.z" }
// }
// },
// { "search",
// {
// { "top", "com.arsdigita.x.y.z" },
// { "left", "com.arsdigita.x.y.z" },
// { "bottom", "com.arsdigita.x.y.z" },
// { "right", "com.arsdigita.x.y.z" }
// }
// }
// };

View File

@ -1,10 +1,49 @@
// ccm.core.enterprise.init.nolongerInUse
// ccm.core.enterprise.init
//
// Old initialization prozess configuration file.
// configurations definitely no longer used (refactored into new initializser system)
//
// // 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
// charsets = {
// "ISO-8859-1",
// "UTF-8"
// };
//
// // Each entry in the "locales" list is a 4-tuple of the form
// // {language, country, variant, charset}
// // The charset must be one of the values specified in the "charsets"
// // parameter above.
// locales = {
// {"en", "", "", "UTF-8"},
// {"en", "GB", "", "UTF-8"},
// {"en", "US", "", "UTF-8"},
// {"es", "", "", "UTF-8"},
// {"es", "ES", "", "UTF-8"},
// {"da", "", "", "UTF-8"},
// {"da", "DK", "", "UTF-8"},
// {"de", "", "", "UTF-8"},
// {"de", "DE", "", "UTF-8"},
// {"fr", "", "", "UTF-8"},
// {"fr", "FR", "", "UTF-8"},
// {"ru", "", "", "UTF-8"}
// };
//
// // Default character set for locales not explicitly listed above.
// defaultCharset = "UTF-8";
// }
//
//- init com.arsdigita.kernel.LegacyInitializer {}
// Should get integrated into the same configuration file as parameter
// waf.debug, i.e. ccm-core/kernel.properties.
//- init com.arsdigita.webdevsupport.LegacyInitializer {
//- active = false;
//- }
// /////////////////////////////////////////////////////////////////
@ -13,48 +52,109 @@
//
// /////////////////////////////////////////////////////////////////
// Move configuration options to enterprise.init.nolongerInUse
// -init com.arsdigita.kernel.security.LegacyInitializer {
// - securityHelperClass = "com.arsdigita.kernel.security.DefaultSecurityHelper";
// - sessionTrackingMethod = "cookie";
// -
// - excludedExtensions = { ".jpg", ".gif", ".png", ".pdf" };
// -
// -}
// Set to true when using intermedia search
//-init com.arsdigita.mimetypes.LegacyMimeTypeInitializer {
//- INSOFilterEnabled = false;
//-}
// init com.arsdigita.toolbox.CharsetEncodingProviderInitializer { }
// init com.arsdigita.ui.LegacyInitializer {
// 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" }
// };
// -- As of version 6.6.0 release 12 refactored into the new initializer system
// -- and no longer in use.
// -- As of version 6.5.x still in use!
//init com.arsdigita.notification.LegacyInitializer {
// RequestManagerDelay = 900; // in seconds
// RequestManagerPeriod = 900; // in seconds
// SimpleQueueDelay = 900; // in seconds
// SimpleQueuePeriod = 900; // in seconds
// DigestQueueDelay = 900; // in seconds
// DigestQueuePeriod = 900; // in seconds
// }
// init com.arsdigita.portal.Initializer { }
// init com.arsdigita.portal.LegacyInitializer { }
// As of version 6.5.x still in use!
// May be ommitted if ccm-ldn-search is used which sets the search engine
// by its own (Lucene)
// As of version 6.6.0 release 2 refactored into the new initializer system.
// Lucene is now initialized as a sub-initializer of ccm-core initializer.
// init com.arsdigita.search.LegacyInitializer {}
// As of version 6.5.x still in use!
// As of version 6.6.0 release 2 refactored into the new initializer system.
// Lucene is now initialized as a sub-initializer of ccm-core initializer.
//-- init com.arsdigita.search.lucene.LegacyInitializer {}
// The formbuilder application is now deprecated and will
// be removed in the next release. Use the FormItem content
// type instead
// Method commend says:
// /**
// * Called on startup. Note. As you can not find a call
// * to this method in enterprise.ini, this method
// * may appear to execute mysteriously.
// * However, the process that runs through enterprise.ini
// * automitically calls the startup() method of any
// * class that implements com.arsdigita.util.initializer.Initializer
// * present in enterprise.ini
// **/
// Has to be checked in detail. As of version 6.5 a lot of packages nevertheless
// are using it!
//
// init com.arsdigita.formbuilder.Initializer { }
// As of version 6.5.x still in use!
// Comment in to use intermedia search
// As of version 6.6.0 release 2 refactored into the new initializer system.
// Intermedia is now initialized as a sub-initializer of ccm-core initializer.
// It is configured via waf.search.indexer Parameter (may be lucene or intermedia).
// If not enabled, initialization is skipped.
//init com.arsdigita.search.intermedia.LegacyInitializer {
// timerDelay = 60; // Parameters for search timer/indexing
// syncDelay = 60; // All units are time in seconds
// maxSyncDelay = 7200; // see com.arsdigita.search.BuildIndex.java
// maxIndexingTime = 7200; // for definitions
// indexingRetryDelay = 60;
// This is an example initializer for populating
// the BebopObjectType & MetaObject stores
//init com.arsdigita.formbuilder.installer.Initializer {
// widgetTypes = {
// { "forms", "Checkbox group", "Checkbox groups",
// "com.arsdigita.formbuilder.PersistentCheckboxGroup",
// "com.arsdigita.formbuilder.ui.editors.CheckboxGroupEditor" },
// { "forms", "Date field", "Date fields",
// "com.arsdigita.formbuilder.PersistentDate",
// "com.arsdigita.formbuilder.ui.editors.DateForm" }
// };
// processListenerTypes = {
// { "forms", "Confirmation email", "Confirmation emails",
// "com.arsdigita.formbuilder.actions.ConfirmEmailListener",
// "com.arsdigita.formbuilder.ui.editors.ConfirmEmailForm" },
// { "forms", "URL redirect", "URL redirects",
// "com.arsdigita.formbuilder.actions.ConfirmRedirectListener",
// "com.arsdigita.formbuilder.ui.editors.ConfirmRedirectForm" }
// };
// dataQueries = {
// { "forms", "com.arsdigita.formbuilder.DataQueryUsers",
// "List of all registered users" },
// { "forms", "com.arsdigita.formbuilder.DataQueryPackages",
// "List of all installed packages" }
// };
//}
// Package does no longer exist.
// init com.arsdigita.categorization.dispatch.Initializer { }
// init com.arsdigita.populate.apps.Initializer {
// numApps=3;
// PopulateAppPair = {
// //populateForum args: numPosts, numMsgs per post
// { "com.arsdigita.forum.PopulateForum", {3, 5}},
// //populateDocmgr args: numFolderLevels, numFolders, numFiles
// { "com.arsdigita.docmgr.PopulateDocmgr", {3, 2, 2}},
// //populateFaq args: numQuestions
// { "com.arsdigita.faq.PopulateFaq", {5}},
// //populateGlossary args: numWords
// { "com.arsdigita.glossary.PopulateGlossary", {5}},
// //populateBookmarks args: numBookmarks
// { "com.arsdigita.bookmarks.PopulateBookmarks", {5}}
// };
// }
// no longer used - old versioning system?
// init com.arsdigita.versioning.Initializer { }
// Application specific page components
// applicationLayouts = {
@ -75,9 +175,3 @@
// }
// }
// };
// init com.arsdigita.localization.demo.Initializer { }
// Class no longer part of source code
// init com.arsdigita.bebop.jsp.Initializer { }

View File

@ -0,0 +1,83 @@
// ccm.core.enterprise.init.nolongerInUse
//
// Old initialization prozess configuration file.
// configurations definitely no longer used (refactored into new initializser system)
//
// /////////////////////////////////////////////////////////////////
//
// Initializer definitely replaced by new initialization system
//
// /////////////////////////////////////////////////////////////////
// -- As of version 6.6.0 release 12 refactored into the new initializer system
// -- and no longer in use.
// -- As of version 6.5.x still in use!
//init com.arsdigita.notification.LegacyInitializer {
// RequestManagerDelay = 900; // in seconds
// RequestManagerPeriod = 900; // in seconds
// SimpleQueueDelay = 900; // in seconds
// SimpleQueuePeriod = 900; // in seconds
// DigestQueueDelay = 900; // in seconds
// DigestQueuePeriod = 900; // in seconds
//}
// As of version 6.5.x still in use!
// May be ommitted if ccm-ldn-search is used which sets the search engine
// by its own (Lucene)
// As of version 6.6.0 release 2 refactored into the new initializer system.
// Lucene is now initialized as a sub-initializer of ccm-core initializer.
// init com.arsdigita.search.LegacyInitializer {}
// As of version 6.5.x still in use!
// As of version 6.6.0 release 2 refactored into the new initializer system.
// Lucene is now initialized as a sub-initializer of ccm-core initializer.
//-- init com.arsdigita.search.lucene.LegacyInitializer {}
// As of version 6.5.x still in use!
// Comment in to use intermedia search
// As of version 6.6.0 release 2 refactored into the new initializer system.
// Intermedia is now initialized as a sub-initializer of ccm-core initializer.
// It is configured via waf.search.indexer Parameter (may be lucene or intermedia).
// If not enabled, initialization is skipped.
//init com.arsdigita.search.intermedia.LegacyInitializer {
// timerDelay = 60; // Parameters for search timer/indexing
// syncDelay = 60; // All units are time in seconds
// maxSyncDelay = 7200; // see com.arsdigita.search.BuildIndex.java
// maxIndexingTime = 7200; // for definitions
// indexingRetryDelay = 60;
//}
// Package does no longer exist.
// init com.arsdigita.categorization.dispatch.Initializer { }
// Application specific page components
// applicationLayouts = {
// { "forums",
// {
// { "top", "com.arsdigita.x.y.z" },
// { "left", "com.arsdigita.x.y.z" },
// { "bottom", "com.arsdigita.x.y.z" },
// { "right", "com.arsdigita.x.y.z" }
// }
// },
// { "search",
// {
// { "top", "com.arsdigita.x.y.z" },
// { "left", "com.arsdigita.x.y.z" },
// { "bottom", "com.arsdigita.x.y.z" },
// { "right", "com.arsdigita.x.y.z" }
// }
// }
// };
// init com.arsdigita.localization.demo.Initializer { }
// Class no longer part of source code
// init com.arsdigita.bebop.jsp.Initializer { }

View File

@ -36,8 +36,7 @@ import java.util.HashSet;
public class SimpleDomainObjectTraversalAdapter
implements DomainObjectTraversalAdapter {
private static final Logger s_log =
Logger.getLogger(
private static final Logger s_log = Logger.getLogger(
SimpleDomainObjectTraversalAdapter.class);
/**
* Rule that indicates the set of properties should be treated

View File

@ -4,7 +4,7 @@
<title>ccm-core: Domain Installer</title>
</head>
<body bgcolor="white">
<body>
<p>
Installer for domain system.
</p>

View File

@ -31,10 +31,25 @@ import com.arsdigita.persistence.TransactionContext;
import com.arsdigita.initializer.Configuration;
import com.arsdigita.initializer.InitializationException;
import org.apache.log4j.Logger;
// ////////////////////////////////////////////////////////////////////////
//
// This old style Initializer is obviously no longer used (for a long time
// and several releases. Formbuilder as an own application is deprecated and
// replaced by content type forms.
//
// Removed.
//
// It is a loader task (loading package type and instance) and should be
// handled there it required in the future.
//
// ////////////////////////////////////////////////////////////////////////
/**
* Registers the formbuilder package type and creates an instance
* that is mounted under formbuilder (this is done only once).
@ -43,7 +58,6 @@ import org.apache.log4j.Logger;
* @version $Id: Initializer.java 287 2005-02-22 00:29:02Z sskracic $
*/
public class Initializer
implements com.arsdigita.initializer.Initializer {
private Configuration m_conf = new Configuration();

View File

@ -3,7 +3,7 @@
<head>
<title>Package com.arsdigita. formbuilder.installer</title>
</head>
<body bgcolor="white">
<body>
<p>
Installer for formbuilder service.
</p>

View File

@ -34,6 +34,10 @@ public class ClientLocaleProvider implements LocaleProvider {
private String m_targetBundle = "";
private String m_acceptLanguages = "";
/**
*
* @return
*/
public Locale getLocale() {
ResourceBundle b = null;
Locale l = null;
@ -58,9 +62,8 @@ public class ClientLocaleProvider implements LocaleProvider {
defaultLocale = Locale.getDefault();
}
b = Globalization.getBundleNoFallback(
m_targetBundle, l, defaultLocale
);
b = Globalization.getBundleNoFallback( m_targetBundle, l,
defaultLocale );
if (b != null) {
break;
@ -75,11 +78,18 @@ public class ClientLocaleProvider implements LocaleProvider {
return l;
}
/**
*
* @param targetBundle
*/
public void setTargetBundle(String targetBundle) {
m_targetBundle =
(targetBundle != null) ? targetBundle : "";
m_targetBundle = (targetBundle != null) ? targetBundle : "";
}
/**
*
* @param acceptLanguages
*/
public void setAcceptLanguages(String acceptLanguages) {
m_acceptLanguages =
(acceptLanguages != null) ? acceptLanguages : "";

View File

@ -17,10 +17,9 @@
*
*/
package com.arsdigita.globalization;
import java.text.DateFormat;
// import java.text.DateFormat;
/**
*
* Standard, final constants used by the globalization APIs. This
* interface is designed to be extended on a package-by-package basis
* to include package-specific constants. A typical package specific
@ -42,19 +41,13 @@ import java.text.DateFormat;
*/
public interface Globalized {
/**
* The default format for displaying dates.
*/
/** The default format for displaying dates. */
public final static int DATE_DISPLAY_FORMAT = java.text.DateFormat.MEDIUM;
/**
* The default format for displaying time.
*/
/** The default format for displaying time. */
public final static int TIME_DISPLAY_FORMAT = java.text.DateFormat.SHORT;
/**
* Override the value of this string for your particular package.
*/
/** Override the value of this string for your particular package. */
public final static String BUNDLE_NAME = "com.arsdigita.globalization";
}

View File

@ -77,10 +77,10 @@ public class LegacyInitializer implements com.arsdigita.initializer.Initializer
getTransactionContext();
txn.beginTxn();
if ( ! isLoaded() ) {
s_log.info("Globalization Initializer is loading.");
load();
}
// if ( ! isLoaded() ) {
// s_log.info("Globalization Initializer is loading.");
// load();
// }
LocaleNegotiator.setApplicationLocaleProvider
(new ApplicationLocaleProvider());
LocaleNegotiator.setClientLocaleProvider(new ClientLocaleProvider());

View File

@ -101,9 +101,9 @@ import org.apache.log4j.Logger;
* </p>
*
* @version $Revision: #10 $ $Date: 2004/08/16 $
* @version $Id: LocaleNegotiator.java 287 2005-02-22 00:29:02Z sskracic $
*/
public class LocaleNegotiator {
public final static String versionId = "$Id: LocaleNegotiator.java 287 2005-02-22 00:29:02Z sskracic $ by $Author: sskracic $, $DateTime: 2004/08/16 18:10:38 $";
private static final Logger s_cat =
Logger.getLogger(LocaleNegotiator.class.getName());
@ -200,9 +200,8 @@ public class LocaleNegotiator {
locale = m_defaultLocale;
}
bundle = Globalization.getBundleNoFallback(
targetBundle, locale, m_defaultLocale
);
bundle = Globalization.getBundleNoFallback( targetBundle, locale,
m_defaultLocale );
// Find a charset we can use to display that Locale's language.
charset = getCharsetForLocale(locale, acceptCharsets);

View File

@ -18,11 +18,18 @@
package com.arsdigita.kernel;
import com.arsdigita.developersupport.DeveloperSupport;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
import com.arsdigita.kernel.permissions.PermissionManager;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
import com.arsdigita.runtime.ContextInitEvent;
import com.arsdigita.runtime.DomainInitEvent;
import com.arsdigita.runtime.GenericInitializer;
import com.arsdigita.webdevsupport.WebDevSupport;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
@ -123,22 +130,71 @@ public class Initializer extends GenericInitializer {
URLService.registerFinder(PackageInstance.BASE_DATA_OBJECT_TYPE,
new GenericURLFinder(""));
if (Kernel.getSystemParty() == null) {
final DatabaseTransaction transaction = new DatabaseTransaction();
transaction.begin();
setupSystemParty();
transaction.end();
}
// READ-ONLY operation, during initializing a transaction should not
// requirred.
//TransactionContext txn = SessionManager.getSession()
// .getTransactionContext();
//txn.beginTxn();
s_log.debug("Initializing privilege descriptors...");
s_log.error("c.ad.kernel.Initializer: Initializing privilege descriptors...");
// Initialize privilege descriptors used in permissions service
// Recurring task, reads from database and stores in an internal Map
// field.
PrivilegeDescriptor.initialize();
s_log.debug("Done.");
s_log.error("Done.");
//txn.commitTxn();
s_log.debug("kernel security domain init completed");
}
/**
* Implementation of the {@link Initializer#init(ContextInitEvent)}
* method.
*
* @param evt The context init event.
*/
@Override
public void init(ContextInitEvent evt) {
s_log.debug("kernel context init begin.");
Boolean active = KernelConfig.getConfig().isWebdevSupportActive();
if (Boolean.TRUE.equals(active)) {
s_log.debug("Registering webdev listener");
DeveloperSupport.addListener(WebDevSupport.getInstance());
}
s_log.debug("kernel context init completed");
}
/**
*
*/
// Should this be moved to central position for all Initializers?
// E.g. Compound Initializer or at least waf(core) initializer
private void setupSystemParty() {
Party party;
party = new Party
(new OID(Party.BASE_DATA_OBJECT_TYPE,
new BigDecimal(PermissionManager.SYSTEM_PARTY))) {
public String getName() {
return "ACS System Party";
}
};
party.disconnect();
Kernel.setSystemParty(party);
}
}

View File

@ -25,6 +25,8 @@ import com.arsdigita.util.parameter.Parameter;
import com.arsdigita.util.parameter.StringParameter;
import java.util.StringTokenizer;
import org.apache.log4j.Logger;
/**
* @author Justin Ross
* @see com.arsdigita.kernel.Kernel
@ -32,25 +34,55 @@ import java.util.StringTokenizer;
*/
public final class KernelConfig extends AbstractConfig {
private final Parameter m_debug;
private final Parameter m_permissions;
private final EnumerationParameter m_identifier; // email or "screenName"?
private final Parameter m_SSO;
private final Parameter m_remember;
private final Parameter m_secureLogin;
private final Parameter m_supportedLanguages;
/** A logger instance. */
private static final Logger s_log = Logger.getLogger(KernelConfig.class);
public KernelConfig() {
m_debug = new BooleanParameter
/** Singelton config object. */
private static KernelConfig s_conf;
/**
* Gain a KernelConfig object.
*
* Singelton pattern, don't instantiate a KernelConfig object using the
* constructor directly!
* @return
*/
public static synchronized KernelConfig getConfig() {
if (s_conf == null) {
s_conf = new KernelConfig();
s_conf.load();
}
return s_conf;
}
/** */
private static Parameter m_debug = new BooleanParameter
("waf.debug", Parameter.REQUIRED, Boolean.FALSE);
m_permissions = new BooleanParameter
/** Whether WEB development support should be activated (true) or not. */
// Handled in OLD initializer c.ad.webdevsupport.LegacyInitializer
private static Parameter m_webdevSupport = new BooleanParameter
("waf.webdev_support", Parameter.REQUIRED, Boolean.FALSE);
private final Parameter m_permissions = new BooleanParameter
("waf.kernel.data_permission_check_enabled", Parameter.REQUIRED,
Boolean.TRUE);
m_identifier = new EnumerationParameter
/** User Login by screen name or email address */
private final EnumerationParameter m_identifier = new EnumerationParameter
("waf.kernel.primary_user_identifier", Parameter.REQUIRED,
"email");
private final Parameter m_SSO;
private final Parameter m_remember;
private final Parameter m_secureLogin = new BooleanParameter
("waf.kernel.secure_login", Parameter.REQUIRED, Boolean.FALSE);
/** String containing the supported languages.
The first one is considered default. */
private final Parameter m_supportedLanguages = new StringParameter
("waf.kernel.supported_languages", Parameter.REQUIRED,
"en,de,fr,nl,it,pt,es");
public KernelConfig() {
// Add recognised Login user identification to enumeration parameter
m_identifier.put("email", "email");
m_identifier.put("screen_name", "screenName");
@ -60,17 +92,9 @@ public final class KernelConfig extends AbstractConfig {
m_remember = new BooleanParameter
("waf.kernel.remember_login", Parameter.REQUIRED, Boolean.TRUE);
m_secureLogin = new BooleanParameter
("waf.kernel.secure_login", Parameter.REQUIRED, Boolean.FALSE);
/**
* String containing the supported languages. The first one is considered
* default.
*/
m_supportedLanguages = new StringParameter
("waf.kernel.supported_languages", Parameter.REQUIRED, "en,de,fr,nl,it,pt,es");
register(m_debug);
register(m_webdevSupport);
register(m_permissions);
register(m_identifier);
register(m_SSO);
@ -81,10 +105,18 @@ public final class KernelConfig extends AbstractConfig {
loadInfo();
}
public final boolean isDebugEnabled() {
return ((Boolean) get(m_debug)).booleanValue();
}
/**
* Return true, if WEB developer support should be activated.
*/
public final boolean isWebdevSupportActive() {
return ((Boolean) get(m_webdevSupport)).booleanValue();
}
public final boolean isDataPermissionCheckEnabled() {
return ((Boolean) get(m_permissions)).booleanValue();
}

View File

@ -36,6 +36,7 @@ import org.apache.log4j.Logger;
* @version $Revision: #39 $ $Date: 2004/08/16 $
* @version $Id: Initializer.java 1169 2006-06-14 13:08:25Z fabrice $
*/
// BaseInitializer set System Party, required for permission critical actions!
public class LegacyInitializer extends BaseInitializer {
private static final Logger s_log = Logger.getLogger(LegacyInitializer.class);
@ -52,18 +53,19 @@ public class LegacyInitializer extends BaseInitializer {
// setupDomainFactory();
// setupURLService();
TransactionContext txn = SessionManager.getSession()
.getTransactionContext();
txn.beginTxn();
// TransactionContext txn = SessionManager.getSession()
// .getTransactionContext();
// txn.beginTxn();
s_log.debug("Initializing privilege descriptors...");
// s_log.debug("Initializing privilege descriptors...");
s_log.error("kernel LegacyInitializer: Initializing privilege descriptors...");
// Initialize privilege descriptors used in permissions service
// Recurring task, reads from database and stores in an internal Map
// field.
PrivilegeDescriptor.initialize();
s_log.debug("Done.");
// PrivilegeDescriptor.initialize();
s_log.error("kernel LegacyInitializer: Done.");
txn.commitTxn();
// txn.commitTxn();
}
private void setupDomainFactory() {

View File

@ -19,6 +19,8 @@
package com.arsdigita.loader;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.globalization.Charset;
import com.arsdigita.globalization.Locale;
import com.arsdigita.kernel.EmailAddress;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.KernelExcursion;
@ -38,6 +40,7 @@ import com.arsdigita.mimetypes.MimeType;
import com.arsdigita.mimetypes.MimeTypeExtension;
import com.arsdigita.mimetypes.TextMimeType;
import com.arsdigita.portal.Portal;
import com.arsdigita.runtime.ConfigError;
import com.arsdigita.runtime.ScriptContext;
import com.arsdigita.ui.admin.Admin;
import com.arsdigita.ui.sitemap.SiteMap;
@ -48,17 +51,27 @@ import com.arsdigita.util.parameter.CSVParameterReader;
import com.arsdigita.util.parameter.EmailParameter;
import com.arsdigita.util.parameter.Parameter;
import com.arsdigita.util.parameter.StringParameter;
import com.arsdigita.util.parameter.StringArrayParameter;
import com.arsdigita.util.servlet.HttpHost;
import com.arsdigita.web.Application;
import com.arsdigita.web.ApplicationType;
import com.arsdigita.web.Host;
import com.arsdigita.web.Web;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
// import java.util.Locale;
import java.util.Map;
import javax.mail.internet.InternetAddress;
@ -78,6 +91,7 @@ public class CoreLoader extends PackageLoader {
private StringParameter m_screen = new StringParameter
("waf.admin.name.screen", Parameter.OPTIONAL, null) {
@Override
public Object getDefaultValue() {
String email = getEmail();
if (email == null) {
@ -116,6 +130,42 @@ public class CoreLoader extends PackageLoader {
("waf.mime.resource", Parameter.OPTIONAL,
"com/arsdigita/loader/mimetypes.properties");
/**
* Recognized character sets
*/
// In Old Initializer: CHARSETS as List.class
// charsets = {"ISO-8859-1","UTF-8"};
private final Parameter m_charsets =
new StringArrayParameter(
"waf.globalization.charsets",
Parameter.REQUIRED,
new String[] { "ISO-8859-1","UTF-8" }
);
/**
* Each entry in the "locales" list is a 4-tuple of the form
* {language, country, variant, charset}
* The charset must be one of the values specified in the "charsets"
* parameter above.
*
* This parameter is only read once in the initial loading step and stored
* in the database (g11n_locales). Subsequent modifications will have no effect!
*
*/
// In OLD Initializer: LOCALES as List.class
private final Parameter m_locales =
new StringArrayParameter(
"waf.globalization.locales",
Parameter.REQUIRED,
new String[] {"en: : :UTF-8","en:GB: :UTF-8","en:US: :UTF-8"
,"es: : :UTF-8","es:ES: :UTF-8"
,"da: : :UTF-8","da:DK: :UTF-8"
,"de: : :UTF-8","de:DE: :UTF-8"
,"fr: : :UTF-8","fr:FR: :UTF-8"
,"ru: : :UTF-8"
}
);
public CoreLoader() {
register(m_email);
register(m_screen);
@ -126,6 +176,8 @@ public class CoreLoader extends PackageLoader {
register(m_answer);
register(m_dispatcher);
register(m_resource);
register(m_charsets);
register(m_locales);
loadInfo();
}
@ -166,22 +218,69 @@ public class CoreLoader extends PackageLoader {
return (String) get(m_resource);
}
/**
* Retrieve systems recognized character sets.
*
* @return List of recognized character sets.
*/
private List getCharsets() {
String[] charsets = (String[]) get(m_charsets) ;
return (List) Arrays.asList(charsets) ;
}
/**
* Retrieve the list of supported locales
*
*/
private List getLocales() {
/** Value of the locales parameter, a string array of
4-tuple of locale values (see above) */
String[] locales = (String[]) get(m_locales) ;
if (locales != null) {
ArrayList localeTupel = new ArrayList();
for (int i = 0; i < locales.length ; ++i) {
String[] localeSet = StringUtils.split(locales[i],':');
localeTupel.add(Arrays.asList(localeSet));
}
return localeTupel;
} else {
return null;
}
}
public void run(final ScriptContext ctx) {
s_log.error("CoreLoader run method started.");
new KernelExcursion() {
public void excurse() {
setEffectiveParty(Kernel.getSystemParty());
s_log.error("CoreLoader: Going to init KeyStorage.");
KeyStorage.KERNEL_KEY_STORE.init();
s_log.error("CoreLoader: Going to execute loadHost().");
loadHost();
s_log.error("CoreLoader: Going to execute loadSubsite().");
loadSubsite(loadKernel());
s_log.error("CoreLoader: Going to execute loadBebop().");
loadBebop();
s_log.error("CoreLoader: Going to execute loadWebDev().");
loadWebDev();
s_log.error("CoreLoader: Going to execute loadSiteMapAdminApp().");
loadSiteMapAdminApp(loadAdminApp());
s_log.error("CoreLoader: Going to execute loadPermissionsSiteNode().");
loadPermissionsSiteNode();
s_log.error("CoreLoader: Going to execute loadPortal().");
loadPortal();
s_log.error("CoreLoader: Going to execute loadMimeTypes().");
loadMimeTypes();
s_log.error("CoreLoader: Going to execute loadGlobalization().");
loadGlobalization();
}
}.run();
s_log.error("CoreLoader run method completed.");
}
/**
@ -204,7 +303,7 @@ public class CoreLoader extends PackageLoader {
// the initializer each time the system starts. So it's redundant here.
// Using initializer code is favourable because it may be conditionally
// performed, depending on configuration (Lucene or Intermedia).
// But the currently given implementation requires the the loader
// But the currently given implementation requires the loader
// instruction here to let the code initialization time (i.e. at each
// startup) work properly. If left out here instantiation in
// c.ad.search.lucene.Initializer (public final static Loader LOADER)
@ -215,21 +314,30 @@ public class CoreLoader extends PackageLoader {
//--com.arsdigita.search.lucene.LegacyInitializer.LOADER.load();
}
/**
* Create Root Site Node
* @return root node
*/
private SiteNode loadKernel() {
// Create Root Site Node
s_log.error("CoreLoader: Going to execute method loadKernel().");
final SiteNode rootNode = SiteNode.createSiteNode(null, null);
s_log.error("loadKernel: creating system administrator.");
createSystemAdministrator();
// Create Package Types and Instances
s_log.error("loadKernel: creating Package Types and Instances.");
PackageType subsite = PackageType.create
("acs-subsite", "ACS Subsite", "ACS Subsites",
"http://arsdigita.com/acs-subsite/");
PackageInstance subsiteInstance = subsite.createInstance("Main Site");
// Mount instances.
s_log.error("loadKernel: mount Instances.");
rootNode.mountPackage(subsiteInstance);
s_log.error("CoreLoader: Going to complete method loadKernel().");
return rootNode;
}
@ -237,6 +345,7 @@ public class CoreLoader extends PackageLoader {
// exists after installation.
private void createSystemAdministrator() {
s_log.error("CoreLoader: execution of method createSystemAdministrator().");
final String DO_NOT_CREATE = "*do not create*";
String emailAddress = getEmail();
@ -246,6 +355,9 @@ public class CoreLoader extends PackageLoader {
String password = getPassword();
String passwordQuestion = getQuestion();
String passwordAnswer = getAnswer();
s_log.error("createSystemAdministrator: EmailAddr: " + emailAddress +
"\n screenName: " + screenName +
"\n givenName: " + givenName );
// Allow not creating system administrator account.
// (Specified by setting parameter
@ -263,6 +375,7 @@ public class CoreLoader extends PackageLoader {
// Create the system administrator user.
s_log.error("createSystemAdministrator(): going to create new User.");
User sa = new User();
sa.setPrimaryEmail(new EmailAddress(emailAddress));
if (screenName != null &&
@ -273,6 +386,7 @@ public class CoreLoader extends PackageLoader {
sa.getPersonName().setFamilyName(familyName);
// Save the system administrator's authentication credentials.
s_log.error("createSystemAdministrator(): going to save credentials.");
UserAuthentication auth = UserAuthentication.createForUser(sa);
auth.setPassword(password);
auth.setPasswordQuestion(passwordQuestion);
@ -280,15 +394,19 @@ public class CoreLoader extends PackageLoader {
// Grant the system administrator universal "admin" permission.
s_log.error("createSystemAdministrator(): going to grant admin perms.");
PermissionService.grantPermission
(new UniversalPermissionDescriptor
(PrivilegeDescriptor.ADMIN, sa));
s_log.info("Adding administrator: \"" + givenName + " " +
s_log.error("Adding administrator: \"" + givenName + " " +
familyName + "\" <" + emailAddress + ">");
s_log.error("CoreLoader: method createSystemAdministrator() completed.");
}
private void loadSubsite(SiteNode rootNode) {
s_log.error("CoreLoader: Going to execute method loadSubsite().");
String sDispatcher = "";
PackageInstance packageInstance = rootNode.getPackageInstance();
@ -453,4 +571,62 @@ public class CoreLoader extends PackageLoader {
}
}
private void loadGlobalization() throws ConfigError {
List charsets = (List) getCharsets();
if ( charsets == null ) {
throw new ConfigError
("You must specify at least one charset in the m_charsets " +
"parameter of the core loader parameter section. " +
"UTF-8 would be a good first choice.");
}
Map charsetMap = new HashMap();
for (Iterator i=charsets.iterator(); i.hasNext(); ) {
String charsetName = (String) i.next();
s_log.debug("Dealing with charset name: " + charsetName );
// Check if this is a valid charset. Is there a better way to do
// this? - vadimn@redhat.com, Mon 2002-07-29 14:47:41 -0400
try {
new OutputStreamWriter(new ByteArrayOutputStream(), charsetName);
} catch (UnsupportedEncodingException ex) {
throw new ConfigError
(charsetName + " is not a supported charset");
}
Charset charset = new Charset();
charset.setCharset(charsetName);
charset.save();
charsetMap.put(charsetName, charset);
}
List locales = (List) getLocales();
if ( locales == null ) {
throw new ConfigError
("You must specify at least one locale in the m_locales " +
"parameter of core loader parameter section. " +
"The \"en\" locale is probably required.");
}
for (Iterator i=locales.iterator(); i.hasNext(); ) {
List localeData = (List) i.next();
String language = (String) localeData.get(0);
String country = (String) localeData.get(1);
String variant = (String) localeData.get(2);
String charsetName = (String) localeData.get(3);
Locale locale = new Locale(language, country, variant);
Charset defaultCharset = (Charset) charsetMap.get(charsetName);
if ( defaultCharset == null ) {
throw new ConfigError
("You must list " + charsetName + " in the \"m_charsets\" " +
"parameter before using it in the \"m_locales\" " +
"\" parameter.");
}
locale.setDefaultCharset(defaultCharset);
locale.save();
}
}
}

View File

@ -37,3 +37,13 @@ waf.login.dispatcher.purpose=Implements the login ui.
waf.mime.resource.title=Mime Types Resource
waf.mime.resource.purpose=Mime types are loaded from this resource
waf.globalization.charsets.title=Recognized Character Sets
waf.globalization.charsets.purpose=List containing the recognized character sets.
waf.globalization.charsets.example="ISO-8859-1,UTF-8"
waf.globalization.charsets.format=[StringArray]
waf.globalization.locales.title=Locales
waf.globalization.locales.purpose=List of locales, each local is a UNIQUE 4-tuple of the form language:country:variant:charset
waf.globalization.locales.example="en: : :UTF-8, en:GB: :UTF-8, de: : :UTF-8, de:DE: :UTF-8"
waf.globalization.locales.format=[StringArray]

View File

@ -25,22 +25,30 @@ import com.arsdigita.initializer.InitializationException;
import com.arsdigita.developersupport.DeveloperSupport;
import org.apache.log4j.Logger;
// ///////////////////////////////////////////////////////////
//
// Moved to core initializer
//
// ///////////////////////////////////////////////////////////
/**
* Initializer
*
* @version $Revision: #17 $ $Date: 2004/08/16 $
*/
public class Initializer extends BaseInitializer {
public class LegacyInitializer extends BaseInitializer {
private Configuration m_conf = new Configuration();
public final static String ACTIVE = "active";
private static final Logger s_log =
Logger.getLogger(Initializer.class);
Logger.getLogger(LegacyInitializer.class);
public Initializer() throws InitializationException {
public LegacyInitializer() throws InitializationException {
m_conf.initParameter(ACTIVE,
"Flag to turn on/off developer support",
Boolean.class);