Author: jdonnerstag
Date: Fri Jan  2 14:20:21 2009
New Revision: 730851

URL: http://svn.apache.org/viewvc?rev=730851&view=rev
Log:
applied wicket-1431: Make the Source Code pages for examples stateless

Added:
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleRequestCycle.java
Modified:
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorldApplication.java
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.html
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
    
wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/filtertest/Application.java
    
wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/filtertest/HelloWorld.java

Modified: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java?rev=730851&r1=730850&r2=730851&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
 (original)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleApplication.java
 Fri Jan  2 14:20:21 2009
@@ -18,14 +18,18 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.wicket.Request;
+import org.apache.wicket.RequestCycle;
+import org.apache.wicket.Response;
 import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.http.WebRequest;
 import org.apache.wicket.settings.ISecuritySettings;
 import org.apache.wicket.util.crypt.ClassCryptFactory;
 import org.apache.wicket.util.crypt.NoCrypt;
 
 
 /**
- * Wicket Application class for hello world example.
+ * Wicket Example Application class.
  * 
  * @author Jonathan Locke
  */
@@ -46,6 +50,7 @@
        /**
         * @see org.apache.wicket.protocol.http.WebApplication#init()
         */
+       @Override
        protected void init()
        {
                // WARNING: DO NOT do this on a real world application unless
@@ -57,6 +62,17 @@
                // and we want them to be able to run the examples out of the
                // box.
                getSecuritySettings().setCryptFactory(
-                               new ClassCryptFactory(NoCrypt.class, 
ISecuritySettings.DEFAULT_ENCRYPTION_KEY));
+                       new ClassCryptFactory(NoCrypt.class, 
ISecuritySettings.DEFAULT_ENCRYPTION_KEY));
+       }
+
+       /**
+        * 
+        * @see 
org.apache.wicket.protocol.http.WebApplication#newRequestCycle(org.apache.wicket.Request,
+        *      org.apache.wicket.Response)
+        */
+       @Override
+       public final RequestCycle newRequestCycle(Request request, Response 
response)
+       {
+               return new WicketExampleRequestCycle(this, (WebRequest)request, 
response);
        }
 }

Modified: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java?rev=730851&r1=730850&r2=730851&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java
 (original)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleHeader.java
 Fri Jan  2 14:20:21 2009
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.examples;
 
-import org.apache.wicket.Page;
 import org.apache.wicket.PageMap;
 import org.apache.wicket.RequestContext;
 import org.apache.wicket.examples.debug.InspectorBug;
@@ -24,7 +23,7 @@
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.markup.html.link.PopupSettings;
 import org.apache.wicket.markup.html.panel.Panel;
 
@@ -62,15 +61,8 @@
                add(hideInPortlet);
                hideInPortlet.add(new InspectorBug("inspector", page));
                add(new Label("exampleTitle", exampleTitle));
-               Link link = new Link("sources")
-               {
-                       @SuppressWarnings("unchecked")
-                       @Override
-                       public void onClick()
-                       {
-                               setResponsePage(new SourcesPage((Class<? 
extends Page>)getPage().getClass()));
-                       }
-               };
+               BookmarkablePageLink<Void> link = new 
BookmarkablePageLink<Void>("sources",
+                       SourcesPage.class, 
SourcesPage.generatePageParameters(page));
                add(link);
 
                PopupSettings settings = new 
PopupSettings(PageMap.forName("sources"),

Added: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleRequestCycle.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleRequestCycle.java?rev=730851&view=auto
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleRequestCycle.java
 (added)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/WicketExampleRequestCycle.java
 Fri Jan  2 14:20:21 2009
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.examples;
+
+import org.apache.wicket.Page;
+import org.apache.wicket.Request;
+import org.apache.wicket.Response;
+import org.apache.wicket.examples.source.SourcesPage;
+import org.apache.wicket.protocol.http.BufferedWebResponse;
+import org.apache.wicket.protocol.http.PageExpiredException;
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.http.WebRequest;
+import org.apache.wicket.protocol.http.WebRequestCycle;
+import org.apache.wicket.protocol.http.servlet.AbortWithWebErrorCodeException;
+
+/**
+ * Handles the PageExpiredException so that the SourcesPage can recover from a 
session expired.
+ * 
+ * @author rgravener
+ */
+public class WicketExampleRequestCycle extends WebRequestCycle
+{
+       /**
+        * Construct.
+        * 
+        * @param application
+        * @param request
+        * @param response
+        */
+       public WicketExampleRequestCycle(WebApplication application, WebRequest 
request,
+               Response response)
+       {
+               super(application, request, response);
+       }
+
+       /**
+        * @see 
org.apache.wicket.RequestCycle#onRuntimeException(org.apache.wicket.Page,
+        *      java.lang.RuntimeException)
+        */
+       @Override
+       public Page onRuntimeException(final Page page, final RuntimeException 
e)
+       {
+               final Throwable cause;
+               if (e.getCause() != null)
+               {
+                       cause = e.getCause();
+               }
+               else
+               {
+                       cause = e;
+               }
+
+               if (cause instanceof PageExpiredException)
+               {
+                       handlePageExpiredException((PageExpiredException)cause);
+               }
+               return super.onRuntimeException(page, e);
+       }
+
+       /**
+        * Checks to see if the request was ajax based. If so we send a 404 so 
that the
+        * org.apache.wicket.ajax.IAjaxCallDecorator failure script is executed.
+        * 
+        * @param e
+        */
+       private void handlePageExpiredException(final PageExpiredException e)
+       {
+               Response response = getOriginalResponse();
+               if (response instanceof BufferedWebResponse)
+               {
+                       BufferedWebResponse bufferedWebResponse = 
(BufferedWebResponse)response;
+                       Request request = getRequest();
+                       if (bufferedWebResponse.isAjax() &&
+                               request.getParameter(SourcesPage.PAGE_CLASS) != 
null)
+                       {
+                               // If there is a better way to figure out if 
SourcesPage was the request, we should
+                               // do that.
+                               throw new AbortWithWebErrorCodeException(404);
+                       }
+               }
+       }
+}

Modified: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorldApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorldApplication.java?rev=730851&r1=730850&r2=730851&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorldApplication.java
 (original)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/helloworld/HelloWorldApplication.java
 Fri Jan  2 14:20:21 2009
@@ -17,12 +17,7 @@
 package org.apache.wicket.examples.helloworld;
 
 import org.apache.wicket.Page;
-import org.apache.wicket.Request;
-import org.apache.wicket.RequestCycle;
-import org.apache.wicket.Response;
 import org.apache.wicket.examples.WicketExampleApplication;
-import org.apache.wicket.protocol.http.WebRequest;
-import org.apache.wicket.protocol.http.WebRequestCycle;
 
 /**
  * Application class for hello world example.
@@ -36,37 +31,13 @@
         */
        public HelloWorldApplication()
        {
-
-       }
-
-       /**
-        * @see 
org.apache.wicket.protocol.http.WebApplication#newRequestCycle(org.apache.wicket.Request,
-        *      org.apache.wicket.Response)
-        */
-       @Override
-       public RequestCycle newRequestCycle(Request request, Response response)
-       {
-               return new WebRequestCycle(this, (WebRequest)request, response)
-               {
-                       @Override
-                       protected void onBeginRequest()
-                       {
-                               // open session
-                       }
-
-                       @Override
-                       protected void onEndRequest()
-                       {
-                               // close session
-                       }
-               };
        }
 
        /**
         * @see org.apache.wicket.Application#getHomePage()
         */
        @Override
-       public Class< ? extends Page> getHomePage()
+       public Class<? extends Page> getHomePage()
        {
                return HelloWorld.class;
        }

Modified: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.html?rev=730851&r1=730850&r2=730851&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.html
 (original)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.html
 Fri Jan  2 14:20:21 2009
@@ -166,7 +166,7 @@
        <div id="header">
                <div class="inner">
                        <div class="left">Files</div>
-                       <span class="close">[<a href="#" 
wicket:id="close">Close</a>]</span>
+                       <span class="close">[<a 
href="javascript:self.close()">Close</a>]</span>
                        <div class="right">Code for <span 
wicket:id="filename"></span></div>
                        
                </div>

Modified: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java?rev=730851&r1=730850&r2=730851&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
 (original)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
 Fri Jan  2 14:20:21 2009
@@ -33,28 +33,31 @@
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
-import com.uwyn.jhighlight.renderer.Renderer;
-import com.uwyn.jhighlight.renderer.XhtmlRendererFactory;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
+import org.apache.wicket.PageParameters;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.IAjaxCallDecorator;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
+import org.apache.wicket.authorization.UnauthorizedInstantiationException;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.PopupCloseLink;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.AbstractReadOnlyModel;
-import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.protocol.http.servlet.AbortWithWebErrorCodeException;
 import org.apache.wicket.util.io.IOUtils;
 import org.apache.wicket.util.lang.PackageName;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.apache.wicket.util.string.Strings;
 
+import com.uwyn.jhighlight.renderer.Renderer;
+import com.uwyn.jhighlight.renderer.XhtmlRendererFactory;
+
 
 /**
  * Displays the resources in a packages directory in a browsable format.
@@ -86,19 +89,21 @@
                public String getObject()
                {
                        // name contains the name of the selected file
-                       if (Strings.isEmpty(name))
+                       if (Strings.isEmpty(name) &&
+                               
Strings.isEmpty(getPage().getRequest().getParameter(SOURCE)))
                        {
                                return "";
                        }
                        BufferedReader br = null;
+                       String source = null;
                        try
                        {
                                StringBuffer sb = new StringBuffer();
-
-                               InputStream resourceAsStream = 
page.getResourceAsStream(name);
+                               source = (name != null) ? name : 
getPage().getRequest().getParameter(SOURCE);
+                               InputStream resourceAsStream = 
getPageTargetClass().getResourceAsStream(source);
                                if (resourceAsStream == null)
                                {
-                                       return "Unable to read the source for " 
+ name;
+                                       return "Unable to read the source for " 
+ source;
                                }
                                br = new BufferedReader(new 
InputStreamReader(resourceAsStream));
 
@@ -107,14 +112,14 @@
                                        sb.append(br.readLine());
                                        sb.append("\n");
                                }
-                               int lastDot = name.lastIndexOf('.');
+                               int lastDot = source.lastIndexOf('.');
                                if (lastDot != -1)
                                {
-                                       String type = name.substring(lastDot + 
1);
+                                       String type = source.substring(lastDot 
+ 1);
                                        Renderer renderer = 
XhtmlRendererFactory.getRenderer(type);
                                        if (renderer != null)
                                        {
-                                               return renderer.highlight(name, 
sb.toString(), "UTF-8", true);
+                                               return 
renderer.highlight(source, sb.toString(), "UTF-8", true);
                                        }
                                }
                                return Strings.escapeMarkup(sb.toString(), 
false, true).toString().replaceAll("\n",
@@ -122,7 +127,7 @@
                        }
                        catch (IOException e)
                        {
-                               log.error("Unable to read resource stream for: 
" + name + "; Page=" +
+                               log.error("Unable to read resource stream for: 
" + source + "; Page=" +
                                        page.toString(), e);
                                return "";
                        }
@@ -165,7 +170,7 @@
                {
                        if (resources.isEmpty())
                        {
-                               get(page);
+                               get(getPageTargetClass());
 // PackageName name = PackageName.forClass(page);
 // ClassLoader loader = page.getClassLoader();
 // String path = Strings.replaceAll(name.getName(), ".", "/").toString();
@@ -373,9 +378,10 @@
                        ListView<String> lv = new ListView<String>("file", new 
PackagedResourcesModel())
                        {
                                @Override
-                               protected void populateItem(ListItem<String> 
item)
+                               protected void populateItem(final 
ListItem<String> item)
                                {
-                                       AjaxFallbackLink<String> link = new 
AjaxFallbackLink<String>("link", item.getModel())
+                                       AjaxFallbackLink<String> link = new 
AjaxFallbackLink<String>("link",
+                                               item.getModel())
                                        {
                                                @Override
                                                public void 
onClick(AjaxRequestTarget target)
@@ -388,6 +394,53 @@
                                                                
target.addComponent(filename);
                                                        }
                                                }
+
+                                               @Override
+                                               protected CharSequence getURL()
+                                               {
+                                                       CharSequence url = 
urlFor(SourcesPage.class,
+                                                               
SourcesPage.generatePageParameters(getPageTargetClass(),
+                                                                       
item.getModel().getObject()));
+                                                       return url;
+                                               }
+
+                                               @Override
+                                               protected IAjaxCallDecorator 
getAjaxCallDecorator()
+                                               {
+                                                       return new 
IAjaxCallDecorator()
+                                                       {
+
+                                                               public 
CharSequence decorateOnFailureScript(CharSequence script)
+                                                               {
+                                                                       return 
"window.location=this.href;";
+                                                                       // 
return "alert('It\\'s ok!')";
+                                                               }
+
+                                                               public 
CharSequence decorateOnSuccessScript(CharSequence script)
+                                                               {
+                                                                       if 
(script == null)
+                                                                       {
+                                                                               
return "";
+                                                                       }
+                                                                       return 
script;
+                                                               }
+
+                                                               public 
CharSequence decorateScript(CharSequence script)
+                                                               {
+                                                                       int 
index = script.toString().indexOf('?');
+                                                                       if 
(index >= 0)
+                                                                       {
+                                                                               
String test = script.subSequence(0, index + 1) +
+                                                                               
        PAGE_CLASS + "=1" + "&" +
+                                                                               
        script.subSequence(index + 1, script.length());
+                                                                               
return test;
+
+                                                                       }
+                                                                       return 
script;
+                                                               }
+
+                                                       };
+                                               }
                                        };
                                        link.add(new Label("name", 
item.getDefaultModelObjectAsString()));
                                        item.add(link);
@@ -420,14 +473,21 @@
        }
 
        /**
-        * The selected name of the packaged resource to display.
+        * Parameter key for identifying the page class. UUID generated.
         */
-       private String name;
+       public static final String PAGE_CLASS = 
SourcesPage.class.getSimpleName() + "_class";
+
+       /**
+        * Parameter key for identify the name of the source file in the 
package.
+        */
+       public static final String SOURCE = "source";
 
        /**
-        * The class of the page of which the sources need to be displayed.
+        * The selected name of the packaged resource to display.
         */
-       private final Class<? extends Page> page;
+       private String name;
+
+       private transient Class<? extends Page> page;
 
        /**
         * The panel for setting the ajax calls.
@@ -462,27 +522,98 @@
         */
        public SourcesPage()
        {
-               this(SourcesPage.class);
+               this(new PageParameters(PAGE_CLASS + "=" + 
SourcesPage.class.getName()));
        }
 
        /**
-        * Constructor.
         * 
-        * @param <C>
+        * Construct.
         * 
-        * @param page
-        *            the page where the sources need to be shown from.
+        * @param <C>
+        * @param params
         */
-       public <C extends Page> SourcesPage(Class<C> page)
+       public <C extends Page> SourcesPage(final PageParameters params)
        {
-               this.page = page;
+               filename = new Label("filename", new 
AbstractReadOnlyModel<String>()
+               {
 
-               filename = new Label("filename", new 
PropertyModel<String>(this, "name"));
+                       @Override
+                       public String getObject()
+                       {
+                               return name != null ? name : 
getPage().getRequest().getParameter(SOURCE);
+                       }
+
+               });
                filename.setOutputMarkupId(true);
                add(filename);
                codePanel = new CodePanel("codepanel").setOutputMarkupId(true);
                add(codePanel);
                add(new FilesBrowser("filespanel"));
-               add(new PopupCloseLink("close"));
+       }
+
+       /**
+        * 
+        * @param page
+        * @return PageParamets for reconstructing the bookmarkable page.
+        */
+       public static PageParameters generatePageParameters(Page page)
+       {
+               return generatePageParameters(page.getClass(), null);
+       }
+
+       /**
+        * 
+        * @param clazz
+        * @param fileName
+        * @return PageParameters for reconstructing the bookmarkable page.
+        */
+       public static PageParameters generatePageParameters(Class<? extends 
Page> clazz, String fileName)
+       {
+               PageParameters p = new PageParameters();
+               p.put(PAGE_CLASS, clazz.getName());
+               if (fileName != null)
+                       p.put(SOURCE, fileName);
+               return p;
+       }
+
+       private String getPageParam()
+       {
+               return getPage().getRequest().getParameter(PAGE_CLASS);
+       }
+
+       private Class<? extends Page> getPageTargetClass()
+       {
+               if (page == null)
+               {
+                       try
+                       {
+                               String pageParam = getPageParam();
+                               if (pageParam == null)
+                               {
+                                       if (log.isErrorEnabled())
+                                       {
+                                               log.error("key: " + PAGE_CLASS 
+ " is null.");
+                                       }
+                                       throw new 
AbortWithWebErrorCodeException(404,
+                                               "Could not find sources for the 
page you requested");
+                               }
+                               if 
(!pageParam.startsWith("org.apache.wicket.examples"))
+                               {
+                                       if (log.isErrorEnabled())
+                                       {
+                                               log.error("user is trying to 
access class: " + pageParam +
+                                                       " which is not in the 
scope of org.apache.wicket.examples");
+                                       }
+                                       throw new 
UnauthorizedInstantiationException(getClass());
+                               }
+                               page = (Class<? extends 
Page>)Class.forName(getPageParam());
+                       }
+                       catch (ClassNotFoundException e)
+                       {
+                               throw new AbortWithWebErrorCodeException(404,
+                                       "Could not find sources for the page 
you requested");
+                       }
+               }
+               return page;
        }
 }

Modified: 
wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/filtertest/Application.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/filtertest/Application.java?rev=730851&r1=730850&r2=730851&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/filtertest/Application.java
 (original)
+++ 
wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/filtertest/Application.java
 Fri Jan  2 14:20:21 2009
@@ -29,12 +29,9 @@
         */
        public Application()
        {
-
        }
 
-       /*
-        * (non-Javadoc)
-        * 
+       /**
         * @see org.apache.wicket.examples.WicketExampleApplication#init()
         */
        @Override

Modified: 
wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/filtertest/HelloWorld.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/filtertest/HelloWorld.java?rev=730851&r1=730850&r2=730851&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/filtertest/HelloWorld.java
 (original)
+++ 
wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/filtertest/HelloWorld.java
 Fri Jan  2 14:20:21 2009
@@ -30,6 +30,8 @@
 {
        /**
         * Constructor
+        * 
+        * @param params
         */
        public HelloWorld(PageParameters params)
        {


Reply via email to