You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2007/01/01 09:01:32 UTC
svn commit: r491544 - in /incubator/wicket/trunk/wicket/src:
main/java/wicket/markup/ main/java/wicket/markup/loader/
main/java/wicket/markup/parser/ main/java/wicket/markup/parser/filter/
main/java/wicket/settings/ test/java/wicket/markup/ test/java/w...
Author: jdonnerstag
Date: Mon Jan 1 00:01:32 2007
New Revision: 491544
URL: http://svn.apache.org/viewvc?view=rev&rev=491544
Log:
cleanups on markup loading
Added:
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/BaseMarkupLoader.java
- copied, changed from r487274, incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/DefaultMarkupLoader.java
Modified:
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupCache.java
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupParser.java
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupParserFactory.java
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/AbstractMarkupFilter.java
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/IMarkupFilter.java
incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/filter/PrependContextPathHandler.java
incubator/wicket/trunk/wicket/src/main/java/wicket/settings/Settings.java
incubator/wicket/trunk/wicket/src/test/java/wicket/markup/MarkupParserTest.java
incubator/wicket/trunk/wicket/src/test/java/wicket/performance/MarkupParserPerformanceTest.java
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupCache.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupCache.java?view=diff&rev=491544&r1=491543&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupCache.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupCache.java Mon Jan 1 00:01:32 2007
@@ -27,9 +27,7 @@
import wicket.MarkupContainer;
import wicket.WicketRuntimeException;
import wicket.markup.loader.DefaultMarkupLoader;
-import wicket.markup.loader.HeaderCleanupMarkupLoader;
import wicket.markup.loader.IMarkupLoader;
-import wicket.markup.loader.InheritedMarkupMarkupLoader;
import wicket.util.listener.IChangeListener;
import wicket.util.resource.IResourceStream;
import wicket.util.resource.ResourceStreamNotFoundException;
@@ -411,11 +409,7 @@
*/
protected IMarkupLoader newMarkupLoader()
{
- return new InheritedMarkupMarkupLoader(application)
- .setParent(
- new HeaderCleanupMarkupLoader(application)
- .setParent(
- new DefaultMarkupLoader(application)));
+ return new DefaultMarkupLoader();
}
/**
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupParser.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupParser.java?view=diff&rev=491544&r1=491543&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupParser.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupParser.java Mon Jan 1 00:01:32 2007
@@ -25,6 +25,7 @@
import java.util.regex.Pattern;
import wicket.Page;
+import wicket.WicketRuntimeException;
import wicket.markup.parser.IMarkupFilter;
import wicket.markup.parser.IXmlPullParser;
import wicket.markup.parser.XmlPullParser;
@@ -32,6 +33,7 @@
import wicket.markup.parser.filter.HeadForceTagIdHandler;
import wicket.markup.parser.filter.HtmlHandler;
import wicket.markup.parser.filter.HtmlHeaderSectionHandler;
+import wicket.markup.parser.filter.PrependContextPathHandler;
import wicket.markup.parser.filter.TagTypeHandler;
import wicket.markup.parser.filter.WicketLinkTagHandler;
import wicket.markup.parser.filter.WicketMessageTagHandler;
@@ -198,6 +200,7 @@
{
// Chain together all the different markup filters and configure them
this.markupFilterChain = xmlParser;
+ xmlParser.setPriority(0);
registerMarkupFilter(new WicketTagIdentifier(this.markup));
registerMarkupFilter(new TagTypeHandler());
@@ -225,20 +228,8 @@
registerMarkupFilter(new HeadForceTagIdHandler(containerInfo.getContainerClass()));
}
}
- }
-
- /**
- * Append a new filter to the list of already pre-configured markup filters.
- * To be used by subclasses which implement {@link #initFilterChain()}.
- *
- * @param filter
- * The filter to be appended
- * @deprecated since 2.0 please use registerMarkupFilter() instead
- */
- public final void appendMarkupFilter(final IMarkupFilter filter)
- {
- filter.setParent(this.markupFilterChain);
- this.markupFilterChain = filter;
+
+ registerMarkupFilter(new PrependContextPathHandler());
}
/**
@@ -250,8 +241,26 @@
*/
public final void registerMarkupFilter(final IMarkupFilter filter)
{
- filter.setParent(this.markupFilterChain);
- this.markupFilterChain = filter;
+ IMarkupFilter parent = this.markupFilterChain;
+ IMarkupFilter prevParent = null;
+ while (parent.getPriority() > filter.getPriority())
+ {
+ prevParent = parent;
+ parent = parent.getParent();
+ if (parent == null)
+ {
+ throw new WicketRuntimeException("The filters priority is too low. Must be > 0. Filter: " + filter);
+ }
+ }
+ filter.setParent(parent);
+ if (parent == this.markupFilterChain)
+ {
+ this.markupFilterChain = filter;
+ }
+ else
+ {
+ prevParent.setParent(filter);
+ }
}
/**
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupParserFactory.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupParserFactory.java?view=diff&rev=491544&r1=491543&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupParserFactory.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/MarkupParserFactory.java Mon Jan 1 00:01:32 2007
@@ -17,38 +17,21 @@
package wicket.markup;
import wicket.Application;
-import wicket.markup.parser.filter.PrependContextPathHandler;
import wicket.settings.IMarkupSettings;
/**
* Default implementation of IMarkupParserFactory
*
- * @TODO This class doesn't serve any purpose anymore and should be removed
* @author Igor Vaynberg (ivaynberg)
*/
public class MarkupParserFactory implements IMarkupParserFactory
{
- /** Wicket application object */
- private final Application application;
-
/**
* Construct.
*
*/
public MarkupParserFactory()
{
- this.application = Application.get();
- }
-
- /**
- * Construct.
- *
- * @param application
- * Application settings necessary to configure the parser
- */
- public MarkupParserFactory(final Application application)
- {
- this.application = application;
}
/**
@@ -78,7 +61,7 @@
*/
protected void initSettings(final MarkupParser parser)
{
- final IMarkupSettings settings = this.application.getMarkupSettings();
+ final IMarkupSettings settings = Application.get().getMarkupSettings();
parser.setCompressWhitespace(settings.getCompressWhitespace());
parser.setStripComments(settings.getStripComments());
parser.setDefaultMarkupEncoding(settings.getDefaultMarkupEncoding());
@@ -95,6 +78,5 @@
*/
protected void initMarkupFilters(final MarkupParser parser)
{
- parser.registerMarkupFilter(new PrependContextPathHandler(this.application));
}
}
Copied: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/BaseMarkupLoader.java (from r487274, incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/DefaultMarkupLoader.java)
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/BaseMarkupLoader.java?view=diff&rev=491544&p1=incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/DefaultMarkupLoader.java&r1=487274&p2=incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/BaseMarkupLoader.java&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/DefaultMarkupLoader.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/BaseMarkupLoader.java Mon Jan 1 00:01:32 2007
@@ -21,7 +21,9 @@
import wicket.Application;
import wicket.MarkupContainer;
import wicket.markup.MarkupFragment;
+import wicket.markup.MarkupParser;
import wicket.markup.MarkupResourceStream;
+import wicket.settings.IMarkupSettings;
import wicket.util.resource.ResourceStreamNotFoundException;
/**
@@ -30,19 +32,13 @@
*
* @author Juergen Donnerstag
*/
-public class DefaultMarkupLoader implements IMarkupLoader
+public class BaseMarkupLoader implements IMarkupLoader
{
- /** The Wicket application */
- private final Application application;
-
/**
* Constructor.
- *
- * @param application
*/
- public DefaultMarkupLoader(final Application application)
+ public BaseMarkupLoader()
{
- this.application = application;
}
/**
@@ -53,10 +49,16 @@
final MarkupResourceStream markupResourceStream) throws IOException,
ResourceStreamNotFoundException
{
- // read and parse the markup
- MarkupFragment markup = application.getMarkupSettings().getMarkupParserFactory()
- .newMarkupParser(markupResourceStream).readAndParse();
+ // Create a Markup parser
+ final IMarkupSettings settings = Application.get().getMarkupSettings();
+ final MarkupParser parser = settings.getMarkupParserFactory().newMarkupParser(markupResourceStream);
+
+ parser.setCompressWhitespace(settings.getCompressWhitespace());
+ parser.setStripComments(settings.getStripComments());
+ parser.setDefaultMarkupEncoding(settings.getDefaultMarkupEncoding());
+ // read and parse the markup
+ MarkupFragment markup = parser.readAndParse();
return markup;
}
}
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java?view=diff&rev=491544&r1=491543&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/loader/HeaderCleanupMarkupLoader.java Mon Jan 1 00:01:32 2007
@@ -51,6 +51,7 @@
* @see wicket.markup.loader.IMarkupLoader#loadMarkup(wicket.MarkupContainer,
* wicket.markup.MarkupResourceStream)
*/
+ @Override
public final MarkupFragment loadMarkup(final MarkupContainer container,
final MarkupResourceStream markupResourceStream) throws IOException,
ResourceStreamNotFoundException
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/AbstractMarkupFilter.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/AbstractMarkupFilter.java?view=diff&rev=491544&r1=491543&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/AbstractMarkupFilter.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/AbstractMarkupFilter.java Mon Jan 1 00:01:32 2007
@@ -26,12 +26,16 @@
* @see wicket.markup.MarkupParser
*
* @author Jonathan Locke
+ * @author Juergen Donnerstag
*/
public abstract class AbstractMarkupFilter implements IMarkupFilter
{
/** The next MarkupFilter in the chain */
private IMarkupFilter parent;
+ /** The filters execution priority */
+ private int priority = DEFAULT_PRIORITY;
+
/**
* Construct.
*
@@ -71,5 +75,22 @@
protected final ComponentTag nextComponentTag() throws ParseException
{
return (ComponentTag)getParent().nextTag();
+ }
+
+ /**
+ * @see wicket.markup.parser.IMarkupFilter#getPriority()
+ */
+ public int getPriority()
+ {
+ return this.priority;
+ }
+
+ /**
+ * @see wicket.markup.parser.IMarkupFilter#setPriority(int)
+ */
+ public IMarkupFilter setPriority(int priority)
+ {
+ this.priority = priority;
+ return this;
}
}
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/IMarkupFilter.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/IMarkupFilter.java?view=diff&rev=491544&r1=491543&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/IMarkupFilter.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/IMarkupFilter.java Mon Jan 1 00:01:32 2007
@@ -33,6 +33,9 @@
*/
public interface IMarkupFilter
{
+ /** Default execution priority */
+ final int DEFAULT_PRIORITY = 50;
+
/**
* IMarkupFilters are usually chained with the last filter being an XML
* parser. The getParent() method returns the next filter in the chain.
@@ -59,4 +62,24 @@
* The parent of this component The next element in the chain
*/
void setParent(final IMarkupFilter parent);
+
+ /**
+ * Filters with a low priority numbers are executed before filters with
+ * higher numbers.
+ * <p>
+ * Note that the priority is only used while registering the filter with the
+ * MarkupParser to determine the filters position within the list of
+ * filters.
+ *
+ * @param priority
+ * @return this
+ */
+ IMarkupFilter setPriority(final int priority);
+
+ /**
+ * Get the filters priority
+ *
+ * @return execution prio
+ */
+ int getPriority();
}
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/filter/PrependContextPathHandler.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/filter/PrependContextPathHandler.java?view=diff&rev=491544&r1=491543&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/filter/PrependContextPathHandler.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/markup/parser/filter/PrependContextPathHandler.java Mon Jan 1 00:01:32 2007
@@ -79,9 +79,12 @@
* The application object
*
*/
- public PrependContextPathHandler(final Application application)
+ public PrependContextPathHandler()
{
- String contextPath = application.getApplicationSettings().getContextPath();
+ // Make sure the filter is placed at the end of the list of filters.
+ setPriority(999);
+
+ String contextPath = Application.get().getApplicationSettings().getContextPath();
if (contextPath != null)
{
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/settings/Settings.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/settings/Settings.java?view=diff&rev=491544&r1=491543&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/settings/Settings.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/settings/Settings.java Mon Jan 1 00:01:32 2007
@@ -313,7 +313,6 @@
public Settings(final Application application)
{
this.application = application;
- this.markupParserFactory = new MarkupParserFactory(application);
stringResourceLoaders.add(new ComponentStringResourceLoader(application));
stringResourceLoaders.add(new ClassStringResourceLoader(application, this.application
.getClass()));
@@ -595,6 +594,10 @@
*/
public IMarkupParserFactory getMarkupParserFactory()
{
+ if (this.markupParserFactory == null)
+ {
+ this.markupParserFactory = new MarkupParserFactory();
+ }
return markupParserFactory;
}
Modified: incubator/wicket/trunk/wicket/src/test/java/wicket/markup/MarkupParserTest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/markup/MarkupParserTest.java?view=diff&rev=491544&r1=491543&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/test/java/wicket/markup/MarkupParserTest.java (original)
+++ incubator/wicket/trunk/wicket/src/test/java/wicket/markup/MarkupParserTest.java Mon Jan 1 00:01:32 2007
@@ -71,7 +71,7 @@
{
MarkupResourceStream stream = new MarkupResourceStream(new StringResourceStream(markup),
null, null);
- final MarkupParser parser = new MarkupParserFactory(this.tester.getApplication())
+ final MarkupParser parser = new MarkupParserFactory()
.newMarkupParser(stream);
parser.setWicketNamespace(namespace);
return parser.readAndParse();
@@ -90,7 +90,7 @@
{
MarkupResourceStream stream = new MarkupResourceStream(new StringResourceStream(markup),
null, null);
- final MarkupParser parser = new MarkupParserFactory(this.tester.getApplication())
+ final MarkupParser parser = new MarkupParserFactory()
.newMarkupParser(stream);
return parser.readAndParse();
}
@@ -126,7 +126,7 @@
private MarkupFragment parse(final MarkupResourceStream resource) throws IOException,
ResourceStreamNotFoundException
{
- final MarkupParser parser = new MarkupParserFactory(this.tester.getApplication())
+ final MarkupParser parser = new MarkupParserFactory()
.newMarkupParser(resource);
return parser.readAndParse();
}
@@ -373,7 +373,7 @@
// Assert.assertEquals(docText, tokens.get(0).toString());
resource = newMarkupResourceStream(locator, this.getClass(), "9", null, "html");
- MarkupParser parser = new MarkupParserFactory(this.tester.getApplication())
+ MarkupParser parser = new MarkupParserFactory()
.newMarkupParser(resource);
parser.setStripComments(true);
parser.readAndParse();
Modified: incubator/wicket/trunk/wicket/src/test/java/wicket/performance/MarkupParserPerformanceTest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/performance/MarkupParserPerformanceTest.java?view=diff&rev=491544&r1=491543&r2=491544
==============================================================================
--- incubator/wicket/trunk/wicket/src/test/java/wicket/performance/MarkupParserPerformanceTest.java (original)
+++ incubator/wicket/trunk/wicket/src/test/java/wicket/performance/MarkupParserPerformanceTest.java Mon Jan 1 00:01:32 2007
@@ -32,7 +32,7 @@
import wicket.markup.MarkupParser;
import wicket.markup.MarkupParserFactory;
import wicket.markup.MarkupResourceStream;
-import wicket.markup.loader.DefaultMarkupLoader;
+import wicket.markup.loader.BaseMarkupLoader;
import wicket.markup.parser.filter.EnclosureHandler;
import wicket.markup.parser.filter.WicketTagIdentifier;
import wicket.markup.resolver.EnclosureResolver;
@@ -267,7 +267,7 @@
int i = 0;
try
{
- DefaultMarkupLoader loader = new DefaultMarkupLoader(this.application);
+ BaseMarkupLoader loader = new BaseMarkupLoader();
for (MarkupResourceStream stream : this.resources)
{
loader.loadMarkup(null, stream);
@@ -392,7 +392,7 @@
{
Random random = new Random();
int size = this.resources.size();
- DefaultMarkupLoader loader = new DefaultMarkupLoader(this.application);
+ BaseMarkupLoader loader = new BaseMarkupLoader();
for (int i = 0; i < count; i++)
{