You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jspwiki.apache.org by Andrew Jaquith <an...@gmail.com> on 2010/03/03 16:02:24 UTC

Re: svn commit: r917390 - in /incubator/jspwiki/trunk: ./ src/java/org/apache/wiki/ src/java/org/apache/wiki/plugin/ src/java/org/apache/wiki/preferences/ src/java/org/apache/wiki/rpc/json/ src/java/org/apache/wiki/tags/ src/java/org/apache/wiki/ui/

Dirk, editor-specific resource needs can be accommodated through the  
layout tags. (Though we need to make some tweaks to the current layout  
structure to make it work properly.) Stay tuned.

Andrew

On Mar 2, 2010, at 13:38, Dirk Frederickx <di...@gmail.com>  
wrote:

> Another example is the editor jsp, such as plain.jsp.  It uses
> jspwiki-edit.js,  (which probably would better be named as plain.js )
>
> However, currenly, jspwiki-edit.js is injected in another jsp (a  
> layout jsp)
>
>
> When you would use the FCK editor, however, another javascript (and  
> probably
> also css) is needed.
> However, the layout jsp is not aware of every editor to add-in the  
> correct
> resources.
>
>
> dirk
>
> On Mon, Mar 1, 2010 at 7:46 PM, Janne Jalkanen <janne.jalkanen@ecyrd.com 
> >wrote:
>
>>
>> Hm?  If RequestResourceTag and IncludeResourcesTag are gone, then  
>> how do
>> plugins request resources, and how do individual templates then  
>> fall back to
>> resources they don't include?  I've got a bunch of code that  
>> assumes that
>> templates can fall back to resources (e.g. images) from default  
>> template,
>> and plugins which request CSS and other components.
>>
>> /Janne
>>
>> On 1 Mar 2010, at 07:23, ajaquith@apache.org wrote:
>>
>>> Author: ajaquith
>>> Date: Mon Mar  1 05:23:10 2010
>>> New Revision: 917390
>>>
>>> URL: http://svn.apache.org/viewvc?rev=917390&view=rev
>>> Log:
>>> Cleaned out all of the deadwood in TemplateManager. Deprecated
>> IncludeResourcesTag and RequestResourceTag. Resources can (and  
>> should) be
>> included directly in template JSPs.
>>>
>>> Modified:
>>>   incubator/jspwiki/trunk/ChangeLog
>>>   incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java
>>>   incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/Note.java
>>>
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/preferences/ 
>> Preferences.java
>>>
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/rpc/json/ 
>> JSONRPCManager.java
>>>   incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> ContentTag.java
>>>   incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> EditorTag.java
>>>
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>> IncludeResourcesTag.java
>>>   incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> IncludeTag.java
>>>
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>> RequestResourceTag.java
>>>   incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>>> EditorManager.java
>>>
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>> TemplateManager.java
>>>
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/stripes/ 
>> TemplateResolution.java
>>>
>>> Modified: incubator/jspwiki/trunk/ChangeLog
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/ChangeLog?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> --- incubator/jspwiki/trunk/ChangeLog (original)
>>> +++ incubator/jspwiki/trunk/ChangeLog Mon Mar  1 05:23:10 2010
>>> @@ -1,3 +1,30 @@
>>> +2010-02-28 Andrew Jaquith <ajaquith AT apache DOT org>
>>> +
>>> +        * 3.0.0-svn-212
>>> +
>>> +        * Exceptions caught by WikiTagBase (and subclass tags)  
>>> are now
>>> +        re-thrown so that they propagate upstream. Previously,  
>>> doCatch()
>>> +        was swallowing them, which made for "interesting" JSP  
>>> debugging.
>>> +
>>> +        * Edit.jsp, Wiki.jsp, and PageInfo.jsp changed to put the
>>> +        edit tab on the right. For editing, the live-preview  
>>> feature was
>>> +        moved to a new "Preview" tab, also on the right. The View  
>>> tab
>>> +        now simply displays the most recent save.
>>> +
>>> +        * The Error.jsp references were made consistent in all  
>>> JSPs.
>>> +        Rather than use JSTL syntax (which won't evaluate when used
>>> +        with <% page errorPage %> tag), the references now all use
>>> +        /Error.jsp, which itself jsp:includes the template JSP
>>> +        Error.jsp using JSTL. This makes the error page  
>>> customizable
>>> +        per-template, but still very easy to use.
>>> +
>>> +        * Cleaned out all of the deadwood in TemplateManager.
>>> +        Deprecated IncludeResourcesTag and RequestResourceTag.  
>>> Resources
>>> +        can (and should) be included directly in template JSPs.
>>> +
>>> +        * Small changes to Admin/AdministerProfiles action beans  
>>> as part
>>> +        of a gradual overhaul to the Admin JSPs, which are being
>> Stripesed.
>>> +
>>> 2010-02-28 Dirk Frederickx <br...@apache.org>
>>>
>>>        * v3.0.0-svn-211 : line up with latest template/stripes  
>>> changes
>>> @@ -35,7 +62,7 @@
>>>        * fixed a couple of Plugin unit tests (support for wiki  
>>> spaces is
>>>          not yet there), only the ReferringPagesPlugin still fails.
>>>
>>> -2010-02-23 Andrew Jaquith <ajaquith AT apache DOT org>
>>> +2010-02-27 Andrew Jaquith <ajaquith AT apache DOT org>
>>>
>>>        * 3.0.0-svn-209
>>>
>>>
>>> Modified: incubator/jspwiki/trunk/src/java/org/apache/wiki/ 
>>> Release.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java
>> (original)
>>> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/Release.java  
>>> Mon Mar
>> 1 05:23:10 2010
>>> @@ -77,7 +77,7 @@
>>>     *  <p>
>>>     *  If the build identifier is empty, it is not added.
>>>     */
>>> -    public static final String     BUILD         = "211";
>>> +    public static final String     BUILD         = "212";
>>>
>>>    /**
>>>     *  This is the generic version string you should use
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/Note.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/Note.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/ 
>>> Note.java
>> (original)
>>> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/plugin/ 
>>> Note.java Mon
>> Mar  1 05:23:10 2010
>>> @@ -27,6 +27,7 @@
>>> import org.apache.wiki.WikiContext;
>>> import org.apache.wiki.WikiEngine;
>>> import org.apache.wiki.api.PluginException;
>>> +import org.apache.wiki.ui.TemplateManager;
>>> import org.apache.wiki.util.TextUtil;
>>>
>>>
>>> @@ -86,9 +87,7 @@
>>>
>>>        commentImage = "images/"+commentImage;
>>>
>>> -        String resource = engine.getTemplateManager().findResource 
>>> ( ctx,
>>> -
>> engine.getTemplateDir(),
>>> -
>> commentImage );
>>> +        String resource = TemplateManager.getResourceResolver(
>> engine.getServletContext() ).get( commentImage );
>>>
>>>        return ctx.getURL( WikiContext.NONE, resource );
>>>    }
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/preferences/ 
>> Preferences.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/preferences/Preferences.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> ---
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/preferences/ 
>> Preferences.java
>> (original)
>>> +++
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/preferences/ 
>> Preferences.java
>> Mon Mar  1 05:23:10 2010
>>> @@ -310,7 +310,7 @@
>>>        }
>>>        else if( "availableSkins".equals( key ) )
>>>        {
>>> -            return m_engine.getTemplateManager().listSkins(
>> m_engine.getServletContext(), m_engine.getTemplateDir() );
>>> +            return m_engine.getTemplateManager().listSkins();
>>>        }
>>>        else if( "availableTimeFormats".equals( key ) )
>>>        {
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/rpc/json/ 
>> JSONRPCManager.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/rpc/json/JSONRPCManager.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> ---
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/rpc/json/ 
>> JSONRPCManager.java
>> (original)
>>> +++
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/rpc/json/ 
>> JSONRPCManager.java
>> Mon Mar  1 05:23:10 2010
>>> @@ -38,7 +38,6 @@
>>> import org.apache.wiki.log.LoggerFactory;
>>> import org.apache.wiki.rpc.RPCCallable;
>>> import org.apache.wiki.rpc.RPCManager;
>>> -import org.apache.wiki.ui.TemplateManager;
>>> import org.jabsorb.callback.InvocationCallback;
>>> import org.jabsorb.JSONRPCBridge;
>>>
>>> @@ -149,15 +148,6 @@
>>>     */
>>>    public static void requestJSON( WikiContext context )
>>>    {
>>> -        TemplateManager.addResourceRequest(context,
>>> -
>> TemplateManager.RESOURCE_SCRIPT,
>>> -
>> context.getURL(WikiContext.NONE,"scripts/json-rpc/jsonrpc.js"));
>>> -
>>> -        String jsonurl = context.getURL( WikiContext.NONE, "JSON- 
>>> RPC" );
>>> -        TemplateManager.addResourceRequest(context,
>>> -
>> TemplateManager.RESOURCE_JSFUNCTION,
>>> -                                           "jsonrpc = new
>> JSONRpcClient(\""+jsonurl+"\");");
>>> -
>>>        getBridge(context).registerCallback(new WikiJSONAccessor(),
>> HttpServletRequest.class);
>>>    }
>>>
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ContentTag.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ContentTag.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> ContentTag.java
>> (original)
>>> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> ContentTag.java
>> Mon Mar  1 05:23:10 2010
>>> @@ -28,6 +28,7 @@
>>>
>>> import org.apache.wiki.*;
>>> import org.apache.wiki.providers.ProviderException;
>>> +import org.apache.wiki.ui.TemplateManager;
>>>
>>>
>>> /**
>>> @@ -181,9 +182,7 @@
>>>                contentTemplate = beanName + "Content.jsp";
>>>            }
>>>
>>> -            String page =
>> m_wikiContext.getEngine().getTemplateManager().findJSP( pageContext,
>>> -
>>         m_wikiContext.getTemplate(),
>>> -
>>         contentTemplate );
>>> +            String page = TemplateManager.getResourceResolver(
>> pageContext.getServletContext() ).get( contentTemplate );
>>>            pageContext.include( page );
>>>        }
>>>        catch( ServletException e )
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/EditorTag.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/EditorTag.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> EditorTag.java
>> (original)
>>> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> EditorTag.java
>> Mon Mar  1 05:23:10 2010
>>> @@ -27,6 +27,7 @@
>>>
>>> import org.apache.wiki.WikiEngine;
>>> import org.apache.wiki.ui.EditorManager;
>>> +import org.apache.wiki.ui.TemplateManager;
>>>
>>>
>>> /**
>>> @@ -58,10 +59,7 @@
>>>
>>>        try
>>>        {
>>> -            String page = engine.getTemplateManager().findJSP(
>> pageContext,
>>> -
>> m_wikiContext.getTemplate(),
>>> -
>> editorPath );
>>> -
>>> +            String page = TemplateManager.getResourceResolver(
>> pageContext.getServletContext() ).get( editorPath );
>>>            if( page == null )
>>>            {
>>>                //FIXME: should be I18N ...
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>> IncludeResourcesTag.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/IncludeResourcesTag.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> ---
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>> IncludeResourcesTag.java
>> (original)
>>> +++
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>> IncludeResourcesTag.java
>> Mon Mar  1 05:23:10 2010
>>> @@ -20,41 +20,34 @@
>>> */
>>> package org.apache.wiki.tags;
>>>
>>> -import org.apache.wiki.ui.TemplateManager;
>>>
>>> /**
>>> - *  This tag is used to include any programmatic includes into the
>>> - *  output stream.  Actually, what it does is that it simply  
>>> emits a
>>> - *  tiny marker into the stream, and then a ServletFilter will take
>>> - *  care of the actual inclusion.
>>> - *
>>> -*  @deprecated use the Stripes <code>layout-component</code> tags
>> instead
>>> + *  <p>This tag is used to include any programmatic includes into  
>>> the
>>> + *  output stream. In JSPWiki 2.8 and earlier, this tag emitted a
>>> + *  tiny marker into the stream which was replaced by  
>>> ServletFilter.
>>> + *  <em>This tag has been deprecated because it is unsafe.</em> The
>>> + *  Stripes layout tags should be used instead. See the default
>>> + *  template {@code layout/DefaultLayout.jsp} for instructions on  
>>> how
>>> + *  to include scripts and other resources in JSPs.</p>
>>> + *  @deprecated use the Stripes <code>layout-component</code> tags
>> instead
>>> */
>>> public class IncludeResourcesTag extends WikiTagBase
>>> {
>>>    private static final long serialVersionUID = 0L;
>>>
>>> -    private String m_type;
>>> -
>>>    public void initTag()
>>>    {
>>>        super.initTag();
>>> -        m_type = null;
>>>    }
>>>
>>>    public void setType( String type )
>>>    {
>>> -        m_type = type;
>>>    }
>>>
>>>    public int doWikiStartTag() throws Exception
>>>    {
>>> -        //String marker =
>> m_wikiContext.getEngine().getTemplateManager().getMarker 
>> (m_wikiContext,
>> m_type);
>>> -        //String marker = TemplateManager.getMarker(pageContext,
>> m_type);
>>> -        String marker = TemplateManager.getMarker(m_wikiContext,
>> m_type);
>>> -
>>> -        pageContext.getOut().println( marker );
>>> -
>>> +        pageContext.getOut().println( "<!-- Please use the Stripes
>> layout tags instead " +
>>> +                     "of IncludeResourcesTag. See
>> layout/DefaultLayout.jsp for instructions. -->" );
>>>        return SKIP_BODY;
>>>    }
>>>
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/IncludeTag.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/IncludeTag.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> --- incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> IncludeTag.java
>> (original)
>>> +++ incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>>> IncludeTag.java
>> Mon Mar  1 05:23:10 2010
>>> @@ -25,6 +25,7 @@
>>> import javax.servlet.ServletException;
>>>
>>> import org.apache.wiki.providers.ProviderException;
>>> +import org.apache.wiki.ui.TemplateManager;
>>> import org.apache.wiki.util.TextUtil;
>>>
>>>
>>> @@ -72,10 +73,7 @@
>>>    {
>>>        try
>>>        {
>>> -            String page =
>> m_wikiContext.getEngine().getTemplateManager().findJSP( pageContext,
>>> -
>>         m_wikiContext.getTemplate(),
>>> -
>>         m_page );
>>> -
>>> +            String page = TemplateManager.getResourceResolver(
>> pageContext.getServletContext() ).get( m_page );
>>>            if( page == null )
>>>            {
>>>                pageContext.getOut().println("No template file called
>> '"+TextUtil.replaceEntities(m_page)+"'");
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>> RequestResourceTag.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/RequestResourceTag.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> ---
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>> RequestResourceTag.java
>> (original)
>>> +++
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/tags/ 
>> RequestResourceTag.java
>> Mon Mar  1 05:23:10 2010
>>> @@ -20,21 +20,17 @@
>>> */
>>> package org.apache.wiki.tags;
>>>
>>> -import org.apache.wiki.ui.TemplateManager;
>>> -
>>> /**
>>> - *  Provides easy access to TemplateManager.addResourceRequest 
>>> ().  You
>> may use
>>> - *  any of the request types defined there.
>>> - *
>>> - *  @see TemplateManager
>>> + *  <p>In JSPWiki 2.8, this tag provided a way to instruct  
>>> JSPWiki to
>> insert
>>> + *  resource requests into JSPs. <em>This tag has been deprecated
>> because it
>>> + *  is unsafe.</em> The Stripes layout tags should be used  
>>> instead. See
>> the default
>>> + *  template {@code layout/DefaultLayout.jsp} for instructions on  
>>> how
>>> + *  to include scripts and other resources in JSPs.</p>
>>> *  @deprecated use the Stripes <code>layout-component</code> tags
>> instead
>>> */
>>> public class RequestResourceTag extends WikiTagBase
>>> {
>>>    private static final long serialVersionUID = 0L;
>>> -
>>> -    private String m_type;
>>> -    private String m_resource;
>>>
>>>    /**
>>>     *  {@inheritDoc}
>>> @@ -43,7 +39,6 @@
>>>    public void initTag()
>>>    {
>>>        super.initTag();
>>> -        m_type = m_resource = null;
>>>    }
>>>
>>>    /**
>>> @@ -52,57 +47,47 @@
>>>    @Override
>>>    public int doWikiStartTag() throws Exception
>>>    {
>>> -        if( m_type != null && m_resource != null )
>>> -        {
>>> -            TemplateManager.addResourceRequest( m_wikiContext,  
>>> m_type,
>> m_resource );
>>> -        }
>>> -
>>>        return SKIP_BODY;
>>>    }
>>>
>>>    /**
>>> -     *  Returns the resource that is to be added.
>>> +     *  Always returns the empty string.
>>>     *
>>>     *  @return The resource name.
>>>     */
>>>    public String getResource()
>>>    {
>>> -        return m_resource;
>>> +        return "";
>>>    }
>>>
>>>    /**
>>> -     *  Sets the resource name to be added.
>>> +     *  This method does nothing.
>>>     *
>>>     *  @param r Resource identifier.
>>>     */
>>>    public void setResource(String r)
>>>    {
>>> -        m_resource = r;
>>> +        // No-op.
>>>    }
>>>
>>>    /**
>>> -     *  Get the resource type.
>>> +     *  Always returns the empty string.
>>>     *
>>>     *  @return The type of the resource.
>>>     */
>>>    public String getType()
>>>    {
>>> -        return m_type;
>>> +        return "";
>>>    }
>>>
>>>    /**
>>> -     *  Set the type of the resource to be included.  For example,
>> "script".  Please
>>> -     *  see the TemplateManager class for more information about  
>>> the
>> different kinds
>>> -     *  of types you can use.
>>> -     *
>>> -     *  @see TemplateManager
>>> +     *  This method does nothing.
>>>     *
>>>     *  @param type The type to be set.
>>>     */
>>>
>>>    public void setType(String type)
>>>    {
>>> -        m_type = type;
>>>    }
>>>
>>> }
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>> EditorManager.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/EditorManager.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> ---
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>> EditorManager.java
>> (original)
>>> +++
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>> EditorManager.java Mon
>> Mar  1 05:23:10 2010
>>> @@ -73,9 +73,6 @@
>>>    /** Known name for the plain wikimarkup editor. */
>>>    public static final String       EDITOR_PLAIN    = "plain";
>>>
>>> -    /** Known name for the preview editor component. */
>>> -    public static final String       EDITOR_PREVIEW  = "preview";
>>> -
>>>    /** Known attribute name for storing the user edited text  
>>> inside a
>> HTTP parameter. */
>>>    public static final String       REQ_EDITEDTEXT  = "_editedtext";
>>>
>>> @@ -189,9 +186,6 @@
>>>     */
>>>    public String getEditorName( WikiContext context )
>>>    {
>>> -        if( context.getRequestContext().equals 
>>> (WikiContext.PREVIEW) )
>>> -            return EDITOR_PREVIEW;
>>> -
>>>        String editor = null;
>>>
>>>        // User has set an editor in preferences
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>> TemplateManager.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/TemplateManager.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> ---
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>> TemplateManager.java
>> (original)
>>> +++
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/ 
>> TemplateManager.java Mon
>> Mar  1 05:23:10 2010
>>> @@ -20,8 +20,6 @@
>>> */
>>> package org.apache.wiki.ui;
>>>
>>> -import java.io.IOException;
>>> -import java.io.InputStream;
>>> import java.util.*;
>>>
>>> import javax.servlet.ServletContext;
>>> @@ -46,7 +44,7 @@
>>> */
>>> public class TemplateManager extends ModuleManager
>>> {
>>> -    private static final String SKIN_DIRECTORY = "skins";
>>> +    private static final String SKIN_DIR = "skins";
>>>
>>>    /**
>>>     * Attribute name for the resource resolver map returned by
>>> @@ -55,61 +53,14 @@
>>>     */
>>>    private static final String RESOURCE_RESOLVER =  
>>> "resourceResolver";
>>>
>>> -    /**
>>> -     * Requests a JavaScript function to be called during  
>>> window.onload.
>> Value
>>> -     * is {@value}.
>>> -     */
>>> -    public static final String RESOURCE_JSFUNCTION = "jsfunction";
>>> -
>>> -    /**
>>> -     * Requests a JavaScript associative array with all localized
>> strings.
>>> -     */
>>> -    public static final String RESOURCE_JSLOCALIZEDSTRINGS =
>> "jslocalizedstrings";
>>> -
>>> -    /**
>>> -     * Requests a stylesheet to be inserted. Value is {@value}.
>>> -     */
>>> -    public static final String RESOURCE_STYLESHEET = "stylesheet";
>>> -
>>> -    /**
>>> -     * Requests a script to be loaded. Value is {@value}.
>>> -     */
>>> -    public static final String RESOURCE_SCRIPT = "script";
>>> -
>>> -    /**
>>> -     * Requests inlined CSS. Value is {@value}.
>>> -     */
>>> -    public static final String RESOURCE_INLINECSS = "inlinecss";
>>> -
>>>    /** The default directory for template resources. Value is  
>>> {@value}.
>> */
>>> -    public static final String DIRECTORY = "templates";
>>> +    public static final String TEMPLATE_DIR = "templates";
>>>
>>>    /** The name of the default template. Value is {@value}. */
>>>    public static final String DEFAULT_TEMPLATE = "default";
>>>
>>> -    /** Name of the file that contains the properties. */
>>> -    public static final String PROPERTYFILE =  
>>> "template.properties";
>>> -
>>> -    /** I18N string to mark the default locale */
>>> -    public static final String I18NDEFAULT_LOCALE =
>> "prefs.user.language.default";
>>> -
>>> -    /**
>>> -     * The name under which the resource includes map is stored  
>>> in the
>>> -     * WikiContext.
>>> -     */
>>> -    public static final String RESOURCE_INCLUDES =
>> "jspwiki.resourceincludes";
>>> -
>>> -    // private Cache m_propertyCache;
>>> -
>>>    protected static final Logger log = LoggerFactory.getLogger(
>> TemplateManager.class );
>>>
>>> -    /** Requests a HTTP header. Value is {@value}. */
>>> -    public static final String RESOURCE_HTTPHEADER = "httpheader";
>>> -
>>> -    private WikiEngine m_engine;
>>> -
>>> -    private static final List<WikiModuleInfo> EMPTY_MODULE_LIST =
>> Collections.emptyList();
>>> -
>>>    /**
>>>     * <p>Resolves requests for resources relative to the
>>>     * <code>templates/<var>template</var></code> path to the actual
>> resources,
>>> @@ -125,8 +76,8 @@
>>>     * for certain keys to return <code>null</code>. The map itself  
>>> is
>>>     * immutable.
>>>     * </p>
>>> -     * <p>The resource resolver is guaranteed to initialize if the
>> ServletContext
>>> -     * is active, even if the WikiEngine cannot initialize for some
>> reason.
>>> +     * <p>The resource resolver is guaranteed to initialize,
>>> +     * even if the WikiEngine cannot initialize for some reason.
>>>     * If the WikiEngine does not initialize, the default template
>>>     * {@link #DEFAULT_TEMPLATE} will be used for all resource
>> requests.</p>
>>>     * @param servletContext the servlet context
>>> @@ -156,10 +107,10 @@
>>>
>>>            // Add all of the resources the template contains
>>>            resolver = new HashMap<String,String>();
>>> -            addResources( context, resolver, "/" + DIRECTORY +  
>>> "/" +
>> template + "/", null );
>>> +            addResources( context, resolver, "/" + TEMPLATE_DIR +  
>>> "/" +
>> template + "/", null );
>>>
>>>            // Add resources the template does not contain, but  
>>> default
>> does
>>> -            addResources( context, resolver, "/" + DIRECTORY +  
>>> "/" +
>> DEFAULT_TEMPLATE + "/", null );
>>> +            addResources( context, resolver, "/" + TEMPLATE_DIR +  
>>> "/" +
>> DEFAULT_TEMPLATE + "/", null );
>>>            resolver = Collections.unmodifiableMap( resolver );
>>>            context.setAttribute( RESOURCE_RESOLVER, resolver );
>>>        }
>>> @@ -167,18 +118,49 @@
>>>    }
>>>
>>>    /**
>>> -     * Creates a new TemplateManager. There is typically one  
>>> manager per
>> engine.
>>> -     *
>>> -     * @param engine The owning engine.
>>> -     * @param properties The property list used to initialize this.
>>> +     * Adds all of the resources under a specified path prefix to  
>>> the
>>> +     * resource resolver map, with the "short name" of the path  
>>> as the
>>> +     * key, and the full path as the value. The short name is the
>> portion
>>> +     * of the path after the prefix. If a resource with that  
>>> short name
>>> +     * has already been added to the resource map, it will not be  
>>> added
>>> +     * again. Any resources ending in {@code /} (i.e., a  
>>> directory path)
>>> +     * will be processed recursively.
>>> +     * @param context the servlet context
>>> +     * @param resolver the resource resolver map
>>> +     * @param prefix the path prefix that the search initiates from
>>> +     * @param dir the directory to search relative to the path  
>>> prefix.
>> If not
>>> +     * supplied, the path prefix directory itself will be searched
>>>     */
>>> -    public TemplateManager( WikiEngine engine, Properties  
>>> properties )
>>> +    @SuppressWarnings("unchecked")
>>> +    private static void addResources( ServletContext context,
>> Map<String,String> resolver, String prefix, String dir )
>>>    {
>>> -        super( engine );
>>> -        m_engine = engine;
>>> -        getResourceResolver( engine.getServletContext() );
>>> -    }
>>> +        String searchPath = dir == null ? prefix : prefix + dir;
>>> +        Set<String> resources = context.getResourcePaths 
>>> ( searchPath );
>>> +        if ( resources != null )
>>> +        {
>>> +            for ( String resource : resources )
>>> +            {
>>> +                String shortName = resource.substring 
>>> ( prefix.length()
>> );
>>> +
>>> +                // Directory: process these entries too
>>> +                if ( shortName.endsWith( "/" ) )
>>> +                {
>>> +                    addResources( context, resolver, prefix,  
>>> shortName
>> );
>>> +                }
>>>
>>> +                // Regular resource: add it if we don't have it  
>>> already
>>> +                else
>>> +                {
>>> +                    boolean alreadyProcessed =  
>>> resolver.containsKey(
>> shortName );
>>> +                    if ( !alreadyProcessed )
>>> +                    {
>>> +                        resolver.put( shortName, resource );
>>> +                    }
>>> +                }
>>> +            }
>>> +        }
>>> +    }
>>> +
>>>    /**
>>>     * Tries to locate a given resource from the template directory,
>> relative to
>>>     * the root of the JSPWiki webapp context (for example,  
>>> relative to
>>> @@ -188,63 +170,62 @@
>>>     * default template path either, <code>null</code> is returned.
>>>     *
>>>     *
>>> -     * @param sContext the servlet context
>>> +     * @param servletContext the servlet context
>>>     * @param path the path to the resource; for example,
>>> -     * <code>/templates/custom/FindContent.jsp</code>
>>> +     * {@code /templates/custom/FindContent.jsp} or {@code  
>>> jspwiki.css}.
>>> +     * If the path starts with a slash (/), the resource is  
>>> looked up
>>> +     * relative to the webapp root
>>>     * @return The name of the resource which was found; for example,
>>>     * <code>/templates/custom/FindContent.jsp</code> (if it exists  
>>> in
>> the
>>>     * <code>custom</code> template directory), or
>>>     * <code>/templates/default/FindContent.jsp</code> (if not)
>>>     */
>>> -    private static String findResource( ServletContext sContext,  
>>> String
>> path )
>>> +    private static String findResource( ServletContext  
>>> servletContext,
>> String path )
>>>    {
>>> -        InputStream is = sContext.getResourceAsStream( path );
>>> -
>>> -        if( is == null )
>>> +        if( path.charAt( 0 ) == '/' )
>>>        {
>>> -            String defaultPath = makeFullJSPName( DEFAULT_TEMPLATE,
>> removeTemplatePart( path ) );
>>> -            is = sContext.getResourceAsStream( defaultPath );
>>> -
>>> -            if( is != null )
>>> -                path = defaultPath;
>>> -            else
>>> -                path = null;
>>> -        }
>>> -
>>> -        if( is != null )
>>> -        {
>>> -            try
>>> -            {
>>> -                is.close();
>>> -            }
>>> -            catch( IOException e )
>>> -            {
>>> -            }
>>> +            // This is already a full path
>>> +            return findResource( servletContext, path );
>>>        }
>>> -
>>> -        return path;
>>> +        return getResourceResolver( servletContext ).get( path );
>>>    }
>>>
>>>    /**
>>> -     * Attempts to find a resource from the given template, and  
>>> if it's
>> not
>>> -     * found attempts to locate it from the default template.
>>> -     *
>>> -     * @param sContext
>>> -     * @param template
>>> -     * @param name
>>> -     * @return
>>> +     * Returns a property, as defined in the template. The  
>>> evaluation is
>> lazy,
>>> +     * i.e. the properties are not loaded until the template is  
>>> actually
>> used
>>> +     * for the first time.
>>> +     */
>>> +    /*
>>> +     * public String getTemplateProperty( WikiContext context,  
>>> String
>> key ) {
>>> +     * String template = context.getTemplate(); try { Properties  
>>> props =
>>> +     * (Properties)m_propertyCache.getFromCache( template, -1 );  
>>> if(
>> props ==
>>> +     * null ) { try { props = getTemplateProperties( template );
>>> +     * m_propertyCache.putInCache( template, props ); } catch(
>> IOException e ) {
>>> +     * log.warn("IO Exception while reading template  
>>> properties",e);
>> return
>>> +     * null; } } return props.getProperty( key ); } catch(
>> NeedsRefreshException
>>> +     * ex ) { // FIXME return null; } }
>>>     */
>>> -    private static String findResource( ServletContext sContext,  
>>> String
>> template, String name )
>>> +    /**
>>> +     * Returns an absolute path to a given template.
>>> +     */
>>> +    private static final String getPath( String template )
>>>    {
>>> -        if( name.charAt( 0 ) == '/' )
>>> -        {
>>> -            // This is already a full path
>>> -            return findResource( sContext, name );
>>> -        }
>>> +        return "/" + TEMPLATE_DIR + "/" + template + "/";
>>> +    }
>>>
>>> -        String fullname = makeFullJSPName( template, name );
>>> +    private WikiEngine m_engine;
>>>
>>> -        return findResource( sContext, fullname );
>>> +    /**
>>> +     * Creates a new TemplateManager. There is typically one  
>>> manager per
>> engine.
>>> +     *
>>> +     * @param engine The owning engine.
>>> +     * @param properties The property list used to initialize this.
>>> +     */
>>> +    public TemplateManager( WikiEngine engine, Properties  
>>> properties )
>>> +    {
>>> +        super( engine );
>>> +        m_engine = engine;
>>> +        getResourceResolver( engine.getServletContext() );
>>>    }
>>>
>>>    /**
>>> @@ -252,53 +233,17 @@
>>>     * current context or by the absolute name.
>>>     *
>>>     * @param pageContext the JSP PageContext
>>> -     * @param name The name of the JSP page to look for (e.g  
>>> "Wiki.jsp")
>>> +     * @param name The name of the JSP page to look for (e.g {@code
>> Wiki.jsp})
>>>     * @return The context path to the resource
>>> +     * @deprecated use {@link #getResourceResolver(ServletContext)}
>> instead
>>>     */
>>>    public String findJSP( PageContext pageContext, String name )
>>>    {
>>>        ServletContext sContext = pageContext.getServletContext();
>>> -
>>>        return findResource( sContext, name );
>>>    }
>>>
>>>    /**
>>> -     * Removes the template part of a name.
>>> -     */
>>> -    private static final String removeTemplatePart( String name )
>>> -    {
>>> -        int idx = 0;
>>> -        if( name.startsWith( "/" ) )
>>> -            idx = 1;
>>> -
>>> -        idx = name.indexOf( '/', idx );
>>> -        if( idx != -1 )
>>> -        {
>>> -            idx = name.indexOf( '/', idx + 1 ); // Find second "/"
>>> -
>>> -            if( idx != -1 )
>>> -            {
>>> -                name = name.substring( idx + 1 );
>>> -            }
>>> -        }
>>> -
>>> -        log.info( "Final name = " + name );
>>> -        return name;
>>> -    }
>>> -
>>> -    /**
>>> -     * Returns the full name (/templates/foo/bar) for name=bar,
>> template=foo.
>>> -     *
>>> -     * @param template The name of the template.
>>> -     * @param name The name of the resource.
>>> -     * @return The full name for a template.
>>> -     */
>>> -    private static final String makeFullJSPName( String template,  
>>> String
>> name )
>>> -    {
>>> -        return "/" + DIRECTORY + "/" + template + "/" + name;
>>> -    }
>>> -
>>> -    /**
>>>     * Attempts to locate a resource under the given template. If  
>>> that
>> template
>>>     * does not exist, or the page does not exist under that  
>>> template,
>> will
>>>     * attempt to locate a similarly named file under the default
>> template.
>>> @@ -310,6 +255,7 @@
>>>     * @param template From which template we should seek initially?
>>>     * @param name Which resource are we looking for (e.g.
>> "DefaultLayout.jsp")
>>>     * @return path to the JSP page; null, if it was not found.
>>> +     * @deprecated use {@link #getResourceResolver(ServletContext)}
>> instead
>>>     */
>>>    public String findJSP( PageContext pageContext, String template,
>> String name )
>>>    {
>>> @@ -319,8 +265,7 @@
>>>                       + ((HttpServletRequest)
>> pageContext.getRequest()).getRequestURI() + "'" );
>>>            throw new InternalWikiException( "Illegal arguments to
>> findJSP(); please check logs." );
>>>        }
>>> -
>>> -        return findResource( pageContext.getServletContext(),  
>>> template,
>> name );
>>> +        return findResource( pageContext.getServletContext(),  
>>> name );
>>>    }
>>>
>>>    /**
>>> @@ -337,45 +282,23 @@
>>>     * @param template the name of the template to use
>>>     * @param name the name of the resource to fine
>>>     * @return the path to the resource
>>> +     * @deprecated use {@link #getResourceResolver(ServletContext)}
>> instead
>>>     */
>>>    public String findResource( WikiContext ctx, String template,  
>>> String
>> name )
>>>    {
>>>        if( m_engine.getServletContext() != null )
>>>        {
>>> -            return findResource( m_engine.getServletContext(),  
>>> template,
>> name );
>>> +            return findResource( m_engine.getServletContext(),  
>>> name );
>>>        }
>>>
>>>        return getPath( template ) + "/" + name;
>>>    }
>>>
>>>    /**
>>> -     * Returns a property, as defined in the template. The  
>>> evaluation is
>> lazy,
>>> -     * i.e. the properties are not loaded until the template is  
>>> actually
>> used
>>> -     * for the first time.
>>> -     */
>>> -    /*
>>> -     * public String getTemplateProperty( WikiContext context,  
>>> String
>> key ) {
>>> -     * String template = context.getTemplate(); try { Properties  
>>> props =
>>> -     * (Properties)m_propertyCache.getFromCache( template, -1 );  
>>> if(
>> props ==
>>> -     * null ) { try { props = getTemplateProperties( template );
>>> -     * m_propertyCache.putInCache( template, props ); } catch(
>> IOException e ) {
>>> -     * log.warn("IO Exception while reading template  
>>> properties",e);
>> return
>>> -     * null; } } return props.getProperty( key ); } catch(
>> NeedsRefreshException
>>> -     * ex ) { // FIXME return null; } }
>>> -     */
>>> -    /**
>>> -     * Returns an absolute path to a given template.
>>> -     */
>>> -    private static final String getPath( String template )
>>> -    {
>>> -        return "/" + DIRECTORY + "/" + template + "/";
>>> -    }
>>> -
>>> -    /**
>>> -     * Lists the skins available under this template. Returns an  
>>> empty
>> Set, if
>>> -     * there are no extra skins available. Note that this method  
>>> does
>> not check
>>> -     * whether there is anything actually in the directories, it  
>>> just
>> lists
>>> -     * them. This may change in the future.
>>> +     * Lists the skins available under the current template.
>>> +     * Returns an empty Set, if there are no extra skins available.
>>> +     * Note that this method does not check whether there is  
>>> anything
>>> +     * actually in the directories, it just lists them.
>>>     *
>>>     * @param servletContext the servlet context
>>>     * @param template The template to search
>>> @@ -383,14 +306,14 @@
>>>     * @since 2.3.26
>>>     */
>>>    @SuppressWarnings( "unchecked" )
>>> -    public Set<String> listSkins( ServletContext servletContext,  
>>> String
>> template )
>>> +    public Set<String> listSkins()
>>>    {
>>> -        String place = makeFullJSPName( template, SKIN_DIRECTORY );
>>> -        Set<String> skinSet = servletContext.getResourcePaths 
>>> ( place );
>>> +        String skinPath = TEMPLATE_DIR + "/" + SKIN_DIR;
>>> +        Set<String> skinSet =
>> m_engine.getServletContext().getResourcePaths( skinPath );
>>>        TreeSet<String> resultSet = new TreeSet<String>();
>>>
>>>        if( log.isDebugEnabled() )
>>> -            log.debug( "Listings skins from " + place );
>>> +            log.debug( "Listings skins from " + skinPath );
>>>
>>>        if( skinSet != null )
>>>        {
>>> @@ -414,215 +337,7 @@
>>>
>>>        return resultSet;
>>>    }
>>> -
>>> -    /**
>>> -     * Always returns a valid property map.
>>> -     */
>>> -    /*
>>> -     * private Properties getTemplateProperties( String  
>>> templateName )
>> throws
>>> -     * IOException { Properties p = new Properties();  
>>> ServletContext
>> context =
>>> -     * m_engine.getServletContext(); InputStream propertyStream =
>>> -     * context.getResourceAsStream(getPath(templateName) 
>>> +PROPERTYFILE);
>> if(
>>> -     * propertyStream != null ) { p.load( propertyStream );
>>> -     * propertyStream.close(); } else { log.debug("Template
>> '"+templateName+"'
>>> -     * does not have a propertyfile '"+PROPERTYFILE+"'."); }  
>>> return p; }
>>> -     */
>>> -    /**
>>> -     * Returns the include resources marker for a given type.  
>>> This is in
>> a HTML
>>> -     * or Javascript comment format.
>>> -     *
>>> -     * @param context the wiki context
>>> -     * @param type the marker
>>> -     * @return the generated marker comment
>>> -     * @deprecated use the Stripes <code>layout-component</code>  
>>> tags
>> instead
>>> -     */
>>> -    public static String getMarker( WikiContext context, String  
>>> type )
>>> -    {
>>> -        if( type.equals( RESOURCE_JSLOCALIZEDSTRINGS ) )
>>> -        {
>>> -            return getJSLocalizedStrings( context );
>>> -        }
>>> -        else if( type.equals( RESOURCE_JSFUNCTION ) )
>>> -        {
>>> -            return "/* INCLUDERESOURCES (" + type + ") */";
>>> -        }
>>> -        return "<!-- INCLUDERESOURCES (" + type + ") -->";
>>> -    }
>>> -
>>> -    /**
>>> -     * Extract all i18n strings in the javascript domain.  
>>> (javascript.*)
>> Returns
>>> -     * a javascript snippet which defines the LoacalizedStings  
>>> array.
>>> -     *
>>> -     * @param wiki context
>>> -     * @return Javascript snippet which defines the LocaliedStrings
>> array
>>> -     * @since 2.5.108
>>> -     * @deprecated use the Stripes <code>layout-component</code>  
>>> tags
>> instead
>>> -     */
>>> -    private static String getJSLocalizedStrings( WikiContext  
>>> context )
>>> -    {
>>> -        StringBuilder sb = new StringBuilder();
>>> -
>>> -        sb.append( "var LocalizedStrings = {\n" );
>>> -
>>> -        ResourceBundle rb = context.getBundle 
>>> ( "templates.default" );
>>> -
>>> -        boolean first = true;
>>> -
>>> -        for( Enumeration<String> en = rb.getKeys();
>> en.hasMoreElements(); )
>>> -        {
>>> -            String key = en.nextElement();
>>> -
>>> -            if( key.startsWith( "javascript" ) )
>>> -            {
>>> -                if( first )
>>> -                {
>>> -                    first = false;
>>> -                }
>>> -                else
>>> -                {
>>> -                    sb.append( ",\n" );
>>> -                }
>>> -                sb.append( "\"" + key + "\":\"" + rb.getString 
>>> ( key ) +
>> "\"" );
>>> -            }
>>> -        }
>>> -        sb.append( "\n};\n" );
>>> -
>>> -        return(sb.toString());
>>> -    }
>>> -
>>> -    /**
>>> -     * Adds a resource request to the current request context. The
>> content will
>>> -     * be added at the resource-type marker (see  
>>> IncludeResourcesTag) in
>>> -     * WikiJSPFilter.
>>> -     * <p>
>>> -     * The resources can be of different types. For  
>>> RESOURCE_SCRIPT and
>>> -     * RESOURCE_STYLESHEET this is an URI path to the resource (a  
>>> script
>> file or
>>> -     * an external stylesheet) that needs to be included. For
>> RESOURCE_INLINECSS
>>> -     * the resource should be something that can be added between
>>> -     * &lt;style>&lt;/style> in the header file  
>>> (commonheader.jsp). For
>>> -     * RESOURCE_JSFUNCTION it is the name of the Javascript  
>>> function
>> that should
>>> -     * be run at page load.
>>> -     * <p>
>>> -     * The IncludeResourceTag inserts code in the template files,  
>>> which
>> is then
>>> -     * filled by the WikiFilter after the request has been  
>>> rendered but
>> not yet
>>> -     * sent to the recipient.
>>> -     * <p>
>>> -     * Note that ALL resource requests get rendered, so this  
>>> method does
>> not
>>> -     * check if the request already exists in the resources.  
>>> Therefore,
>> if you
>>> -     * have a plugin which makes a new resource request every time,
>> you'll end
>>> -     * up with multiple resource requests rendered. It's thus a  
>>> good
>> idea to
>>> -     * make this request only once during the page life cycle.
>>> -     *
>>> -     * @param ctx The current wiki context
>>> -     * @param type What kind of a request should be added?
>>> -     * @param resource The resource to add.
>>> -     * @deprecated use the Stripes <code>layout-component</code>  
>>> tags
>> instead
>>> -     */
>>> -    @SuppressWarnings( "unchecked" )
>>> -    public static void addResourceRequest( WikiContext ctx,  
>>> String type,
>> String resource )
>>> -    {
>>> -        HashMap<String, Vector<String>> resourcemap =  
>>> (HashMap<String,
>> Vector<String>>) ctx.getVariable( RESOURCE_INCLUDES );
>>> -
>>> -        if( resourcemap == null )
>>> -        {
>>> -            resourcemap = new HashMap<String, Vector<String>>();
>>> -        }
>>> -
>>> -        Vector<String> resources = resourcemap.get( type );
>>> -
>>> -        if( resources == null )
>>> -        {
>>> -            resources = new Vector<String>();
>>> -        }
>>> -
>>> -        String resourceString = null;
>>> -
>>> -        if( type.equals( RESOURCE_SCRIPT ) )
>>> -        {
>>> -            resourceString = "<script type='text/javascript'  
>>> src='" +
>> resource + "'></script>";
>>> -        }
>>> -        else if( type.equals( RESOURCE_STYLESHEET ) )
>>> -        {
>>> -            resourceString = "<link rel='stylesheet' type='text/ 
>>> css'
>> href='" + resource + "' />";
>>> -        }
>>> -        else if( type.equals( RESOURCE_INLINECSS ) )
>>> -        {
>>> -            resourceString = "<style type='text/css'>\n" +  
>>> resource +
>> "\n</style>\n";
>>> -        }
>>> -        else if( type.equals( RESOURCE_JSFUNCTION ) )
>>> -        {
>>> -            resourceString = resource;
>>> -        }
>>> -        else if( type.equals( RESOURCE_HTTPHEADER ) )
>>> -        {
>>> -            resourceString = resource;
>>> -        }
>>> -
>>> -        if( resourceString != null )
>>> -        {
>>> -            resources.add( resourceString );
>>> -        }
>>> -
>>> -        log.debug( "Request to add a resource: " +  
>>> resourceString );
>>> -
>>> -        resourcemap.put( type, resources );
>>> -        ctx.setVariable( RESOURCE_INCLUDES, resourcemap );
>>> -    }
>>> -
>>> -    /**
>>> -     * Returns resource requests for a particular type. If there  
>>> are no
>>> -     * resources, returns an empty array.
>>> -     *
>>> -     * @param ctx WikiContext
>>> -     * @param type The resource request type
>>> -     * @return a String array for the resource requests
>>> -     * @deprecated use the Stripes <code>layout-component</code>  
>>> tags
>> instead
>>> -     */
>>> -    @SuppressWarnings( "unchecked" )
>>> -    public static String[] getResourceRequests( WikiContext ctx,  
>>> String
>> type )
>>> -    {
>>> -        HashMap<String, Vector<String>> hm = (HashMap<String,
>> Vector<String>>) ctx.getVariable( RESOURCE_INCLUDES );
>>> -
>>> -        if( hm == null )
>>> -            return new String[0];
>>> -
>>> -        Vector<String> resources = hm.get( type );
>>> -
>>> -        if( resources == null )
>>> -            return new String[0];
>>> -
>>> -        String[] res = new String[resources.size()];
>>> -
>>> -        return resources.toArray( res );
>>> -    }
>>> -
>>> -    /**
>>> -     * Returns all those types that have been requested so far.
>>> -     *
>>> -     * @param ctx the wiki context
>>> -     * @return the array of types requested
>>> -     * @deprecated use the Stripes <code>layout-component</code>  
>>> tags
>> instead
>>> -     */
>>> -    @SuppressWarnings( "unchecked" )
>>> -    public static String[] getResourceTypes( WikiContext ctx )
>>> -    {
>>> -        String[] res = new String[0];
>>> -
>>> -        if( ctx != null )
>>> -        {
>>> -            HashMap<String, String> hm = (HashMap<String, String>)
>> ctx.getVariable( RESOURCE_INCLUDES );
>>> -
>>> -            if( hm != null )
>>> -            {
>>> -                Set<String> keys = hm.keySet();
>>> -
>>> -                res = keys.toArray( res );
>>> -            }
>>> -        }
>>> -
>>> -        return res;
>>> -    }
>>> -
>>> +
>>>    /**
>>>     * Returns an empty collection, since at the moment the
>> TemplateManager does
>>>     * not manage any modules.
>>> @@ -631,50 +346,6 @@
>>>     */
>>>    public Collection<WikiModuleInfo> modules()
>>>    {
>>> -        return EMPTY_MODULE_LIST;
>>> -    }
>>> -
>>> -    /**
>>> -     * Adds all of the resources under a specified path prefix to  
>>> the
>>> -     * resource resolver map, with the "short name" of the path  
>>> as the
>>> -     * key, and the full path as the value. The short name is the
>> portion
>>> -     * of the path after the prefix. If a resource with that  
>>> short name
>>> -     * has already been added to the resource map, it will not be  
>>> added
>>> -     * again. Any resources ending in {@code /} (i.e., a  
>>> directory path)
>>> -     * will be processed recursively.
>>> -     * @param context the servlet context
>>> -     * @param resolver the resource resolver map
>>> -     * @param prefix the path prefix that the search initiates from
>>> -     * @param dir the directory to search relative to the path  
>>> prefix.
>> If not
>>> -     * supplied, the path prefix directory itself will be searched
>>> -     */
>>> -    @SuppressWarnings("unchecked")
>>> -    private static void addResources( ServletContext context,
>> Map<String,String> resolver, String prefix, String dir )
>>> -    {
>>> -        String searchPath = dir == null ? prefix : prefix + dir;
>>> -        Set<String> resources = context.getResourcePaths 
>>> ( searchPath );
>>> -        if ( resources != null )
>>> -        {
>>> -            for ( String resource : resources )
>>> -            {
>>> -                String shortName = resource.substring 
>>> ( prefix.length()
>> );
>>> -
>>> -                // Directory: process these entries too
>>> -                if ( shortName.endsWith( "/" ) )
>>> -                {
>>> -                    addResources( context, resolver, prefix,  
>>> shortName
>> );
>>> -                }
>>> -
>>> -                // Regular resource: add it if we don't have it  
>>> already
>>> -                else
>>> -                {
>>> -                    boolean alreadyProcessed =  
>>> resolver.containsKey(
>> shortName );
>>> -                    if ( !alreadyProcessed )
>>> -                    {
>>> -                        resolver.put( shortName, resource );
>>> -                    }
>>> -                }
>>> -            }
>>> -        }
>>> +        return Collections.emptyList();
>>>    }
>>> }
>>>
>>> Modified:
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/stripes/ 
>> TemplateResolution.java
>>> URL:
>> http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/stripes/TemplateResolution.java?rev=917390&r1=917389&r2=917390&view=diff
>>>
>> === 
>> === 
>> === 
>> =====================================================================
>>> ---
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/stripes/ 
>> TemplateResolution.java
>> (original)
>>> +++
>> incubator/jspwiki/trunk/src/java/org/apache/wiki/ui/stripes/ 
>> TemplateResolution.java
>> Mon Mar  1 05:23:10 2010
>>> @@ -22,6 +22,8 @@
>>> {
>>>    private static final Logger LOG = LoggerFactory.getLogger(
>> TemplateResolution.class );
>>>
>>> +    private static final String DEFAULT_PATH_PREFIX = "/" +
>> TemplateManager.TEMPLATE_DIR + "/" +  
>> TemplateManager.DEFAULT_TEMPLATE + "/";
>>> +
>>>    /**
>>>     * Constructs a new TemplateResolution
>>>     *
>>> @@ -41,7 +43,7 @@
>>>        String path = TemplateManager.getResourceResolver 
>>> ( servletContext
>> ).get( getPath() );
>>>        if( path == null )
>>>        {
>>> -            path = "/templates/" +  
>>> TemplateManager.DEFAULT_TEMPLATE +
>> "/" + getPath();
>>> +            path = DEFAULT_PATH_PREFIX + getPath();
>>>        }
>>>        setPath( path );
>>>
>>>
>>
>>