Author: dvittor
Date: Mon Jun 29 13:29:39 2015
New Revision: 1688207

URL: http://svn.apache.org/r1688207
Log:
More code for the pico container

Added:
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiInternalModule.java
   (with props)
Modified:
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/PageManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/PageSorter.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/ReferenceManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/VariableManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiEngine.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/engine/FilterManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/engine/PluginManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/filters/BasicPageFilter.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/attachment/AttachmentManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/AuthenticationManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/AuthorizationManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/UserManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/acl/AclManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/authorize/GroupManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/content/PageRenamer.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/diff/DifferenceManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/filters/DefaultFilterManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/i18n/InternationalizationManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/modules/InternalModule.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/modules/ModuleManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/render/RenderingManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/rss/RSSGenerator.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/search/SearchManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/ui/admin/DefaultAdminBeanManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/DefaultURLConstructor.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/ShortURLConstructor.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/URLConstructor.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/util/ClassUtil.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/workflow/WorkflowManager.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/resources/ini/classmappings.xml
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/test/java/org/apache/wiki/PageSorterTest.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/test/java/org/apache/wiki/TestEngine.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/test/java/org/apache/wiki/VariableManagerTest.java
    
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/test/java/org/apache/wiki/util/XmlUtilTest.java

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/PageManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/PageManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/PageManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/PageManager.java
 Mon Jun 29 13:29:39 2015
@@ -31,7 +31,6 @@ import java.util.List;
 import java.util.Properties;
 
 import org.apache.commons.lang.ArrayUtils;
-import org.apache.log4j.Logger;
 import org.apache.wiki.api.engine.FilterManager;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
 import org.apache.wiki.api.exceptions.ProviderException;
@@ -51,6 +50,7 @@ import org.apache.wiki.modules.ModuleMan
 import org.apache.wiki.modules.WikiModuleInfo;
 import org.apache.wiki.providers.RepositoryModifiedException;
 import org.apache.wiki.providers.WikiPageProvider;
+import org.apache.wiki.search.SearchManager;
 import org.apache.wiki.util.ClassUtil;
 import org.apache.wiki.util.TextUtil;
 import org.apache.wiki.workflow.Outcome;
@@ -146,13 +146,11 @@ public class PageManager extends ModuleM
      */
     public static final String FACT_IS_AUTHENTICATED = "fact.isAuthenticated";
 
-    static Logger log = Logger.getLogger(PageManager.class);
-
     private WikiPageProvider m_provider;
 
     protected HashMap<String, PageLock> m_pageLocks = new HashMap<String, 
PageLock>();
 
-    private WikiEngine m_engine;
+    private SearchManager m_searchManager;
 
     private int m_expiryTime = 60;
 
@@ -165,15 +163,14 @@ public class PageManager extends ModuleM
      * @param props  Properties to use for initialization
      * @throws WikiException If anything goes wrong, you get this.
      */
-    public PageManager() {
-       
+    public PageManager(SearchManager searchManager) {
+       m_searchManager = searchManager;
     }
     
     @Override
     public void initialize(WikiEngine engine, Properties props) throws 
WikiException {
-        super.initialize(engine, props);
-        String classname;
-        m_engine = engine;
+         super.initialize(engine, props);
+        m_searchManager.initialize(engine, props);
         boolean useCache = "true".equals(props.getProperty(PROP_USECACHE));
 
         m_expiryTime = 
TextUtil.parseIntParameter(props.getProperty(PROP_LOCKEXPIRY), 60);
@@ -181,6 +178,7 @@ public class PageManager extends ModuleM
         //
         //  If user wants to use a cache, then we'll use the CachingProvider.
         //
+        String classname;
         if (useCache) {
             classname = "org.apache.wiki.providers.CachingProvider";
         } else {
@@ -274,7 +272,7 @@ public class PageManager extends ModuleM
                 //  Make sure that it no longer exists in internal data 
structures either.
                 //
                 WikiPage dummy = new WikiPage(m_engine, pageName);
-                m_engine.getSearchManager().pageRemoved(dummy);
+                m_searchManager.pageRemoved(dummy);
                 m_engine.getReferenceManager().pageRemoved(dummy);
             }
         }

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/PageSorter.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/PageSorter.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/PageSorter.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/PageSorter.java
 Mon Jun 29 13:29:39 2015
@@ -25,7 +25,7 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.log4j.Logger;
+import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.util.ClassUtil;
 import org.apache.wiki.util.comparators.JavaNaturalComparator;
 
@@ -35,23 +35,20 @@ import org.apache.wiki.util.comparators.
  * <b>Note</b> - this class is deliberately not null safe. Never call any of 
the
  * methods with a null argument!
  */
-public class PageSorter implements Comparator
+public class PageSorter extends WikiInternalModule implements Comparator
 {
-    private static Logger log = Logger.getLogger( PageSorter.class );
-
     // The name of the property that specifies the desired page name comparator
     protected static final String PROP_PAGE_NAME_COMPARATOR = 
"jspwiki.pageNameComparator.class";
 
-    private Comparator<String> m_comparator;
+    private Comparator<String> m_comparator = 
JavaNaturalComparator.DEFAULT_JAVA_COMPARATOR;
 
     /**
      * Default constructor uses Java "natural" ordering.
      */
-    public PageSorter()
-    {
-        m_comparator = JavaNaturalComparator.DEFAULT_JAVA_COMPARATOR;
+    public PageSorter( ) {
+       m_comparator = JavaNaturalComparator.DEFAULT_JAVA_COMPARATOR;
     }
-
+    
     /**
      * Construct with a particular comparator.
      * 
@@ -142,22 +139,24 @@ public class PageSorter implements Compa
      * 
      * @param props this WikiEngine's properties.
      */
-    @SuppressWarnings( "unchecked" )
-    public void initialize( Properties props )
+    @Override
+    public void initialize( WikiEngine engine, Properties props ) throws 
WikiException
     {
+       super.initialize(engine, props);
         // Default is Java natural order
         m_comparator = JavaNaturalComparator.DEFAULT_JAVA_COMPARATOR;
         String className = props.getProperty( PROP_PAGE_NAME_COMPARATOR );
-        if( className != null && className.length() > 0 )
+        if( className != null && className.length() > 0 ) {
             try
             {
-                m_comparator = (Comparator<String>) ClassUtil.findClass( 
"org.apache.wiki.util.comparators", className )
-                    .newInstance();
+                m_comparator = (Comparator<String>) 
+                               ClassUtil.findClass( 
"org.apache.wiki.util.comparators", className ).newInstance();
             }
             catch( Exception e )
             {
                 log.error( "Falling back to default \"natural\" comparator", e 
);
             }
+        }
     }
 
     /**

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/ReferenceManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/ReferenceManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/ReferenceManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/ReferenceManager.java
 Mon Jun 29 13:29:39 2015
@@ -38,19 +38,20 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
 import java.util.TreeSet;
 
 import org.apache.commons.lang.time.StopWatch;
-import org.apache.log4j.Logger;
+import org.apache.wiki.api.exceptions.FilterException;
 import org.apache.wiki.api.exceptions.ProviderException;
+import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.filters.BasicPageFilter;
 import org.apache.wiki.attachment.Attachment;
 import org.apache.wiki.event.WikiEvent;
 import org.apache.wiki.event.WikiEventListener;
 import org.apache.wiki.event.WikiEventUtils;
 import org.apache.wiki.event.WikiPageEvent;
-import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.providers.WikiPageProvider;
 import org.apache.wiki.util.TextUtil;
 
@@ -130,7 +131,7 @@ import org.apache.wiki.util.TextUtil;
 
 public class ReferenceManager
     extends BasicPageFilter
-    implements InternalModule, WikiEventListener
+    implements WikiEventListener
 {
     /** Maps page wikiname to a Collection of pages it refers to. The 
Collection
      *  must contain Strings. The Collection may contain names of non-existing
@@ -146,13 +147,8 @@ public class ReferenceManager
     private Map<String,Set<String>> m_referredBy;
     private Map<String,Set<String>> m_unmutableReferredBy;
 
-    /** The WikiEngine that owns this object. */
-    private WikiEngine     m_engine;
-
     private boolean        m_matchEnglishPlurals = false;
 
-    private static Logger log = Logger.getLogger(ReferenceManager.class);
-
     private static final String SERIALIZATION_FILE = "refmgr.ser";
     private static final String SERIALIZATION_DIR  = "refmgr-attr";
 
@@ -160,29 +156,7 @@ public class ReferenceManager
     private static final long serialVersionUID = 4L;
 
     /**
-     *  Builds a new ReferenceManager.
-     *
-     *  @param engine The WikiEngine to which this is managing references to.
-     */
-    public ReferenceManager( WikiEngine engine )
-    {
-        m_refersTo   = new HashMap<String,Collection<String>>();
-        m_referredBy = new HashMap<String,Set<String>>();
-        m_engine = engine;
-
-        m_matchEnglishPlurals = TextUtil.getBooleanProperty( 
engine.getWikiProperties(),
-                                                             
WikiEngine.PROP_MATCHPLURALS,
-                                                             
m_matchEnglishPlurals );
-
-        //
-        //  Create two maps that contain unmutable versions of the two basic 
maps.
-        //
-        m_unmutableReferredBy = Collections.unmodifiableMap( m_referredBy );
-        m_unmutableRefersTo   = Collections.unmodifiableMap( m_refersTo );
-    }
-
-    /**
-     *  Does a full reference update.  Does not sync; assumes that you do it 
afterwards.
+     *  Does a full reference update. Does not sync; assumes that you do it 
afterwards.
      */
     private void updatePageReferences( WikiPage page ) throws ProviderException
     {
@@ -204,6 +178,26 @@ public class ReferenceManager
     }
 
     /**
+     * Initialize the ReferenceManager
+     */
+    public void initialize( WikiEngine engine, Properties properties ) throws 
FilterException, WikiException
+    {
+        super.initialize(engine, properties);
+        m_refersTo   = new HashMap<String,Collection<String>>();
+        m_referredBy = new HashMap<String,Set<String>>();
+
+        m_matchEnglishPlurals = TextUtil.getBooleanProperty( 
engine.getWikiProperties(),
+                                                             
WikiEngine.PROP_MATCHPLURALS,
+                                                             
m_matchEnglishPlurals );
+
+        //
+        //  Create two maps that contain unmutable versions of the two basic 
maps.
+        //
+        m_unmutableReferredBy = Collections.unmodifiableMap( m_referredBy );
+        m_unmutableRefersTo   = Collections.unmodifiableMap( m_refersTo );
+    }
+    
+    /**
      *  Initializes the entire reference manager with the initial set of pages
      *  from the collection.
      *

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/VariableManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/VariableManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/VariableManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/VariableManager.java
 Mon Jun 29 13:29:39 2015
@@ -29,7 +29,6 @@ import java.util.ResourceBundle;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
-import org.apache.log4j.Logger;
 import org.apache.wiki.api.engine.FilterManager;
 import org.apache.wiki.api.exceptions.NoSuchVariableException;
 import org.apache.wiki.api.filters.PageFilter;
@@ -43,10 +42,8 @@ import org.apache.wiki.preferences.Prefe
  *
  *  @since 1.9.20.
  */
-public class VariableManager implements InternalModule
+public class VariableManager extends WikiInternalModule
 {
-    private static Logger log = Logger.getLogger( VariableManager.class );
-   
     // FIXME: These are probably obsolete.
     public static final String VAR_ERROR = "error";
     public static final String VAR_MSG   = "msg";
@@ -61,14 +58,6 @@ public class VariableManager implements
     };
     
     /**
-     *  Creates a VariableManager object using the property list given.
-     *  @param props The properties.
-     */
-    public void initialize( WikiEngine engine, Properties props )
-    {
-    }
-
-    /**
      *  Returns true if the link is really command to insert
      *  a variable.
      *  <P>

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiEngine.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiEngine.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiEngine.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiEngine.java
 Mon Jun 29 13:29:39 2015
@@ -175,8 +175,6 @@ public class WikiEngine
     /** If this property is set to false, all filters are disabled when 
translating. */
     public static final String PROP_RUNFILTERS   = "jspwiki.runFilters";
     
-    private static Properties staticProps = new Properties();
-
     /** Compares pages by name */
     private PageSorter     m_pageSorter = null;
     
@@ -386,20 +384,6 @@ public class WikiEngine
 
 
     /**
-     *  Instantiate the WikiEngine using a given set of properties.
-     *  Use this constructor for testing purposes only.
-     *
-     *  @param properties A set of properties to use to initialize this 
WikiEngine.
-     *  @throws WikiException If the initialization fails.
-     */
-    public WikiEngine( )
-        throws WikiException
-    {
-       m_properties = staticProps;
-//        initialize( properties );
-    }
-
-    /**
      *  Instantiate using this method when you're running as a servlet and
      *  WikiEngine will figure out where to look for the property
      *  file.
@@ -452,7 +436,6 @@ public class WikiEngine
     {
         m_startTime  = new Date();
         m_properties = props;
-        WikiEngine.staticProps = props;
 
         //
         //  Initialize log4j.  However, make sure that we don't initialize it 
multiple times.
@@ -546,10 +529,6 @@ public class WikiEngine
         m_templateDir    = TextUtil.getStringProperty( props, 
PROP_TEMPLATEDIR, "default" );
         m_frontPage      = TextUtil.getStringProperty( props, PROP_FRONTPAGE,  
 "Main" );
         
-        // Initialize the page name comparator now as it may be used while
-        // initializing other modules
-        initPageSorter( props );
-
         //
         //  Initialize the important modules.  Any exception thrown by the
         //  managers means that we will not start up.
@@ -564,22 +543,23 @@ public class WikiEngine
             m_urlConstructor = (URLConstructor) urlclass.newInstance();
             m_urlConstructor.initialize( this, props );
             
-            m_pageManager       = 
(PageManager)ClassUtil.getMappedObject(PageManager.class.getName(), this, props 
);
-            m_pluginManager     = 
(PluginManager)ClassUtil.getMappedObject(PluginManager.class.getName(), this, 
props );
-            m_differenceManager = 
(DifferenceManager)ClassUtil.getMappedObject(DifferenceManager.class.getName(), 
this, props );
-            m_attachmentManager = 
(AttachmentManager)ClassUtil.getMappedObject(AttachmentManager.class.getName(), 
this, props );
-            m_variableManager   = 
(VariableManager)ClassUtil.getMappedObject(VariableManager.class.getName(), 
this, props );
-            m_filterManager     = 
(FilterManager)ClassUtil.getMappedObject(FilterManager.class.getName(), this, 
props );
-            m_renderingManager  = (RenderingManager) 
ClassUtil.getMappedObject(RenderingManager.class.getName(), this, props );
-
-            m_searchManager     = 
(SearchManager)ClassUtil.getMappedObject(SearchManager.class.getName(), this, 
props );
-
-            m_authenticationManager = (AuthenticationManager) 
ClassUtil.getMappedObject(AuthenticationManager.class.getName(), this, props );
-            m_authorizationManager  = (AuthorizationManager) 
ClassUtil.getMappedObject( AuthorizationManager.class.getName(), this, props );
-            m_userManager           = (UserManager) 
ClassUtil.getMappedObject(UserManager.class.getName(), this, props );
-            m_groupManager          = (GroupManager) 
ClassUtil.getMappedObject(GroupManager.class.getName(), this, props );
+            m_pageSorter        = 
ClassUtil.getInternalModule(PageSorter.class, this, props );
+            m_pageManager       = 
ClassUtil.getInternalModule(PageManager.class, this, props );
+            m_pluginManager     = 
ClassUtil.getInternalModule(PluginManager.class, this, props );
+            m_differenceManager = 
ClassUtil.getInternalModule(DifferenceManager.class, this, props );
+            m_attachmentManager = 
ClassUtil.getInternalModule(AttachmentManager.class, this, props );
+            m_variableManager   = 
ClassUtil.getInternalModule(VariableManager.class, this, props );
+            m_filterManager     = 
ClassUtil.getInternalModule(FilterManager.class, this, props );
+            m_renderingManager  = 
ClassUtil.getInternalModule(RenderingManager.class, this, props );
+
+            m_searchManager     = 
ClassUtil.getInternalModule(SearchManager.class, this, props );
+
+            m_authenticationManager = 
ClassUtil.getInternalModule(AuthenticationManager.class, this, props );
+            m_authorizationManager  = 
ClassUtil.getInternalModule(AuthorizationManager.class, this, props );
+            m_userManager           = 
ClassUtil.getInternalModule(UserManager.class, this, props );
+            m_groupManager          = 
ClassUtil.getInternalModule(GroupManager.class, this, props );
 
-            m_editorManager     = 
(EditorManager)ClassUtil.getMappedObject(EditorManager.class.getName(), this , 
props );
+            m_editorManager     = 
ClassUtil.getInternalModule(EditorManager.class, this , props );
 
             m_progressManager   = new ProgressManager();
 
@@ -588,16 +568,13 @@ public class WikiEngine
             m_aclManager = getAclManager();
 
             // Start the Workflow manager
-            m_workflowMgr = 
(WorkflowManager)ClassUtil.getMappedObject(WorkflowManager.class.getName(), 
this, props);
+            m_workflowMgr = ClassUtil.getInternalModule(WorkflowManager.class, 
this, props);
 
-            m_internationalizationManager = (InternationalizationManager)
-                
ClassUtil.getMappedObject(InternationalizationManager.class.getName(), this, 
props);
+            m_internationalizationManager = 
ClassUtil.getInternalModule(InternationalizationManager.class, this, props);
 
-            m_templateManager   = (TemplateManager)
-                ClassUtil.getMappedObject(TemplateManager.class.getName(), 
this, props );
+            m_templateManager   = 
ClassUtil.getInternalModule(TemplateManager.class, this, props );
 
-            m_adminBeanManager = (AdminBeanManager)
-                
ClassUtil.getMappedObject(AdminBeanManager.class.getName(),this);
+            m_adminBeanManager = 
ClassUtil.getInternalModule(AdminBeanManager.class,this, props);
 
             // Since we want to use a page filters initilize() method
             // as a engine startup listener where we can initialize global 
event listeners,
@@ -618,7 +595,7 @@ public class WikiEngine
             //  initReferenceManager is indirectly using m_filterManager, 
therefore
             //  it has to be called after it was initialized.
             //
-            initReferenceManager();
+            initReferenceManager(props);
 
             //
             //  Hook the different manager routines into the system.
@@ -648,27 +625,25 @@ public class WikiEngine
             log.fatal( "JSPWiki could not start, URLConstructor cannot be 
accessed: " + e.getMessage(), e );
             throw new WikiException(e.getMessage(), e );
         }
-        catch( Exception e )
-        {
-            // Final catch-all for everything
-            log.fatal( "JSPWiki could not start, due to an unknown exception 
when starting.",e );
-            throw new WikiException( "Failed to start. Caused by: " + 
e.getMessage() + 
-                                     "; please check log files for better 
information.", e );
-        }
+//        catch( Exception e )
+//        {
+//            // Final catch-all for everything
+//            log.fatal( "JSPWiki could not start, due to an unknown exception 
when starting.",e );
+//            throw new WikiException( "Failed to start. Caused by: " + 
e.getMessage() + 
+//                                     "; please check log files for better 
information.", e );
+//        }
         
         //
         //  Initialize the good-to-have-but-not-fatal modules.
         //
         try
         {
-            if( TextUtil.getBooleanProperty( props,
-                                             RSSGenerator.PROP_GENERATE_RSS,
-                                             false ) )
+            if( TextUtil.getBooleanProperty( props, 
RSSGenerator.PROP_GENERATE_RSS, false ) )
             {
-                m_rssGenerator = 
(RSSGenerator)ClassUtil.getMappedObject(RSSGenerator.class.getName(), this, 
props );
+                m_rssGenerator = 
ClassUtil.getInternalModule(RSSGenerator.class, this, props );
             }
 
-            m_pageRenamer = 
(PageRenamer)ClassUtil.getMappedObject(PageRenamer.class.getName(), this, props 
);
+            m_pageRenamer = ClassUtil.getInternalModule(PageRenamer.class, 
this, props );
         }
         catch( Exception e )
         {
@@ -679,8 +654,7 @@ public class WikiEngine
         // Start the RSS generator & generator thread
         if( m_rssGenerator != null )
         {
-            m_rssFile = TextUtil.getStringProperty( props,
-                    RSSGenerator.PROP_RSSFILE, "rss.rdf" );
+            m_rssFile = TextUtil.getStringProperty( props, 
RSSGenerator.PROP_RSSFILE, "rss.rdf" );
             File rssFile=null;
             if (m_rssFile.startsWith(File.separator))
             {
@@ -711,7 +685,7 @@ public class WikiEngine
      *  @throws WikiException If the reference manager initialization fails.
      */
     @SuppressWarnings("unchecked")
-    public void initReferenceManager() throws WikiException
+    private void initReferenceManager(Properties props) throws WikiException
     {
         try
         {
@@ -722,9 +696,7 @@ public class WikiEngine
             // Build a new manager with default key lists.
             if( m_referenceManager == null )
             {
-                m_referenceManager =
-                    (ReferenceManager) 
ClassUtil.getMappedObject(ReferenceManager.class.getName(), this );
-                m_referenceManager.setEngine(this);
+               m_referenceManager = 
ClassUtil.getInternalModule(ReferenceManager.class, this, props );
                 m_referenceManager.initialize( pages );
             }
 
@@ -1999,10 +1971,9 @@ public class WikiEngine
      *  @since 1.6.1
      *  @return The current PluginManager instance
      */
-    @SuppressWarnings("unchecked")
-    public < T extends PluginManager > T getPluginManager()
+    public PluginManager getPluginManager()
     {
-        return (T)m_pluginManager;
+        return m_pluginManager;
     }
 
     /**
@@ -2094,10 +2065,9 @@ public class WikiEngine
      *  @since 2.1.88
      *  @return The current FilterManager instance
      */
-    @SuppressWarnings("unchecked")
-    public < T extends FilterManager > T getFilterManager()
+    public FilterManager getFilterManager()
     {
-        return (T)m_filterManager;
+        return m_filterManager;
     }
 
     /**
@@ -2492,15 +2462,6 @@ public class WikiEngine
     }
     
     /**
-     * Initialize the page name comparator.
-     */
-    private void initPageSorter( Properties props )
-    {
-        m_pageSorter = new PageSorter();
-        m_pageSorter.initialize( props );
-    }
-    
-    /**
      * Get this engine's page name comparator.
      * 
      * @return the PageSorter used to sort pages by name in this engine

Added: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiInternalModule.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiInternalModule.java?rev=1688207&view=auto
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiInternalModule.java
 (added)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiInternalModule.java
 Mon Jun 29 13:29:39 2015
@@ -0,0 +1,30 @@
+package org.apache.wiki;
+
+import java.util.Properties;
+
+import org.apache.log4j.Logger;
+import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.modules.InternalModule;
+
+public class WikiInternalModule implements InternalModule {
+
+       protected Logger log = Logger.getLogger( getClass() );
+       
+       protected boolean initialized = false;
+       protected WikiEngine m_engine;
+       protected Properties m_properties;
+       
+       @Override
+       public void initialize(WikiEngine engine, Properties props) throws 
WikiException {
+               m_engine = engine;
+               m_properties = props;
+               initialized = true;
+       }
+
+       @Override
+       public boolean isInitialized() {
+               return initialized;
+       }
+
+       
+}

Propchange: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/WikiInternalModule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/engine/FilterManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/engine/FilterManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/engine/FilterManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/engine/FilterManager.java
 Mon Jun 29 13:29:39 2015
@@ -24,9 +24,10 @@ import java.util.List;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.exceptions.FilterException;
 import org.apache.wiki.api.filters.PageFilter;
+import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.modules.WikiModuleInfo;
 
-public interface FilterManager
+public interface FilterManager extends InternalModule
 {
     /** Property name for setting the filter XML property file.  Value is 
<tt>{@value}</tt>. */
     String PROP_FILTERXML = "jspwiki.filterConfig";

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/engine/PluginManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/engine/PluginManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/engine/PluginManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/engine/PluginManager.java
 Mon Jun 29 13:29:39 2015
@@ -27,11 +27,12 @@ import org.apache.oro.text.regex.Pattern
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.api.exceptions.PluginException;
 import org.apache.wiki.api.plugin.WikiPlugin;
+import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.modules.WikiModuleInfo;
 import org.apache.wiki.plugin.DefaultPluginManager.WikiPluginInfo;
 
 
-public interface PluginManager {
+public interface PluginManager extends InternalModule {
 
     /** The property name defining which packages will be searched for plugin 
classes. */
     String PROP_SEARCHPATH = "jspwiki.plugin.searchPath";

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/filters/BasicPageFilter.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/filters/BasicPageFilter.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/filters/BasicPageFilter.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/api/filters/BasicPageFilter.java
 Mon Jun 29 13:29:39 2015
@@ -18,12 +18,10 @@
  */
 package org.apache.wiki.api.filters;
 
-import java.util.Properties;
-
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.api.exceptions.FilterException;
-import org.apache.wiki.api.exceptions.WikiException;
 
 /**
  *  Provides a base implementation of a PageFilter.  None of the callbacks
@@ -31,21 +29,9 @@ import org.apache.wiki.api.exceptions.Wi
  *  and implement only methods that you need.
  *
  */
-public class BasicPageFilter
+public class BasicPageFilter extends WikiInternalModule
     implements PageFilter
 {
-    protected WikiEngine m_engine;
-  
-    /**
-     *  If you override this, you should call super.initialize() first.
-     *  
-     *  {@inheritDoc}
-     */
-    public void initialize( WikiEngine engine, Properties properties )
-        throws FilterException, WikiException
-    {
-        m_engine = engine;
-    }
 
     /**
      *  {@inheritDoc}

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/attachment/AttachmentManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/attachment/AttachmentManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/attachment/AttachmentManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/attachment/AttachmentManager.java
 Mon Jun 29 13:29:39 2015
@@ -35,16 +35,20 @@ import net.sf.ehcache.Element;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.wiki.PageManager;
+import org.apache.wiki.PageSorter;
+import org.apache.wiki.ReferenceManager;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.WikiProvider;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.exceptions.WikiException;
-import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.parser.MarkupParser;
+import org.apache.wiki.providers.CachingAttachmentProvider;
 import org.apache.wiki.providers.WikiAttachmentProvider;
+import org.apache.wiki.search.SearchManager;
 import org.apache.wiki.util.ClassUtil;
 
 /**
@@ -57,7 +61,7 @@ import org.apache.wiki.util.ClassUtil;
  *
  *  @since 1.9.28
  */
-public class AttachmentManager implements InternalModule
+public class AttachmentManager extends WikiInternalModule
 {
     /**
      *  The property name for defining the attachment provider class name.
@@ -81,8 +85,13 @@ public class AttachmentManager implement
 
     static Logger log = Logger.getLogger( AttachmentManager.class );
     private WikiAttachmentProvider m_provider;
-    private WikiEngine             m_engine;
+    private SearchManager          m_searchManager;
+    private PageManager            m_pageManager;
+    private ReferenceManager       m_referenceManager;
+    private PageSorter             m_pageSorter;
     private CacheManager m_cacheManager = CacheManager.getInstance();
+    
+    private boolean initialized = false;
 
     private Cache m_dynamicAttachments;
     /** Name of the page cache. */
@@ -104,21 +113,30 @@ public class AttachmentManager implement
      *  its configuration.  Typically this is the "jspwiki.properties".
      */
 
+    public AttachmentManager(SearchManager searchManager, ReferenceManager 
referenceManager, PageManager pageManager, PageSorter pageSorter) {
+       m_searchManager = searchManager;
+       m_pageManager = pageManager;
+       m_referenceManager = referenceManager;
+       m_pageSorter = pageSorter;
+    }
+    
     // FIXME: Perhaps this should fail somehow.
-    public void initialize( WikiEngine engine, Properties props )
+    public void initialize( WikiEngine engine, Properties props ) throws 
WikiException
     {
-        String classname;
-
-        m_engine = engine;
-
+        super.initialize(engine, props);
+       m_searchManager.initialize(engine, props);
+       m_pageManager.initialize(engine, props);
+       m_referenceManager.initialize(engine, props);
+       m_pageSorter.initialize(engine, props);
+       
         //
         //  If user wants to use a cache, then we'll use the CachingProvider.
         //
         boolean useCache = "true".equals(props.getProperty( 
PageManager.PROP_USECACHE ));
-
+        String classname;
         if( useCache )
         {
-            classname = "org.apache.wiki.providers.CachingAttachmentProvider";
+            classname = CachingAttachmentProvider.class.getName();
         }
         else
         {
@@ -151,7 +169,9 @@ public class AttachmentManager implement
 
             m_provider = (WikiAttachmentProvider) providerclass.newInstance();
 
-            m_provider.initialize(m_engine, props);
+            m_provider.initialize(engine, props);
+            
+            initialized = true;
         } catch( ClassNotFoundException e )
         {
             log.error( "Attachment provider class not found",e);
@@ -175,6 +195,11 @@ public class AttachmentManager implement
             m_provider = null;
         }
     }
+    
+    @Override
+    public boolean isInitialized() {
+       return initialized;
+    }
 
     /**
      *  Returns true, if attachments are enabled and running.
@@ -280,7 +305,7 @@ public class AttachmentManager implement
             // this can't be an attachment
             if(parentPage.length() == 0) return null;
 
-            currentPage = m_engine.getPage( parentPage );
+            if (context!=null) currentPage = context.getEngine().getPage( 
parentPage );
 
             //
             // Go check for legacy name
@@ -347,7 +372,7 @@ public class AttachmentManager implement
         //
         if( atts instanceof List )
         {
-            m_engine.getPageSorter().sortPages( (List) atts );
+            m_pageSorter.sortPages( (List) atts );
         }
 
         return atts;
@@ -505,7 +530,7 @@ public class AttachmentManager implement
         //  Checks if the actual, real page exists without any modifications
         //  or aliases.  We cannot store an attachment to a non-existent page.
         //
-        if( !m_engine.getPageManager().pageExists( att.getParentName() ) )
+        if( !m_pageManager.pageExists( att.getParentName() ) )
         {
             // the caller should catch the exception and use the exception 
text as an i18n key
             throw new ProviderException(  "attach.parent.not.exist"  );
@@ -513,13 +538,13 @@ public class AttachmentManager implement
         
         m_provider.putAttachmentData( att, in );
 
-        m_engine.getReferenceManager().updateReferences( att.getName(),
+        m_referenceManager.updateReferences( att.getName(),
                                                          new 
java.util.Vector() );
 
         WikiPage parent = new WikiPage( m_engine, att.getParentName() );
         m_engine.updateReferences( parent );
 
-        m_engine.getSearchManager().reindexPage( att );
+        m_searchManager.reindexPage( att );
     }
 
     /**
@@ -604,10 +629,10 @@ public class AttachmentManager implement
         if( m_provider == null ) return;
 
         m_provider.deleteAttachment( att );
+        
+        m_searchManager.pageRemoved( att );
 
-        m_engine.getSearchManager().pageRemoved( att );
-
-        m_engine.getReferenceManager().clearPageEntries( att.getName() );
+        m_referenceManager.clearPageEntries( att.getName() );
 
     }
 

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/AuthenticationManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/AuthenticationManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/AuthenticationManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/AuthenticationManager.java
 Mon Jun 29 13:29:39 2015
@@ -44,6 +44,7 @@ import javax.servlet.http.HttpSession;
 import org.apache.commons.io.IOUtils;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.auth.authorize.Role;
@@ -59,7 +60,6 @@ import org.apache.wiki.auth.login.WikiCa
 import org.apache.wiki.event.WikiEventListener;
 import org.apache.wiki.event.WikiEventManager;
 import org.apache.wiki.event.WikiSecurityEvent;
-import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.util.TextUtil;
 import org.apache.wiki.util.TimedCounterList;
 
@@ -76,7 +76,7 @@ import org.apache.wiki.util.TimedCounter
  * 
  * @since 2.3
  */
-public class AuthenticationManager implements InternalModule {
+public class AuthenticationManager extends WikiInternalModule {
 
     /** How many milliseconds the logins are stored before they're cleaned 
away. */
     private static final long LASTLOGINS_CLEANUP_TIME = 10*60*1000L; // Ten 
minutes
@@ -164,8 +164,6 @@ public class AuthenticationManager imple
     /** Static Boolean for lazily-initializing the "allows cookie 
authentication" flag */
     private boolean                     m_allowsCookieAuthentication = false;
 
-    private WikiEngine                         m_engine            = null;
-    
     /** If true, logs the IP address of the editor */
     private boolean                            m_storeIPAddress    = true;
 
@@ -183,7 +181,7 @@ public class AuthenticationManager imple
     @SuppressWarnings("unchecked")
     public void initialize( WikiEngine engine, Properties props ) throws 
WikiException
     {
-        m_engine = engine;
+       super.initialize(engine, props);
         m_storeIPAddress = TextUtil.getBooleanProperty( props, 
PROP_STOREIPADDRESS, m_storeIPAddress );
 
         // Should we allow cookies for assertions? (default: yes)
@@ -210,6 +208,7 @@ public class AuthenticationManager imple
         catch (ClassNotFoundException e)
         {
             e.printStackTrace();
+            log.error(e,e);
             throw new WikiException( "Could not instantiate LoginModule 
class.", e );
         }
         

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/AuthorizationManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/AuthorizationManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/AuthorizationManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/AuthorizationManager.java
 Mon Jun 29 13:29:39 2015
@@ -42,6 +42,7 @@ import javax.servlet.http.HttpServletRes
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
@@ -58,12 +59,10 @@ import org.apache.wiki.event.WikiEventLi
 import org.apache.wiki.event.WikiEventManager;
 import org.apache.wiki.event.WikiSecurityEvent;
 import org.apache.wiki.i18n.InternationalizationManager;
-import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.tags.WikiTagBase;
 import org.apache.wiki.util.ClassUtil;
 import org.freshcookies.security.policy.LocalPolicy;
-import org.freshcookies.security.policy.PolicyException;
 
 /**
  * <p>Manages all access control and authorization; determines what 
authenticated
@@ -97,7 +96,7 @@ import org.freshcookies.security.policy.
  * @since 2.3
  * @see AuthenticationManager
  */
-public class AuthorizationManager implements InternalModule {
+public class AuthorizationManager extends WikiInternalModule {
 
     private static final Logger log = Logger.getLogger( 
AuthorizationManager.class );
     /**
@@ -121,18 +120,9 @@ public class AuthorizationManager implem
     /** Cache for storing ProtectionDomains used to evaluate the local policy. 
*/
     private Map<Principal, ProtectionDomain>                               
m_cachedPds       = new WeakHashMap<Principal, ProtectionDomain>();
 
-    private WikiEngine                        m_engine          = null;
-
     private LocalPolicy                       m_localPolicy     = null;
 
     /**
-     * Constructs a new AuthorizationManager instance.
-     */
-    public AuthorizationManager()
-    {
-    }
-
-    /**
      * Returns <code>true</code> or <code>false</code>, depending on
      * whether a Permission is allowed for the Subject associated with
      * a supplied WikiSession. The access control algorithm works this way:
@@ -460,20 +450,20 @@ public class AuthorizationManager implem
      * @param properties the set of properties used to initialize the wiki 
engine
      * @throws WikiException if the AuthorizationManager cannot be initialized
      */
-    public void initialize( WikiEngine engine, Properties properties ) throws 
WikiException
+    public void initialize( WikiEngine engine, Properties props ) throws 
WikiException
     {
-        m_engine = engine;
+        super.initialize(engine, props);
 
         //
         //  JAAS authorization continues
         //
-        m_authorizer = getAuthorizerImplementation( properties );
-        m_authorizer.initialize( engine, properties );
+        m_authorizer = getAuthorizerImplementation( props );
+        m_authorizer.initialize( engine, props );
 
         // Initialize local security policy
         try
         {
-            String policyFileName = properties.getProperty( POLICY, 
DEFAULT_POLICY );
+            String policyFileName = props.getProperty( POLICY, DEFAULT_POLICY 
);
             URL policyURL = AuthenticationManager.findConfigFile( engine, 
policyFileName );
             
             if (policyURL != null) 

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/UserManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/UserManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/UserManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/UserManager.java
 Mon Jun 29 13:29:39 2015
@@ -39,6 +39,7 @@ import org.apache.commons.lang.StringUti
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.WikiSession;
 import org.apache.wiki.ajax.AjaxUtil;
 import org.apache.wiki.ajax.WikiAjaxDispatcherServlet;
@@ -58,7 +59,6 @@ import org.apache.wiki.event.WikiEventMa
 import org.apache.wiki.event.WikiSecurityEvent;
 import org.apache.wiki.filters.SpamFilter;
 import org.apache.wiki.i18n.InternationalizationManager;
-import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.preferences.Preferences;
 import org.apache.wiki.ui.InputValidator;
 import org.apache.wiki.util.ClassUtil;
@@ -77,7 +77,7 @@ import org.apache.wiki.workflow.Workflow
  * Provides a facade for obtaining user information.
  * @since 2.3
  */
-public class UserManager implements InternalModule {
+public class UserManager extends WikiInternalModule {
 
     private static final String USERDATABASE_PACKAGE = 
"org.apache.wiki.auth.user";
     private static final String SESSION_MESSAGES = "profile";
@@ -87,10 +87,6 @@ public class UserManager implements Inte
     private static final String PARAM_LOGINNAME = "loginname";
     private static final String UNKNOWN_CLASS = "<unknown>";
 
-    private WikiEngine m_engine;
-
-    private static Logger log = Logger.getLogger(UserManager.class);
-
     /** Message key for the "save profile" message. */
     public  static final String SAVE_APPROVER               = 
"workflow.createUserProfile";
     private static final String PROP_DATABASE               = 
"jspwiki.userdatabase";
@@ -103,6 +99,8 @@ public class UserManager implements Inte
     protected static final String PREFS_EMAIL               = "prefs.email";
 
     public static final String JSON_USERS = "users";
+    
+    private static Logger log = Logger.getLogger(UserManager.class);
 
     // private static final String  PROP_ACLMANAGER     = "jspwiki.aclManager";
 
@@ -124,9 +122,9 @@ public class UserManager implements Inte
      * @param engine the current wiki engine
      * @param props the wiki engine initialization properties
      */
-    public void initialize( WikiEngine engine, Properties props )
+    public void initialize( WikiEngine engine, Properties props ) throws 
WikiException
     {
-        m_engine = engine;
+        super.initialize(engine, props);
 
         // Attach the PageManager as a listener
         // TODO: it would be better if we did this in PageManager directly

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/acl/AclManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/acl/AclManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/acl/AclManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/acl/AclManager.java
 Mon Jun 29 13:29:39 2015
@@ -22,13 +22,15 @@ import java.util.Properties;
 
 import org.apache.wiki.WikiEngine;
 import org.apache.wiki.WikiPage;
+import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.auth.WikiSecurityException;
+import org.apache.wiki.modules.InternalModule;
 
 /**
  *  Specifies how to parse and return ACLs from wiki pages.
  *  @since 2.3
  */
-public interface AclManager
+public interface AclManager extends InternalModule
 {
 
     /**
@@ -36,7 +38,7 @@ public interface AclManager
      * @param engine the wiki engine
      * @param props the initialization properties
      */
-    void initialize( WikiEngine engine, Properties props );
+    void initialize( WikiEngine engine, Properties props ) throws 
WikiException;
 
     /**
      * A helper method for parsing textual AccessControlLists. The line is in

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/acl/DefaultAclManager.java
 Mon Jun 29 13:29:39 2015
@@ -32,13 +32,14 @@ import java.util.TreeMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.log4j.Logger;
 import org.apache.wiki.PageLock;
 import org.apache.wiki.PageManager;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.exceptions.ProviderException;
+import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.attachment.Attachment;
 import org.apache.wiki.auth.AuthorizationManager;
 import org.apache.wiki.auth.PrincipalComparator;
@@ -52,12 +53,9 @@ import org.apache.wiki.render.RenderingM
  *
  * @since 2.3
  */
-public class DefaultAclManager implements AclManager {
-
-    private static final Logger log = 
Logger.getLogger(DefaultAclManager.class);
+public class DefaultAclManager extends WikiInternalModule implements 
AclManager {
 
     private AuthorizationManager m_auth = null;
-    private WikiEngine m_engine = null;
     private static final String PERM_REGEX = "(" +
             PagePermission.COMMENT_ACTION + "|" +
             PagePermission.DELETE_ACTION + "|" +
@@ -75,19 +73,16 @@ public class DefaultAclManager implement
      */
     public static final Pattern ACL_PATTERN = Pattern.compile(ACL_REGEX);
 
-    /**
-     * Initializes the AclManager with a supplied wiki engine and properties.
-     *
-     * @param engine the wiki engine
-     * @param props  the initialization properties
-     * @see 
org.apache.wiki.auth.acl.AclManager#initialize(org.apache.wiki.WikiEngine,
-     *      java.util.Properties)
-     */
-    public void initialize(WikiEngine engine, Properties props) {
-        m_auth = engine.getAuthorizationManager();
-        m_engine = engine;
+    public DefaultAclManager(AuthorizationManager authorizationManager) {
+        m_auth = authorizationManager;
     }
 
+    @Override
+    public void initialize(WikiEngine engine, Properties props) throws 
WikiException {
+       super.initialize(engine, props);
+       m_auth.initialize(engine, props);
+    }
+    
     /**
      * A helper method for parsing textual AccessControlLists. The line is in
      * form "ALLOW <permission> <principal>, <principal>, <principal>". This

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/authorize/GroupManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/authorize/GroupManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/authorize/GroupManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/auth/authorize/GroupManager.java
 Mon Jun 29 13:29:39 2015
@@ -29,9 +29,9 @@ import java.util.StringTokenizer;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.lang.ArrayUtils;
-import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.WikiSession;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
 import org.apache.wiki.api.exceptions.WikiException;
@@ -46,7 +46,6 @@ import org.apache.wiki.event.WikiEvent;
 import org.apache.wiki.event.WikiEventListener;
 import org.apache.wiki.event.WikiEventManager;
 import org.apache.wiki.event.WikiSecurityEvent;
-import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.ui.InputValidator;
 import org.apache.wiki.util.ClassUtil;
 
@@ -66,17 +65,13 @@ import org.apache.wiki.util.ClassUtil;
  * </p>
  * @since 2.4.19
  */
-public class GroupManager implements Authorizer, WikiEventListener, 
InternalModule {
+public class GroupManager extends WikiInternalModule implements Authorizer, 
WikiEventListener {
 
     /** Key used for adding UI messages to a user's WikiSession. */
     public static final String  MESSAGES_KEY       = "group";
 
     private static final String PROP_GROUPDATABASE = "jspwiki.groupdatabase";
 
-    static final Logger         log                = Logger.getLogger( 
GroupManager.class );
-
-    protected WikiEngine        m_engine;
-
     protected WikiEventListener m_groupListener;
 
     private GroupDatabase       m_groupDatabase    = null;

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/content/PageRenamer.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/content/PageRenamer.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/content/PageRenamer.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/content/PageRenamer.java
 Mon Jun 29 13:29:39 2015
@@ -24,10 +24,10 @@ import java.util.TreeSet;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.log4j.Logger;
 import org.apache.wiki.InternalWikiException;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.api.exceptions.ProviderException;
 import org.apache.wiki.api.exceptions.WikiException;
@@ -45,11 +45,8 @@ import org.apache.wiki.util.TextUtil;
  *
  *  @since 2.8
  */
-public class PageRenamer
+public class PageRenamer extends WikiInternalModule
 {
-
-    private static final Logger log = Logger.getLogger( PageRenamer.class );
-    
     private boolean m_camelCase = false;
     
     /**

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/diff/DifferenceManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/diff/DifferenceManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/diff/DifferenceManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/diff/DifferenceManager.java
 Mon Jun 29 13:29:39 2015
@@ -25,15 +25,16 @@ import java.util.Properties;
 import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
-import org.apache.wiki.modules.InternalModule;
+import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.util.ClassUtil;
 
 
 /**
  * Load, initialize and delegate to the DiffProvider that will actually do the 
work.
  */
-public class DifferenceManager implements InternalModule {
+public class DifferenceManager extends WikiInternalModule {
     private static final Logger log = 
Logger.getLogger(DifferenceManager.class);
 
     /**
@@ -49,8 +50,11 @@ public class DifferenceManager implement
      * @param engine The WikiEngine.
      * @param props  A set of properties.
      */
-    public void initialize(WikiEngine engine, Properties props) {
-        loadProvider(props);
+    public void initialize(WikiEngine engine, Properties props) throws 
WikiException {
+       
+       super.initialize(engine, props);
+        
+       loadProvider(props);
 
         initializeProvider(engine, props);
 

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/filters/DefaultFilterManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/filters/DefaultFilterManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/filters/DefaultFilterManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/filters/DefaultFilterManager.java
 Mon Jun 29 13:29:39 2015
@@ -99,8 +99,6 @@ public class DefaultFilterManager extend
 
     private Map< String, PageFilterInfo > m_filterClassMap = new HashMap< 
String, PageFilterInfo >();
 
-    private static final Logger log = 
Logger.getLogger(DefaultFilterManager.class);
-
     /**
      *  Constructs a new FilterManager object.
      *  

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/i18n/InternationalizationManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/i18n/InternationalizationManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/i18n/InternationalizationManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/i18n/InternationalizationManager.java
 Mon Jun 29 13:29:39 2015
@@ -21,11 +21,9 @@ package org.apache.wiki.i18n;
 import java.text.MessageFormat;
 import java.util.Locale;
 import java.util.MissingResourceException;
-import java.util.Properties;
 import java.util.ResourceBundle;
 
-import org.apache.wiki.WikiEngine;
-import org.apache.wiki.modules.InternalModule;
+import org.apache.wiki.WikiInternalModule;
 
 
 /**
@@ -33,7 +31,7 @@ import org.apache.wiki.modules.InternalM
  *
  *  @since 2.6
  */
-public class InternationalizationManager implements InternalModule {
+public class InternationalizationManager extends WikiInternalModule {
 
     /** The name of the ResourceBundle which contains any and all JSPWiki core
      *  resource strings.  It's value is {@value}.
@@ -48,15 +46,6 @@ public class InternationalizationManager
     // public static final String PLUGINS_BUNDLE = "plugins";
 
     /**
-     *  Constructs a new InternationalizationManager.
-     *
-     *  @param engine To which engine this belongs to
-     */
-    public void initialize( WikiEngine engine, Properties props )
-    {
-    }
-
-    /**
      *  Returns a String from the CORE_BUNDLE using English as the default
      *  locale.
      *

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/modules/InternalModule.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/modules/InternalModule.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/modules/InternalModule.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/modules/InternalModule.java
 Mon Jun 29 13:29:39 2015
@@ -39,4 +39,6 @@ import org.apache.wiki.api.exceptions.Wi
 public interface InternalModule
 {
        public void initialize(WikiEngine engine, Properties props) throws 
WikiException;
+       
+       public boolean isInitialized();
 }

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/modules/ModuleManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/modules/ModuleManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/modules/ModuleManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/modules/ModuleManager.java
 Mon Jun 29 13:29:39 2015
@@ -19,16 +19,14 @@
 package org.apache.wiki.modules;
 
 import java.util.Collection;
-import java.util.Properties;
 
 import org.apache.wiki.Release;
-import org.apache.wiki.WikiEngine;
-import org.apache.wiki.api.exceptions.WikiException;
+import org.apache.wiki.WikiInternalModule;
 
 /**
  *  Superclass for all JSPWiki managers for modules (plugins, etc).
  */
-public abstract class ModuleManager implements InternalModule
+public abstract class ModuleManager extends WikiInternalModule
 {
 
     /**
@@ -36,10 +34,6 @@ public abstract class ModuleManager impl
      *  (Each plugin should include this property-file in its jar-file)
      */
     public static final String PLUGIN_RESOURCE_LOCATION = 
"ini/jspwiki_module.xml";
-        
-    protected WikiEngine m_engine;
-    
-    protected Properties m_properties;
     
     private boolean m_loadIncompatibleModules = false;
     
@@ -52,11 +46,6 @@ public abstract class ModuleManager impl
         
     }
     
-    public void initialize( WikiEngine engine, Properties props ) throws 
WikiException {
-       m_engine = engine;
-       m_properties = props;
-    }
-    
     /**
      *  Returns true, if the given module is compatible with this version of 
JSPWiki.
      *  

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/render/RenderingManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/render/RenderingManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/render/RenderingManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/render/RenderingManager.java
 Mon Jun 29 13:29:39 2015
@@ -29,15 +29,14 @@ import net.sf.ehcache.Cache;
 import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Element;
 
-import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.event.WikiEvent;
 import org.apache.wiki.event.WikiEventListener;
 import org.apache.wiki.event.WikiEventUtils;
 import org.apache.wiki.event.WikiPageEvent;
-import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.parser.JSPWikiMarkupParser;
 import org.apache.wiki.parser.MarkupParser;
 import org.apache.wiki.parser.WikiDocument;
@@ -53,14 +52,10 @@ import org.apache.wiki.parser.WikiDocume
  *
  *  @since  2.4
  */
-public class RenderingManager implements WikiEventListener, InternalModule
+public class RenderingManager extends WikiInternalModule implements 
WikiEventListener
 {
-    private static Logger log = Logger.getLogger( RenderingManager.class );
-
     private              int    m_cacheExpiryPeriod = 24*60*60; // This can be 
relatively long
 
-    private          WikiEngine m_engine;
-
     private CacheManager m_cacheManager = CacheManager.getInstance();
 
     /** The capacity of the caches, if you want something else, tweak 
ehcache.xml. */
@@ -102,10 +97,10 @@ public class RenderingManager implements
      *  @param properties A list of properties to get parameters from.
      *  @throws WikiException If the manager could not be initialized.
      */
-    public void initialize( WikiEngine engine, Properties properties )
+    public void initialize( WikiEngine engine, Properties props )
         throws WikiException
     {
-        m_engine = engine;
+        super.initialize(engine, props);
 
         String documentCacheName = engine.getApplicationName() + "." + 
DOCUMENTCACHE_NAME;
 
@@ -117,7 +112,7 @@ public class RenderingManager implements
             m_cacheManager.addCache(m_documentCache);
         }
 
-        String renderImplName = properties.getProperty( PROP_RENDERER );
+        String renderImplName = props.getProperty( PROP_RENDERER );
         if( renderImplName == null )
         {
             renderImplName = DEFAULT_RENDERER;

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/rss/RSSGenerator.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/rss/RSSGenerator.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/rss/RSSGenerator.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/rss/RSSGenerator.java
 Mon Jun 29 13:29:39 2015
@@ -24,9 +24,9 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.log4j.Logger;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.WikiPage;
 import org.apache.wiki.WikiProvider;
 import org.apache.wiki.WikiSession;
@@ -35,7 +35,6 @@ import org.apache.wiki.api.exceptions.Pr
 import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.attachment.Attachment;
 import org.apache.wiki.auth.permissions.PagePermission;
-import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.util.TextUtil;
 import org.apache.wiki.util.comparators.PageTimeComparator;
 
@@ -56,11 +55,8 @@ import org.apache.wiki.util.comparators.
  */
 // FIXME: Limit diff and page content size.
 // FIXME3.0: This class would need a bit of refactoring.  Method names, e.g. 
are confusing.
-public class RSSGenerator implements InternalModule
+public class RSSGenerator extends WikiInternalModule
 {
-    static Logger              log = Logger.getLogger( RSSGenerator.class );
-    private WikiEngine         m_engine;
-
     private String             m_channelDescription = "";
     private String             m_channelLanguage    = "en-us";
     private boolean            m_enabled = true;
@@ -166,7 +162,7 @@ public class RSSGenerator implements Int
      */
     public void initialize( WikiEngine engine, Properties properties ) throws 
WikiException
     {
-        m_engine = engine;
+        super.initialize(engine, properties);
 
         // FIXME: This assumes a bit too much.
         if( engine.getBaseURL() == null || engine.getBaseURL().length() == 0 )

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/search/SearchManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/search/SearchManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/search/SearchManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/search/SearchManager.java
 Mon Jun 29 13:29:39 2015
@@ -44,6 +44,7 @@ import org.apache.wiki.ajax.WikiAjaxServ
 import org.apache.wiki.api.exceptions.FilterException;
 import org.apache.wiki.api.exceptions.NoRequiredPropertyException;
 import org.apache.wiki.api.exceptions.ProviderException;
+import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.api.filters.BasicPageFilter;
 import org.apache.wiki.event.WikiEvent;
 import org.apache.wiki.event.WikiEventListener;
@@ -51,7 +52,6 @@ import org.apache.wiki.event.WikiEventUt
 import org.apache.wiki.event.WikiPageEvent;
 import org.apache.wiki.modules.InternalModule;
 import org.apache.wiki.parser.MarkupParser;
-import org.apache.wiki.tags.WikiTagBase;
 import org.apache.wiki.util.ClassUtil;
 import org.apache.wiki.util.TextUtil;
 
@@ -60,9 +60,7 @@ import org.apache.wiki.util.TextUtil;
  *
  *  @since 2.2.21.
  */
-public class SearchManager extends BasicPageFilter implements InternalModule, 
WikiEventListener {
-
-    private static final Logger log = Logger.getLogger(SearchManager.class);
+public class SearchManager extends BasicPageFilter implements 
WikiEventListener {
 
     private static final String DEFAULT_SEARCHPROVIDER  = 
"org.apache.wiki.search.LuceneSearchProvider";
     
@@ -258,9 +256,9 @@ public class SearchManager extends Basic
      * @throws FilterException if the search provider failed to initialize
      */
     public void initialize(WikiEngine engine, Properties properties)
-        throws FilterException
+        throws WikiException
     {
-        m_engine = engine;
+        super.initialize(engine, properties);
 
         loadSearchProvider(properties);
 

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/ui/admin/DefaultAdminBeanManager.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/ui/admin/DefaultAdminBeanManager.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/ui/admin/DefaultAdminBeanManager.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/ui/admin/DefaultAdminBeanManager.java
 Mon Jun 29 13:29:39 2015
@@ -34,9 +34,9 @@ import javax.management.MalformedObjectN
 import javax.management.NotCompliantMBeanException;
 import javax.management.ObjectName;
 
-import org.apache.log4j.Logger;
 import org.apache.wiki.Release;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
 import org.apache.wiki.api.engine.AdminBeanManager;
 import org.apache.wiki.api.engine.PluginManager;
 import org.apache.wiki.api.exceptions.WikiException;
@@ -58,21 +58,19 @@ import org.apache.wiki.util.ClassUtil;
  *
  *  @since  2.5.52
  */
-public class DefaultAdminBeanManager implements WikiEventListener, 
AdminBeanManager {
+public class DefaultAdminBeanManager extends WikiInternalModule implements 
WikiEventListener, AdminBeanManager {
        
-    private WikiEngine m_engine;
     private ArrayList< AdminBean >  m_allBeans;
 
     private MBeanServer m_mbeanServer = null;
 
-    private static Logger log = 
Logger.getLogger(DefaultAdminBeanManager.class);
-
-    public void initialize( WikiEngine engine, Properties props ) {
-        log.info("Using JDK 1.5 Platform MBeanServer");
+    public void initialize( WikiEngine engine, Properties props ) throws 
WikiException {
+       super.initialize(engine, props);
+        
+       log.info("Using JDK 1.5 Platform MBeanServer");
+        
         m_mbeanServer = MBeanServerFactory15.getServer();
 
-        m_engine = engine;
-
         if( m_mbeanServer != null ) {
             log.info( m_mbeanServer.getClass().getName() );
             log.info( m_mbeanServer.getDefaultDomain() );

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/DefaultURLConstructor.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/DefaultURLConstructor.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/DefaultURLConstructor.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/DefaultURLConstructor.java
 Mon Jun 29 13:29:39 2015
@@ -26,9 +26,10 @@ import java.util.Properties;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.lang.StringUtils;
-
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.WikiInternalModule;
+import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.ui.Command;
 import org.apache.wiki.ui.CommandResolver;
 import org.apache.wiki.util.TextUtil;
@@ -40,11 +41,9 @@ import org.apache.wiki.util.TextUtil;
  *  
  *  @since 2.2
  */
-public class DefaultURLConstructor
+public class DefaultURLConstructor extends WikiInternalModule
     implements URLConstructor
 {
-    protected WikiEngine m_engine;
-
     /**
      *  Contains the absolute path of the JSPWiki Web application without the
      *  actual servlet (which is the m_urlPrefix).
@@ -55,10 +54,8 @@ public class DefaultURLConstructor
      * 
      * {@inheritDoc}
      */
-    public void initialize( WikiEngine engine, 
-                            Properties properties )
-    {
-        m_engine = engine;
+    public void initialize( WikiEngine engine, Properties properties ) throws 
WikiException {
+        super.initialize(engine, properties);
 
         String baseurl = engine.getBaseURL();
 

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/ShortURLConstructor.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/ShortURLConstructor.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/ShortURLConstructor.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/ShortURLConstructor.java
 Mon Jun 29 13:29:39 2015
@@ -24,10 +24,10 @@ import java.util.Properties;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.log4j.Logger;
-
 import org.apache.wiki.InternalWikiException;
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.exceptions.WikiException;
 import org.apache.wiki.util.TextUtil;
 
 
@@ -58,7 +58,7 @@ public class ShortURLConstructor
     
     /** {@inheritDoc} */
     public void initialize( WikiEngine engine, 
-                            Properties properties )
+                            Properties properties ) throws WikiException
     {
         super.initialize( engine, properties );
         

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/ShortViewURLConstructor.java
 Mon Jun 29 13:29:39 2015
@@ -24,6 +24,7 @@ import javax.servlet.http.HttpServletReq
 
 import org.apache.wiki.WikiContext;
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.exceptions.WikiException;
 
 /**
  *  A specific URL constructor that returns easy-to-grok URLs for
@@ -39,7 +40,7 @@ public class ShortViewURLConstructor
      *  {@inheritDoc}
      */
     public void initialize( WikiEngine engine, 
-                            Properties properties )
+                            Properties properties ) throws WikiException
     {
         super.initialize( engine, properties );
     }

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/URLConstructor.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/URLConstructor.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/URLConstructor.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/url/URLConstructor.java
 Mon Jun 29 13:29:39 2015
@@ -18,11 +18,13 @@
  */
 package org.apache.wiki.url;
 
-import java.util.Properties;
 import java.io.IOException;
+import java.util.Properties;
+
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.wiki.WikiEngine;
+import org.apache.wiki.api.exceptions.WikiException;
 
 /**
  *  Provides an interface through which JSPWiki constructs URLs.
@@ -44,7 +46,7 @@ public interface URLConstructor
      *  @param properties Properties used to initialize
      */
     void initialize( WikiEngine engine,
-                            Properties properties );
+                            Properties properties ) throws WikiException;
 
     /**
      *  Constructs the URL with a bunch of parameters.

Modified: 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/util/ClassUtil.java
URL: 
http://svn.apache.org/viewvc/jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/util/ClassUtil.java?rev=1688207&r1=1688206&r2=1688207&view=diff
==============================================================================
--- 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/util/ClassUtil.java
 (original)
+++ 
jspwiki/branches/JSPWIKI_2_10_PICO_BRANCH/jspwiki-war/src/main/java/org/apache/wiki/util/ClassUtil.java
 Mon Jun 29 13:29:39 2015
@@ -37,31 +37,10 @@ import java.util.jar.JarFile;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
-import org.apache.wiki.PageManager;
-import org.apache.wiki.ReferenceManager;
-import org.apache.wiki.VariableManager;
 import org.apache.wiki.WikiEngine;
 import org.apache.wiki.api.engine.PluginManager;
 import org.apache.wiki.api.exceptions.WikiException;
-import org.apache.wiki.attachment.AttachmentManager;
-import org.apache.wiki.auth.AuthenticationManager;
-import org.apache.wiki.auth.AuthorizationManager;
-import org.apache.wiki.auth.UserManager;
-import org.apache.wiki.auth.acl.DefaultAclManager;
-import org.apache.wiki.auth.authorize.GroupManager;
-import org.apache.wiki.content.PageRenamer;
-import org.apache.wiki.diff.DifferenceManager;
-import org.apache.wiki.filters.DefaultFilterManager;
-import org.apache.wiki.i18n.InternationalizationManager;
 import org.apache.wiki.modules.InternalModule;
-import org.apache.wiki.plugin.DefaultPluginManager;
-import org.apache.wiki.render.RenderingManager;
-import org.apache.wiki.rss.RSSGenerator;
-import org.apache.wiki.search.SearchManager;
-import org.apache.wiki.ui.EditorManager;
-import org.apache.wiki.ui.TemplateManager;
-import org.apache.wiki.ui.admin.DefaultAdminBeanManager;
-import org.apache.wiki.workflow.WorkflowManager;
 import org.jdom2.Element;
 import org.picocontainer.DefaultPicoContainer;
 import org.picocontainer.MutablePicoContainer;
@@ -96,6 +75,7 @@ public final class ClassUtil {
     static {
        List< Element > nodes = XmlUtil.parse( MAPPINGS, 
"/classmappings/mapping" );
 
+/*
         picoContainer.addComponent(PageManager.class);
         picoContainer.addComponent(ReferenceManager.class);
         picoContainer.addComponent(VariableManager.class);
@@ -117,19 +97,24 @@ public final class ClassUtil {
         picoContainer.addComponent(InternationalizationManager.class);
         picoContainer.addComponent(PageRenamer.class);
         picoContainer.addComponent(RSSGenerator.class);
-        picoContainer.addComponent(WikiEngine.class);
+//        picoContainer.addComponent(WikiEngine.class);
 //        picoContainer.addComponent(DummyUserDatabase.class);
 //        picoContainer.addComponent(JDBCUserDatabase.class);
 //        picoContainer.addComponent(XMLUserDatabase.class);
-
+*/
         if( nodes.size() > 0 ) {
             for( Iterator< Element > i = nodes.iterator(); i.hasNext(); ) {
                 Element f = i.next();
             
                 String key = f.getChildText("requestedClass");
                 String className = f.getChildText("mappedClass");
-                
-                c_classMappings.put( key, className );
+
+                try {
+                       picoContainer.addComponent(Class.forName(className));
+                } catch (ClassNotFoundException e) {
+                       log.fatal(e,e);
+                }
+//                c_classMappings.put( key, className );
                 
                 log.debug("Mapped class '"+key+"' to class '"+className+"'");
             }
@@ -360,10 +345,17 @@ public final class ClassUtil {
     public static Object getMappedObject( String requestedClass )
         throws WikiException
     {
-        Object[] initargs = {};
-        return getMappedObject(requestedClass, initargs );
+//     WikiEngine engine = WikiEngine.getInstance(context,null);
+//     Properties props = engine.getWikiProperties();
+        return getMappedObject(requestedClass, null, null );
     }
 
+    public static <T extends InternalModule> T getInternalModule( Class<T> 
type, WikiEngine engine, Properties props ) throws WikiException {
+       InternalModule module = (InternalModule) 
getPicoContainer().getComponent(type);
+       module.initialize(engine, props);
+       return type.cast(module);
+    }
+    
     /**
      *  This method is used to locate and instantiate a mapped class.
      *  You may redefine anything in the resource file which is located in 
your classpath
@@ -383,22 +375,12 @@ public final class ClassUtil {
      *  @throws WikiException If the class cannot be found or instantiated.  
The error is logged.
      *  @since 2.5.40
      */
-    public static Object getMappedObject( String requestedClass, Object... 
initargs )
+    public static Object getMappedObject( String requestedClass, WikiEngine 
engine, Properties props )
         throws WikiException
     {
        try {
                Object o = 
ClassUtil.getPicoContainer().getComponent(Class.forName(requestedClass));
-               WikiEngine engine = null;
-               Properties props = new Properties();
-                       for (int i = 0; i < initargs.length; i++) {
-                               if (initargs[i] instanceof WikiEngine) {
-                                       engine = (WikiEngine)initargs[i];
-                               }
-                               if (initargs[i] instanceof Properties) {
-                                       props = (Properties)initargs[i];
-                               }
-                       }
-                       if (engine != null && o instanceof InternalModule) {
+                       if (engine != null && props != null && o instanceof 
InternalModule) {
                                ((InternalModule)o).initialize(engine, props);
             }
                return o;


Reply via email to