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"/> storage="ccm-core/domain.properties"/>
<config class="com.arsdigita.formbuilder.util.FormBuilderConfig" <config class="com.arsdigita.formbuilder.util.FormBuilderConfig"
storage="ccm-core/formbuilder.properties"/> storage="ccm-core/formbuilder.properties"/>
<config class="com.arsdigita.globalization.GlobalizationConfig"
storage="ccm-core/globalization.properties"/>
<config class="com.arsdigita.kernel.KernelConfig" <config class="com.arsdigita.kernel.KernelConfig"
storage="ccm-core/kernel.properties"/> storage="ccm-core/kernel.properties"/>
<config class="com.arsdigita.kernel.security.SecurityConfig" <config class="com.arsdigita.kernel.security.SecurityConfig"

View File

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

View File

@ -21,6 +21,14 @@ package com.arsdigita.auditing;
import com.arsdigita.initializer.Configuration; import com.arsdigita.initializer.Configuration;
import com.arsdigita.initializer.InitializationException; 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 * Initializer for the auditing service. Currently the only available
* configuration is AuditingSaveInfoClass, which must implement the * 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.persistence.pdl.NameFilter;
import com.arsdigita.runtime.CompoundInitializer; import com.arsdigita.runtime.CompoundInitializer;
import com.arsdigita.runtime.DomainInitEvent; import com.arsdigita.runtime.DomainInitEvent;
import com.arsdigita.runtime.LegacyInitEvent; // import com.arsdigita.runtime.LegacyInitEvent;
import com.arsdigita.runtime.LegacyInitializer; // import com.arsdigita.runtime.LegacyInitializer;
import com.arsdigita.runtime.OptionalLegacyInitializer; // import com.arsdigita.runtime.OptionalLegacyInitializer;
import com.arsdigita.runtime.PDLInitializer; import com.arsdigita.runtime.PDLInitializer;
import com.arsdigita.runtime.RuntimeConfig; import com.arsdigita.runtime.RuntimeConfig;
import com.arsdigita.toolbox.CharsetEncodingProvider; import com.arsdigita.toolbox.CharsetEncodingProvider;
@ -63,8 +63,7 @@ import org.apache.log4j.Logger;
* *
* @author Rafael H. Schloming &lt;rhs@mit.edu&gt; * @author Rafael H. Schloming &lt;rhs@mit.edu&gt;
* @version $Id: Initializer.java 1547 2007-03-29 14:24:57Z chrisgilbert23 $ * @version $Id: Initializer.java 1547 2007-03-29 14:24:57Z chrisgilbert23 $
**/ */
public class Initializer extends CompoundInitializer { public class Initializer extends CompoundInitializer {
private static Logger s_log = Logger.getLogger(Initializer.class); 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.ui.Initializer());
add(new com.arsdigita.kernel.Initializer()); add(new com.arsdigita.kernel.Initializer());
add(new com.arsdigita.kernel.security.Initializer()); add(new com.arsdigita.kernel.security.Initializer());
add(new com.arsdigita.globalization.Initializer());
add(new com.arsdigita.portal.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());
add(new com.arsdigita.notification.Initializer()); add(new com.arsdigita.notification.Initializer());
add(new LegacyInitializer("com/arsdigita/core/enterprise.init")); // add(new LegacyInitializer("com/arsdigita/core/enterprise.init"));
add(new OptionalLegacyInitializer("enterprise.init")); // add(new OptionalLegacyInitializer("enterprise.init"));
} }
/** /**
@ -106,7 +106,9 @@ public class Initializer extends CompoundInitializer {
public final void init(final DomainInitEvent e) { public final void init(final DomainInitEvent e) {
super.init(e); super.init(e);
s_log.info("Running core init(DomainInitEvent) ..."); s_log.error("Running core init(DomainInitEvent) ...");
FactoriesSetup.setupFactories();
e.getFactory().registerInstantiator e.getFactory().registerInstantiator
(Host.BASE_DATA_OBJECT_TYPE, (Host.BASE_DATA_OBJECT_TYPE,
@ -223,6 +225,16 @@ public class Initializer extends CompoundInitializer {
// Initialize the the CharsetEncodingProvider internal data structure // Initialize the the CharsetEncodingProvider internal data structure
URLRewriter.addParameterProvider(new CharsetEncodingProvider()); 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"); s_log.info("Core init(DomainInitEvent) done");
} }
@ -230,19 +242,19 @@ public class Initializer extends CompoundInitializer {
* *
* @param e * @param e
*/ */
public final void init(final LegacyInitEvent e) { // public final void init(final LegacyInitEvent e) {
super.init(e); // super.init(e);
s_log.info("Running core init(LegacyInitEvent) ..."); // s_log.info("Running core init(LegacyInitEvent) ...");
Session session = SessionManager.getSession(); // Session session = SessionManager.getSession();
TransactionContext txn = session.getTransactionContext(); // TransactionContext txn = session.getTransactionContext();
txn.beginTxn(); // txn.beginTxn();
CoreLoader.loadHost(); // CoreLoader.loadHost();
txn.commitTxn(); // 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. // 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
// -- As of version 6.6.0 release 12 refactored into the new initializer system // -init com.arsdigita.kernel.security.LegacyInitializer {
// -- and no longer in use. // - securityHelperClass = "com.arsdigita.kernel.security.DefaultSecurityHelper";
// -- As of version 6.5.x still in use! // - sessionTrackingMethod = "cookie";
//init com.arsdigita.notification.LegacyInitializer { // -
// RequestManagerDelay = 900; // in seconds // - excludedExtensions = { ".jpg", ".gif", ".png", ".pdf" };
// RequestManagerPeriod = 900; // in seconds // -
// SimpleQueueDelay = 900; // in seconds // -}
// SimpleQueuePeriod = 900; // in seconds
// DigestQueueDelay = 900; // in seconds
// DigestQueuePeriod = 900; // in seconds // 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}}
// };
// }
// As of version 6.5.x still in use! // no longer used - old versioning system?
// May be ommitted if ccm-ldn-search is used which sets the search engine // init com.arsdigita.versioning.Initializer { }
// 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 // Application specific page components
// applicationLayouts = { // 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 public class SimpleDomainObjectTraversalAdapter
implements DomainObjectTraversalAdapter { implements DomainObjectTraversalAdapter {
private static final Logger s_log = private static final Logger s_log = Logger.getLogger(
Logger.getLogger(
SimpleDomainObjectTraversalAdapter.class); SimpleDomainObjectTraversalAdapter.class);
/** /**
* Rule that indicates the set of properties should be treated * Rule that indicates the set of properties should be treated

View File

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

View File

@ -31,10 +31,25 @@ import com.arsdigita.persistence.TransactionContext;
import com.arsdigita.initializer.Configuration; import com.arsdigita.initializer.Configuration;
import com.arsdigita.initializer.InitializationException; import com.arsdigita.initializer.InitializationException;
import org.apache.log4j.Logger; 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 * Registers the formbuilder package type and creates an instance
* that is mounted under formbuilder (this is done only once). * 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 $ * @version $Id: Initializer.java 287 2005-02-22 00:29:02Z sskracic $
*/ */
public class Initializer public class Initializer
implements com.arsdigita.initializer.Initializer { implements com.arsdigita.initializer.Initializer {
private Configuration m_conf = new Configuration(); private Configuration m_conf = new Configuration();

View File

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

View File

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

View File

@ -17,10 +17,9 @@
* *
*/ */
package com.arsdigita.globalization; package com.arsdigita.globalization;
import java.text.DateFormat; // import java.text.DateFormat;
/** /**
*
* Standard, final constants used by the globalization APIs. This * Standard, final constants used by the globalization APIs. This
* interface is designed to be extended on a package-by-package basis * interface is designed to be extended on a package-by-package basis
* to include package-specific constants. A typical package specific * to include package-specific constants. A typical package specific
@ -42,19 +41,13 @@ import java.text.DateFormat;
*/ */
public interface Globalized { 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; 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; 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"; public final static String BUNDLE_NAME = "com.arsdigita.globalization";
} }

View File

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

View File

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

View File

@ -18,11 +18,18 @@
package com.arsdigita.kernel; package com.arsdigita.kernel;
import com.arsdigita.developersupport.DeveloperSupport;
import com.arsdigita.domain.DomainObject; import com.arsdigita.domain.DomainObject;
import com.arsdigita.kernel.permissions.PrivilegeDescriptor; import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
import com.arsdigita.kernel.permissions.PermissionManager;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
import com.arsdigita.runtime.ContextInitEvent;
import com.arsdigita.runtime.DomainInitEvent; import com.arsdigita.runtime.DomainInitEvent;
import com.arsdigita.runtime.GenericInitializer; import com.arsdigita.runtime.GenericInitializer;
import com.arsdigita.webdevsupport.WebDevSupport;
import java.math.BigDecimal;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -123,22 +130,71 @@ public class Initializer extends GenericInitializer {
URLService.registerFinder(PackageInstance.BASE_DATA_OBJECT_TYPE, URLService.registerFinder(PackageInstance.BASE_DATA_OBJECT_TYPE,
new GenericURLFinder("")); 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 // READ-ONLY operation, during initializing a transaction should not
// requirred. // requirred.
//TransactionContext txn = SessionManager.getSession() //TransactionContext txn = SessionManager.getSession()
// .getTransactionContext(); // .getTransactionContext();
//txn.beginTxn(); //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 // Initialize privilege descriptors used in permissions service
// Recurring task, reads from database and stores in an internal Map // Recurring task, reads from database and stores in an internal Map
// field. // field.
PrivilegeDescriptor.initialize(); PrivilegeDescriptor.initialize();
s_log.debug("Done."); s_log.error("Done.");
//txn.commitTxn(); //txn.commitTxn();
s_log.debug("kernel security domain init completed"); 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 com.arsdigita.util.parameter.StringParameter;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import org.apache.log4j.Logger;
/** /**
* @author Justin Ross * @author Justin Ross
* @see com.arsdigita.kernel.Kernel * @see com.arsdigita.kernel.Kernel
@ -32,25 +34,55 @@ import java.util.StringTokenizer;
*/ */
public final class KernelConfig extends AbstractConfig { public final class KernelConfig extends AbstractConfig {
private final Parameter m_debug; /** A logger instance. */
private final Parameter m_permissions; private static final Logger s_log = Logger.getLogger(KernelConfig.class);
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;
public KernelConfig() { /** Singelton config object. */
m_debug = new BooleanParameter 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); ("waf.debug", Parameter.REQUIRED, Boolean.FALSE);
/** Whether WEB development support should be activated (true) or not. */
m_permissions = new BooleanParameter // 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, ("waf.kernel.data_permission_check_enabled", Parameter.REQUIRED,
Boolean.TRUE); Boolean.TRUE);
/** User Login by screen name or email address */
m_identifier = new EnumerationParameter private final EnumerationParameter m_identifier = new EnumerationParameter
("waf.kernel.primary_user_identifier", Parameter.REQUIRED, ("waf.kernel.primary_user_identifier", Parameter.REQUIRED,
"email"); "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("email", "email");
m_identifier.put("screen_name", "screenName"); m_identifier.put("screen_name", "screenName");
@ -60,17 +92,9 @@ public final class KernelConfig extends AbstractConfig {
m_remember = new BooleanParameter m_remember = new BooleanParameter
("waf.kernel.remember_login", Parameter.REQUIRED, Boolean.TRUE); ("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_debug);
register(m_webdevSupport);
register(m_permissions); register(m_permissions);
register(m_identifier); register(m_identifier);
register(m_SSO); register(m_SSO);
@ -81,10 +105,18 @@ public final class KernelConfig extends AbstractConfig {
loadInfo(); loadInfo();
} }
public final boolean isDebugEnabled() { public final boolean isDebugEnabled() {
return ((Boolean) get(m_debug)).booleanValue(); 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() { public final boolean isDataPermissionCheckEnabled() {
return ((Boolean) get(m_permissions)).booleanValue(); 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 $Revision: #39 $ $Date: 2004/08/16 $
* @version $Id: Initializer.java 1169 2006-06-14 13:08:25Z fabrice $ * @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 { public class LegacyInitializer extends BaseInitializer {
private static final Logger s_log = Logger.getLogger(LegacyInitializer.class); private static final Logger s_log = Logger.getLogger(LegacyInitializer.class);
@ -52,18 +53,19 @@ public class LegacyInitializer extends BaseInitializer {
// setupDomainFactory(); // setupDomainFactory();
// setupURLService(); // setupURLService();
TransactionContext txn = SessionManager.getSession() // TransactionContext txn = SessionManager.getSession()
.getTransactionContext(); // .getTransactionContext();
txn.beginTxn(); // 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 // Initialize privilege descriptors used in permissions service
// Recurring task, reads from database and stores in an internal Map // Recurring task, reads from database and stores in an internal Map
// field. // field.
PrivilegeDescriptor.initialize(); // PrivilegeDescriptor.initialize();
s_log.debug("Done."); s_log.error("kernel LegacyInitializer: Done.");
txn.commitTxn(); // txn.commitTxn();
} }
private void setupDomainFactory() { private void setupDomainFactory() {

View File

@ -19,6 +19,8 @@
package com.arsdigita.loader; package com.arsdigita.loader;
import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.globalization.Charset;
import com.arsdigita.globalization.Locale;
import com.arsdigita.kernel.EmailAddress; import com.arsdigita.kernel.EmailAddress;
import com.arsdigita.kernel.Kernel; import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.KernelExcursion; import com.arsdigita.kernel.KernelExcursion;
@ -38,6 +40,7 @@ import com.arsdigita.mimetypes.MimeType;
import com.arsdigita.mimetypes.MimeTypeExtension; import com.arsdigita.mimetypes.MimeTypeExtension;
import com.arsdigita.mimetypes.TextMimeType; import com.arsdigita.mimetypes.TextMimeType;
import com.arsdigita.portal.Portal; import com.arsdigita.portal.Portal;
import com.arsdigita.runtime.ConfigError;
import com.arsdigita.runtime.ScriptContext; import com.arsdigita.runtime.ScriptContext;
import com.arsdigita.ui.admin.Admin; import com.arsdigita.ui.admin.Admin;
import com.arsdigita.ui.sitemap.SiteMap; 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.EmailParameter;
import com.arsdigita.util.parameter.Parameter; import com.arsdigita.util.parameter.Parameter;
import com.arsdigita.util.parameter.StringParameter; import com.arsdigita.util.parameter.StringParameter;
import com.arsdigita.util.parameter.StringArrayParameter;
import com.arsdigita.util.servlet.HttpHost; import com.arsdigita.util.servlet.HttpHost;
import com.arsdigita.web.Application; import com.arsdigita.web.Application;
import com.arsdigita.web.ApplicationType; import com.arsdigita.web.ApplicationType;
import com.arsdigita.web.Host; import com.arsdigita.web.Host;
import com.arsdigita.web.Web; import com.arsdigita.web.Web;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; 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.Locale;
import java.util.Map;
import javax.mail.internet.InternetAddress; import javax.mail.internet.InternetAddress;
@ -78,6 +91,7 @@ public class CoreLoader extends PackageLoader {
private StringParameter m_screen = new StringParameter private StringParameter m_screen = new StringParameter
("waf.admin.name.screen", Parameter.OPTIONAL, null) { ("waf.admin.name.screen", Parameter.OPTIONAL, null) {
@Override
public Object getDefaultValue() { public Object getDefaultValue() {
String email = getEmail(); String email = getEmail();
if (email == null) { if (email == null) {
@ -116,6 +130,42 @@ public class CoreLoader extends PackageLoader {
("waf.mime.resource", Parameter.OPTIONAL, ("waf.mime.resource", Parameter.OPTIONAL,
"com/arsdigita/loader/mimetypes.properties"); "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() { public CoreLoader() {
register(m_email); register(m_email);
register(m_screen); register(m_screen);
@ -126,6 +176,8 @@ public class CoreLoader extends PackageLoader {
register(m_answer); register(m_answer);
register(m_dispatcher); register(m_dispatcher);
register(m_resource); register(m_resource);
register(m_charsets);
register(m_locales);
loadInfo(); loadInfo();
} }
@ -166,22 +218,69 @@ public class CoreLoader extends PackageLoader {
return (String) get(m_resource); 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) { public void run(final ScriptContext ctx) {
s_log.error("CoreLoader run method started.");
new KernelExcursion() { new KernelExcursion() {
public void excurse() { public void excurse() {
setEffectiveParty(Kernel.getSystemParty()); setEffectiveParty(Kernel.getSystemParty());
s_log.error("CoreLoader: Going to init KeyStorage.");
KeyStorage.KERNEL_KEY_STORE.init(); KeyStorage.KERNEL_KEY_STORE.init();
s_log.error("CoreLoader: Going to execute loadHost().");
loadHost(); loadHost();
s_log.error("CoreLoader: Going to execute loadSubsite().");
loadSubsite(loadKernel()); loadSubsite(loadKernel());
s_log.error("CoreLoader: Going to execute loadBebop().");
loadBebop(); loadBebop();
s_log.error("CoreLoader: Going to execute loadWebDev().");
loadWebDev(); loadWebDev();
s_log.error("CoreLoader: Going to execute loadSiteMapAdminApp().");
loadSiteMapAdminApp(loadAdminApp()); loadSiteMapAdminApp(loadAdminApp());
s_log.error("CoreLoader: Going to execute loadPermissionsSiteNode().");
loadPermissionsSiteNode(); loadPermissionsSiteNode();
s_log.error("CoreLoader: Going to execute loadPortal().");
loadPortal(); loadPortal();
s_log.error("CoreLoader: Going to execute loadMimeTypes().");
loadMimeTypes(); loadMimeTypes();
s_log.error("CoreLoader: Going to execute loadGlobalization().");
loadGlobalization();
} }
}.run(); }.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. // the initializer each time the system starts. So it's redundant here.
// Using initializer code is favourable because it may be conditionally // Using initializer code is favourable because it may be conditionally
// performed, depending on configuration (Lucene or Intermedia). // 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 // instruction here to let the code initialization time (i.e. at each
// startup) work properly. If left out here instantiation in // startup) work properly. If left out here instantiation in
// c.ad.search.lucene.Initializer (public final static Loader LOADER) // 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(); //--com.arsdigita.search.lucene.LegacyInitializer.LOADER.load();
} }
/**
* Create Root Site Node
* @return root node
*/
private SiteNode loadKernel() { private SiteNode loadKernel() {
// Create Root Site Node // Create Root Site Node
s_log.error("CoreLoader: Going to execute method loadKernel().");
final SiteNode rootNode = SiteNode.createSiteNode(null, null); final SiteNode rootNode = SiteNode.createSiteNode(null, null);
s_log.error("loadKernel: creating system administrator.");
createSystemAdministrator(); createSystemAdministrator();
// Create Package Types and Instances // Create Package Types and Instances
s_log.error("loadKernel: creating Package Types and Instances.");
PackageType subsite = PackageType.create PackageType subsite = PackageType.create
("acs-subsite", "ACS Subsite", "ACS Subsites", ("acs-subsite", "ACS Subsite", "ACS Subsites",
"http://arsdigita.com/acs-subsite/"); "http://arsdigita.com/acs-subsite/");
PackageInstance subsiteInstance = subsite.createInstance("Main Site"); PackageInstance subsiteInstance = subsite.createInstance("Main Site");
// Mount instances. // Mount instances.
s_log.error("loadKernel: mount Instances.");
rootNode.mountPackage(subsiteInstance); rootNode.mountPackage(subsiteInstance);
s_log.error("CoreLoader: Going to complete method loadKernel().");
return rootNode; return rootNode;
} }
@ -237,6 +345,7 @@ public class CoreLoader extends PackageLoader {
// exists after installation. // exists after installation.
private void createSystemAdministrator() { private void createSystemAdministrator() {
s_log.error("CoreLoader: execution of method createSystemAdministrator().");
final String DO_NOT_CREATE = "*do not create*"; final String DO_NOT_CREATE = "*do not create*";
String emailAddress = getEmail(); String emailAddress = getEmail();
@ -246,6 +355,9 @@ public class CoreLoader extends PackageLoader {
String password = getPassword(); String password = getPassword();
String passwordQuestion = getQuestion(); String passwordQuestion = getQuestion();
String passwordAnswer = getAnswer(); String passwordAnswer = getAnswer();
s_log.error("createSystemAdministrator: EmailAddr: " + emailAddress +
"\n screenName: " + screenName +
"\n givenName: " + givenName );
// Allow not creating system administrator account. // Allow not creating system administrator account.
// (Specified by setting parameter // (Specified by setting parameter
@ -263,6 +375,7 @@ public class CoreLoader extends PackageLoader {
// Create the system administrator user. // Create the system administrator user.
s_log.error("createSystemAdministrator(): going to create new User.");
User sa = new User(); User sa = new User();
sa.setPrimaryEmail(new EmailAddress(emailAddress)); sa.setPrimaryEmail(new EmailAddress(emailAddress));
if (screenName != null && if (screenName != null &&
@ -273,6 +386,7 @@ public class CoreLoader extends PackageLoader {
sa.getPersonName().setFamilyName(familyName); sa.getPersonName().setFamilyName(familyName);
// Save the system administrator's authentication credentials. // Save the system administrator's authentication credentials.
s_log.error("createSystemAdministrator(): going to save credentials.");
UserAuthentication auth = UserAuthentication.createForUser(sa); UserAuthentication auth = UserAuthentication.createForUser(sa);
auth.setPassword(password); auth.setPassword(password);
auth.setPasswordQuestion(passwordQuestion); auth.setPasswordQuestion(passwordQuestion);
@ -280,15 +394,19 @@ public class CoreLoader extends PackageLoader {
// Grant the system administrator universal "admin" permission. // Grant the system administrator universal "admin" permission.
s_log.error("createSystemAdministrator(): going to grant admin perms.");
PermissionService.grantPermission PermissionService.grantPermission
(new UniversalPermissionDescriptor (new UniversalPermissionDescriptor
(PrivilegeDescriptor.ADMIN, sa)); (PrivilegeDescriptor.ADMIN, sa));
s_log.info("Adding administrator: \"" + givenName + " " + s_log.error("Adding administrator: \"" + givenName + " " +
familyName + "\" <" + emailAddress + ">"); familyName + "\" <" + emailAddress + ">");
s_log.error("CoreLoader: method createSystemAdministrator() completed.");
} }
private void loadSubsite(SiteNode rootNode) { private void loadSubsite(SiteNode rootNode) {
s_log.error("CoreLoader: Going to execute method loadSubsite().");
String sDispatcher = ""; String sDispatcher = "";
PackageInstance packageInstance = rootNode.getPackageInstance(); 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.title=Mime Types Resource
waf.mime.resource.purpose=Mime types are loaded from this 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 com.arsdigita.developersupport.DeveloperSupport;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
// ///////////////////////////////////////////////////////////
//
// Moved to core initializer
//
// ///////////////////////////////////////////////////////////
/** /**
* Initializer * Initializer
* *
* @version $Revision: #17 $ $Date: 2004/08/16 $ * @version $Revision: #17 $ $Date: 2004/08/16 $
*/ */
public class Initializer extends BaseInitializer { public class LegacyInitializer extends BaseInitializer {
private Configuration m_conf = new Configuration(); private Configuration m_conf = new Configuration();
public final static String ACTIVE = "active"; public final static String ACTIVE = "active";
private static final Logger s_log = 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, m_conf.initParameter(ACTIVE,
"Flag to turn on/off developer support", "Flag to turn on/off developer support",
Boolean.class); Boolean.class);