You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2010/01/08 22:48:56 UTC
svn commit: r897330 [3/3] - in /wicket/trunk:
wicket-auth-roles/src/main/java/org/apache/wicket/authentication/
wicket-examples/src/main/java/org/apache/wicket/examples/
wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/
wicket-exam...
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/LabelIconPanel.java Fri Jan 8 21:48:50 2010
@@ -19,11 +19,11 @@
import javax.swing.tree.TreeModel;
import org.apache.wicket.Component;
-import org.apache.wicket.ResourceReference;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.ng.resource.ResourceReference;
/**
* Simple panel that contains an icon next to a label.
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/resolver/AutoLinkResolver.java Fri Jan 8 21:48:50 2010
@@ -24,16 +24,17 @@
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.Page;
-import org.apache.wicket.ResourceReference;
import org.apache.wicket.application.IClassResolver;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupStream;
-import org.apache.wicket.markup.html.PackageResource;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.markup.parser.filter.WicketLinkTagHandler;
import org.apache.wicket.ng.request.component.PageParameters;
+import org.apache.wicket.ng.request.handler.resource.ResourceReferenceRequestHandler;
+import org.apache.wicket.ng.resource.PackageResource;
+import org.apache.wicket.ng.resource.ResourceReference;
import org.apache.wicket.protocol.http.RequestUtils;
import org.apache.wicket.util.lang.Packages;
import org.apache.wicket.util.string.Strings;
@@ -594,7 +595,10 @@
if (resourceReference != null)
{
// Set href to link to this link's linkClicked method
- CharSequence url = getRequestCycle().urlFor(resourceReference);
+
+ ResourceReferenceRequestHandler handler = new ResourceReferenceRequestHandler(
+ resourceReference);
+ CharSequence url = getRequestCycle().renderUrlFor(handler);
// generate the href attribute
tag.put(attribute, Strings.replaceAll(url, "&", "&"));
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockApplication.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockApplication.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/mock/MockApplication.java Fri Jan 8 21:48:50 2010
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.ng.mock;
+import org.apache.wicket.Page;
import org.apache.wicket.ng.request.component.IRequestablePage;
import org.apache.wicket.ng.request.cycle.RequestCycle;
import org.apache.wicket.ng.request.cycle.RequestCycleContext;
@@ -35,7 +36,7 @@
}
@Override
- public Class<? extends IRequestablePage> getHomePage()
+ public Class<? extends Page> getHomePage()
{
return null;
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestCycle.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestCycle.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestCycle.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/cycle/RequestCycle.java Fri Jan 8 21:48:50 2010
@@ -456,4 +456,9 @@
{
return new WebClientInfo(this);
}
+
+ public ClientInfo getClientInfo()
+ {
+ return newClientInfo();
+ }
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceRequestHandler.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/handler/resource/ResourceRequestHandler.java Fri Jan 8 21:48:50 2010
@@ -104,7 +104,7 @@
public void respond(final RequestCycle requestCycle)
{
IResource.Attributes a = new IResource.Attributes(requestCycle.getRequest(),
- requestCycle.getResponse(), locale, style, variation, pageParameters);
+ requestCycle.getResponse(), pageParameters);
resource.respond(a);
}
Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/HomePageMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/HomePageMapper.java?rev=897330&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/HomePageMapper.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/HomePageMapper.java Fri Jan 8 21:48:50 2010
@@ -0,0 +1,56 @@
+/*
+ * 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.ng.request.mapper;
+
+import org.apache.wicket.IRequestHandler;
+import org.apache.wicket.Request;
+import org.apache.wicket.ng.request.Url;
+import org.apache.wicket.ng.request.handler.DefaultPageProvider;
+import org.apache.wicket.ng.request.handler.impl.RenderPageRequestHandler;
+
+public class HomePageMapper extends AbstractMapper
+{
+
+ public HomePageMapper()
+ {
+ }
+
+ public int getCompatibilityScore(Request request)
+ {
+ return 0;
+ }
+
+ public Url mapHandler(IRequestHandler requestHandler)
+ {
+ return null;
+ }
+
+ public IRequestHandler mapRequest(Request request)
+ {
+ if (request.getUrl().getSegments().size() == 0 &&
+ request.getUrl().getQueryParameters().size() == 0)
+ {
+ return new RenderPageRequestHandler(new DefaultPageProvider(
+ getContext().getHomePageClass()));
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+}
Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/HomePageMapper.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/mapper/SystemMapper.java Fri Jan 8 21:48:50 2010
@@ -30,6 +30,7 @@
*/
public SystemMapper()
{
+ register(new HomePageMapper());
register(new PageInstanceMapper());
register(new BookmarkableMapper());
register(new ResourceReferenceMapper());
Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ClassScanner.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ClassScanner.java?rev=897330&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ClassScanner.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ClassScanner.java Fri Jan 8 21:48:50 2010
@@ -0,0 +1,68 @@
+/*
+ * 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.ng.resource;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.Set;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+abstract class ClassScanner
+{
+ private Set<String> scannedClasses;
+
+ abstract void foundResourceReference(ResourceReference reference);
+
+ public void scanClass(Class<?> klass)
+ {
+ String className = klass.getName();
+ if (scannedClasses.contains(className) == false)
+ {
+ scannedClasses.add(className);
+
+ for (Field f : klass.getDeclaredFields())
+ {
+ if ((f.getModifiers() & Modifier.STATIC) == Modifier.STATIC)
+ {
+ f.setAccessible(true);
+ try
+ {
+ Object value = f.get(null);
+ if (value instanceof ResourceReference)
+ {
+ foundResourceReference((ResourceReference)value);
+ }
+ }
+ catch (Exception e)
+ {
+ log.warn("Error accessing object property", e);
+ }
+ }
+ }
+
+ klass = klass.getSuperclass();
+ if (klass != null)
+ {
+ scanClass(klass);
+ }
+ }
+ }
+
+ private static Logger log = LoggerFactory.getLogger(ClassScanner.class);
+}
Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ClassScanner.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/CompressedResourceReference.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/CompressedResourceReference.java?rev=897330&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/CompressedResourceReference.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/CompressedResourceReference.java Fri Jan 8 21:48:50 2010
@@ -0,0 +1,34 @@
+/*
+ * 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.ng.resource;
+
+import java.util.Locale;
+
+public class CompressedResourceReference extends ResourceReference
+{
+
+ public CompressedResourceReference(Class<?> scope, String name, Locale locale, String style,
+ String variation)
+ {
+ super(scope, name, locale, style, variation);
+ }
+
+ public CompressedResourceReference(Class<?> scope, String name)
+ {
+ super(scope, name);
+ }
+}
Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/CompressedResourceReference.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/IResource.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/IResource.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/IResource.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/IResource.java Fri Jan 8 21:48:50 2010
@@ -17,7 +17,6 @@
package org.apache.wicket.ng.resource;
import java.io.Serializable;
-import java.util.Locale;
import org.apache.wicket.Request;
import org.apache.wicket.Response;
@@ -42,9 +41,6 @@
{
private final Request request;
private final Response response;
- private final Locale locale;
- private final String style;
- private final String variation;
private final PageParameters parameters;
/**
@@ -53,22 +49,15 @@
* @param request
*
* @param response
- * @param locale
- * @param style
- * @param variation
* @param parameters
*/
- public Attributes(Request request, Response response, Locale locale, String style,
- String variation, PageParameters parameters)
+ public Attributes(Request request, Response response, PageParameters parameters)
{
Checks.argumentNotNull(request, "request");
Checks.argumentNotNull(response, "response");
this.request = request;
this.response = response;
- this.locale = locale;
- this.style = style;
- this.variation = variation;
this.parameters = parameters;
}
@@ -80,7 +69,7 @@
*/
public Attributes(Request request, Response response)
{
- this(request, response, null, null, null, null);
+ this(request, response, null);
}
/**
@@ -104,36 +93,6 @@
}
/**
- * Returns requested locale. The locale is never null.
- *
- * @return locale
- */
- public Locale getLocale()
- {
- return locale != null ? locale : request.getLocale();
- }
-
- /**
- * If specified returns requested style. The style is optional.
- *
- * @return style or <code>null</code>
- */
- public String getStyle()
- {
- return style;
- }
-
- /**
- * If specified returns requested variation. The variation is optional.
- *
- * @return variation or <code>null</code>
- */
- public String getVariation()
- {
- return variation;
- }
-
- /**
* Returns additional parameters extracted from the request. If resource is created mounted
* {@link ResourceReference}, this method returns all (indexed and query) parameters after
* the mount path. For non mounted {@link ResourceReference}s this method will only return
Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/JavascriptResourceReference.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/JavascriptResourceReference.java?rev=897330&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/JavascriptResourceReference.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/JavascriptResourceReference.java Fri Jan 8 21:48:50 2010
@@ -0,0 +1,35 @@
+/*
+ * 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.ng.resource;
+
+import java.util.Locale;
+
+public class JavascriptResourceReference extends ResourceReference
+{
+
+ public JavascriptResourceReference(Class<?> scope, String name, Locale locale, String style,
+ String variation)
+ {
+ super(scope, name, locale, style, variation);
+ }
+
+ public JavascriptResourceReference(Class<?> scope, String name)
+ {
+ super(scope, name);
+ }
+
+}
Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/JavascriptResourceReference.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/PackageResource.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/PackageResource.java?rev=897330&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/PackageResource.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/PackageResource.java Fri Jan 8 21:48:50 2010
@@ -0,0 +1,196 @@
+/*
+ * 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.ng.resource;
+
+import java.util.Locale;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.markup.html.IPackageResourceGuard;
+import org.apache.wicket.ng.request.cycle.RequestCycle;
+import org.apache.wicket.protocol.http.WebResponse;
+import org.apache.wicket.protocol.http.request.WebErrorCodeResponseHandler;
+import org.apache.wicket.request.target.basic.AbortRequestHandler;
+import org.apache.wicket.util.lang.Classes;
+import org.apache.wicket.util.lang.Packages;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PackageResource implements IResource
+{
+ /**
+ * Exception thrown when the creation of a package resource is not allowed.
+ */
+ public static final class PackageResourceBlockedException extends WicketRuntimeException
+ {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ * @param message
+ */
+ public PackageResourceBlockedException(String message)
+ {
+ super(message);
+ }
+ }
+
+ private static final long serialVersionUID = 1L;
+
+ /** The path to the resource */
+ private final String absolutePath;
+
+ /** The resource's locale */
+ private final Locale locale;
+
+ /** The path this resource was created with. */
+ private final String path;
+
+ /** The scoping class, used for class loading and to determine the package. */
+ private final String scopeName;
+
+ /** The resource's style */
+ private final String style;
+
+ /** The component's variation (of the style) */
+ private final String variation;
+
+ /**
+ * Hidden constructor.
+ *
+ * @param scope
+ * This argument will be used to get the class loader for loading the package
+ * resource, and to determine what package it is in
+ * @param name
+ * The re;atove path to the resource
+ * @param locale
+ * The locale of the resource
+ * @param style
+ * The style of the resource
+ * @param variation
+ * The component's variation (of the style)
+ */
+ protected PackageResource(final Class<?> scope, final String name, final Locale locale,
+ final String style, final String variation)
+ {
+ // Convert resource path to absolute path relative to base package
+ absolutePath = Packages.absolutePath(scope, name);
+
+ if (!accept(scope, name))
+ {
+ throw new PackageResourceBlockedException(
+ "Access denied to (static) package resource " + absolutePath +
+ ". See IPackageResourceGuard");
+ }
+
+ scopeName = scope.getName();
+ path = name;
+ this.locale = locale;
+ this.style = style;
+ this.variation = variation;
+ }
+
+ /**
+ * Gets the scoping class, used for class loading and to determine the package.
+ *
+ * @return the scoping class
+ */
+ public final Class<?> getScope()
+ {
+ return Classes.resolveClass(scopeName);
+ }
+
+ /**
+ * Gets the style.
+ *
+ * @return the style
+ */
+ public final String getStyle()
+ {
+ return style;
+ }
+
+
+ public void respond(Attributes attributes)
+ {
+ // Locate resource
+ IResourceStream resourceStream = Application.get()
+ .getResourceSettings()
+ .getResourceStreamLocator()
+ .locate(getScope(), absolutePath, style, variation, locale, null);
+
+ if (resourceStream == null)
+ {
+ String msg = "Unable to find package resource [path = " + absolutePath + ", style = " +
+ style + ", variation = " + variation + ", locale = " + locale + "]";
+ log.warn(msg);
+
+ if (RequestCycle.get().getResponse() instanceof WebResponse)
+ {
+ RequestCycle.get().replaceAllRequestHandlers(
+ new WebErrorCodeResponseHandler(HttpServletResponse.SC_NOT_FOUND, msg));
+ }
+ else
+ {
+ RequestCycle.get().replaceAllRequestHandlers(new AbortRequestHandler());
+ }
+ }
+
+ new ResourceStreamResource(resourceStream).respond(attributes);
+ }
+
+ private boolean accept(Class<?> scope, String path)
+ {
+ IPackageResourceGuard guard = Application.get()
+ .getResourceSettings()
+ .getPackageResourceGuard();
+
+ return guard.accept(scope, path);
+ }
+
+ private static final Logger log = LoggerFactory.getLogger(PackageResource.class);
+
+ /**
+ * Gets whether a resource for a given set of criteria exists.
+ *
+ * @param scope
+ * This argument will be used to get the class loader for loading the package
+ * resource, and to determine what package it is in. Typically this is the class in
+ * which you call this method
+ * @param path
+ * The path to the resource
+ * @param locale
+ * The locale of the resource
+ * @param style
+ * The style of the resource (see {@link org.apache.wicket.Session})
+ * @param variation
+ * The component's variation (of the style)
+ * @return true if a resource could be loaded, false otherwise
+ */
+ public static boolean exists(final Class<?> scope, final String path, final Locale locale,
+ final String style, final String variation)
+ {
+ String absolutePath = Packages.absolutePath(scope, path);
+ return Application.get().getResourceSettings().getResourceStreamLocator().locate(scope,
+ absolutePath, style, variation, locale, null) != null;
+ }
+
+}
Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/PackageResource.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceReference.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceReference.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceReference.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceReference.java Fri Jan 8 21:48:50 2010
@@ -19,6 +19,7 @@
import java.io.Serializable;
import java.util.Locale;
+import org.apache.wicket.Application;
import org.apache.wicket.util.lang.Checks;
import org.apache.wicket.util.lang.Classes;
import org.apache.wicket.util.lang.Objects;
@@ -34,7 +35,7 @@
*
* @author Matej Knopp
*/
-public abstract class ResourceReference implements Serializable
+public class ResourceReference implements Serializable
{
private static final long serialVersionUID = 1L;
@@ -69,6 +70,32 @@
}
/**
+ * Creates new {@link ResourceReference} instance.
+ *
+ * @param scope
+ * mandatory parameter
+ * @param name
+ * mandatory parameter
+ * @param locale
+ * @param style
+ * @param variation
+ */
+ public ResourceReference(Class<?> scope, String name)
+ {
+ this(scope, name, null, null, null);
+ }
+
+ /**
+ * Construct.
+ *
+ * @param name
+ */
+ public ResourceReference(String name)
+ {
+ this(Application.class, name, null, null, null);
+ }
+
+ /**
* @return name
*/
public String getName()
@@ -144,5 +171,8 @@
*
* @return new resource instance
*/
- public abstract IResource getResource();
+ public IResource getResource()
+ {
+ return new PackageResource(getScope(), getName(), getLocale(), getStyle(), getVariation());
+ }
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceReferenceRegistry.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceReferenceRegistry.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceReferenceRegistry.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceReferenceRegistry.java Fri Jan 8 21:48:50 2010
@@ -174,6 +174,15 @@
}
}
+ private final ClassScanner scanner = new ClassScanner()
+ {
+ @Override
+ void foundResourceReference(ResourceReference reference)
+ {
+ registerResourceReference(reference);
+ }
+ };
+
/**
* Looks up resource reference with specified attributes. If the reference is not found and
* <code>strict</code> is set to <code>false</code>, result of
@@ -200,10 +209,15 @@
{
ResourceReference reference = getResourceReference(scope, name, locale, style, variation,
strict, false);
+
if (reference == null)
{
- // TODO: Check the class static member for ResourceReferences and register those
+ scanner.scanClass(scope);
}
+
+ // try again, it might have been registered by scanner; create default one if necessary
+ reference = getResourceReference(scope, name, locale, style, variation, strict, true);
+
return reference;
}
@@ -219,7 +233,6 @@
protected ResourceReference createDefaultResourceReference(Class<?> scope, String name,
Locale locale, String style, String variation)
{
- // override in superclass to e.g. return PackageResourceReference if there is one
- return null;
+ return new ResourceReference(scope, name, locale, style, variation);
}
}
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceStreamResource.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceStreamResource.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceStreamResource.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/resource/ResourceStreamResource.java Fri Jan 8 21:48:50 2010
@@ -67,6 +67,8 @@
{
ResourceData data = new ResourceData();
data.setLastModified(stream.lastModifiedTime().toDate());
+
+ // performance check; don't bother to do anything if the resource is still cached by client
if (!data.notModified(attributes))
{
InputStream inputStream = null;
Added: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/DummyRequestLogger.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/DummyRequestLogger.java?rev=897330&view=auto
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/DummyRequestLogger.java (added)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/DummyRequestLogger.java Fri Jan 8 21:48:50 2010
@@ -0,0 +1,88 @@
+/*
+ * 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.protocol.http;
+
+import java.util.List;
+
+import org.apache.wicket.IRequestHandler;
+
+// TODO (NG) DO something useful here
+public class DummyRequestLogger implements IRequestLogger
+{
+
+ public DummyRequestLogger()
+ {
+ }
+
+ public int getCurrentActiveRequestCount()
+ {
+ return 0;
+ }
+
+ public SessionData[] getLiveSessions()
+ {
+ return null;
+ }
+
+ public int getPeakSessions()
+ {
+ return 0;
+ }
+
+ public List<RequestData> getRequests()
+ {
+ return null;
+ }
+
+ public int getTotalCreatedSessions()
+ {
+ return 0;
+ }
+
+ public void logEventTarget(IRequestHandler target)
+ {
+ }
+
+ public void logResponseTarget(IRequestHandler target)
+ {
+ }
+
+ public void objectCreated(Object value)
+ {
+ }
+
+ public void objectRemoved(Object value)
+ {
+ }
+
+ public void objectUpdated(Object value)
+ {
+ }
+
+ public void requestTime(long timeTaken)
+ {
+ }
+
+ public void sessionCreated(String id)
+ {
+ }
+
+ public void sessionDestroyed(String sessionId)
+ {
+ }
+
+}
Propchange: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/DummyRequestLogger.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java Fri Jan 8 21:48:50 2010
@@ -16,12 +16,14 @@
*/
package org.apache.wicket.protocol.http;
+import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
+import org.apache.wicket.IClusterable;
import org.apache.wicket.IRequestHandler;
-import org.apache.wicket.protocol.http.RequestLogger.RequestData;
-import org.apache.wicket.protocol.http.RequestLogger.SessionData;
import org.apache.wicket.session.ISessionStore;
+import org.apache.wicket.util.string.AppendingStringBuffer;
/**
@@ -128,4 +130,298 @@
*/
public abstract void logEventTarget(IRequestHandler target);
+ /**
+ * This class hold the information one request of a session has.
+ *
+ * @author jcompagner
+ */
+ public static class SessionData implements IClusterable, Comparable<SessionData>
+ {
+ private static final long serialVersionUID = 1L;
+
+ private final String sessionId;
+ private final long startDate;
+ private long lastActive;
+ private long numberOfRequests;
+ private long totalTimeTaken;
+ private long sessionSize;
+ private Object sessionInfo;
+
+ /**
+ * Construct.
+ *
+ * @param sessionId
+ */
+ public SessionData(String sessionId)
+ {
+ this.sessionId = sessionId;
+ startDate = System.currentTimeMillis();
+ numberOfRequests = 1;
+ }
+
+ /**
+ * @return The last active date.
+ */
+ public Date getLastActive()
+ {
+ return new Date(lastActive);
+ }
+
+ /**
+ * @return The start date of this session
+ */
+ public Date getStartDate()
+ {
+ return new Date(startDate);
+ }
+
+ /**
+ * @return The number of request for this session
+ */
+ public long getNumberOfRequests()
+ {
+ return numberOfRequests;
+ }
+
+ /**
+ * @return Returns the session size.
+ */
+ public long getSessionSize()
+ {
+ return sessionSize;
+ }
+
+ /**
+ * @return Returns the total time this session has spent.
+ */
+ public long getTotalTimeTaken()
+ {
+ return totalTimeTaken;
+ }
+
+ /**
+ * @return The session info object given by the {@link ISessionLogInfo#getSessionInfo()}
+ * session method.
+ */
+ public Object getSessionInfo()
+ {
+ return sessionInfo;
+ }
+
+ /**
+ * @return The session id
+ */
+ public String getSessionId()
+ {
+ return sessionId;
+ }
+
+ void addTimeTaken(long time)
+ {
+ lastActive = System.currentTimeMillis();
+ numberOfRequests++;
+ totalTimeTaken += time;
+ }
+
+ void setSessionInfo(Object sessionInfo)
+ {
+ this.sessionInfo = sessionInfo;
+ }
+
+ void setSessionSize(long size)
+ {
+ sessionSize = size;
+ }
+
+ public int compareTo(SessionData sd)
+ {
+ return (int)(sd.lastActive - lastActive);
+ }
+
+ }
+
+
+ /**
+ * This class hold the information one request of a session has.
+ *
+ * @author jcompagner
+ */
+ public static class RequestData implements IClusterable
+ {
+ private static final long serialVersionUID = 1L;
+
+ private long startDate;
+ private long timeTaken;
+ private final List<String> entries = new ArrayList<String>(5);
+ private String eventTarget;
+ private String responseTarget;
+
+ private String sessionId;
+
+ private long totalSessionSize;
+
+ private Object sessionInfo;
+
+ private int activeRequest;
+
+ /**
+ * @return The time taken for this request
+ */
+ public Long getTimeTaken()
+ {
+ return new Long(timeTaken);
+ }
+
+ /**
+ * @param activeRequest
+ * The number of active request when this request happened
+ */
+ public void setActiveRequest(int activeRequest)
+ {
+ this.activeRequest = activeRequest;
+ }
+
+ /**
+ * @return The number of active request when this request happened
+ */
+ public int getActiveRequest()
+ {
+ return activeRequest;
+ }
+
+ /**
+ * @return The session object info, created by {@link ISessionLogInfo#getSessionInfo()}
+ */
+ public Object getSessionInfo()
+ {
+ return sessionInfo;
+ }
+
+ /**
+ * Set the session info object of the session for this request.
+ *
+ * @param sessionInfo
+ */
+ public void setSessionInfo(Object sessionInfo)
+ {
+ this.sessionInfo = sessionInfo;
+ }
+
+ /**
+ * @param sizeInBytes
+ */
+ public void setSessionSize(long sizeInBytes)
+ {
+ totalSessionSize = sizeInBytes;
+ }
+
+ /**
+ * @param id
+ */
+ public void setSessionId(String id)
+ {
+ sessionId = id;
+ }
+
+ /**
+ * @return The time taken for this request
+ */
+ public Date getStartDate()
+ {
+ return new Date(startDate);
+ }
+
+ /**
+ * @return The event target string
+ */
+ public String getEventTarget()
+ {
+ return eventTarget;
+ }
+
+ /**
+ * @return The response target string
+ */
+ public String getResponseTarget()
+ {
+ return responseTarget;
+ }
+
+ /**
+ * @param target
+ */
+ public void addResponseTarget(String target)
+ {
+ responseTarget = target;
+ }
+
+ /**
+ * @param target
+ */
+ public void addEventTarget(String target)
+ {
+ eventTarget = target;
+ }
+
+ /**
+ * @param timeTaken
+ */
+ public void setTimeTaken(long timeTaken)
+ {
+ this.timeTaken = timeTaken;
+ startDate = System.currentTimeMillis() - timeTaken;
+ }
+
+ /**
+ * @param string
+ */
+ public void addEntry(String string)
+ {
+ entries.add(string);
+ }
+
+ /**
+ * @return All entries of the objects that are created/updated or removed in this request
+ */
+ public String getAlteredObjects()
+ {
+ AppendingStringBuffer sb = new AppendingStringBuffer();
+ for (int i = 0; i < entries.size(); i++)
+ {
+ String element = entries.get(i);
+ sb.append(element);
+ if (entries.size() != i + 1)
+ {
+ sb.append("<br/>");
+ }
+ }
+ return sb.toString();
+ }
+
+ /**
+ * @return The session id for this request
+ */
+ public String getSessionId()
+ {
+ return sessionId;
+ }
+
+ /**
+ * @return The total session size.
+ */
+ public Long getSessionSize()
+ {
+ return new Long(totalSessionSize);
+ }
+
+ @Override
+ public String toString()
+ {
+ return "Request[timetaken=" + getTimeTaken() + ",sessioninfo=" + sessionInfo +
+ ",sessionid=" + sessionId + ",sessionsize=" + totalSessionSize + ",request=" +
+ eventTarget + ",response=" + responseTarget + ",alteredobjects=" +
+ getAlteredObjects() + ",activerequest=" + activeRequest + "]";
+ }
+ }
+
}
\ No newline at end of file
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/IRequestCycleSettings.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/IRequestCycleSettings.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/IRequestCycleSettings.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/IRequestCycleSettings.java Fri Jan 8 21:48:50 2010
@@ -22,8 +22,6 @@
import org.apache.wicket.Session;
import org.apache.wicket.markup.html.pages.BrowserInfoPage;
import org.apache.wicket.ng.request.cycle.RequestCycle;
-import org.apache.wicket.protocol.http.WebRequestCycle;
-import org.apache.wicket.request.target.component.BookmarkableListenerInterfaceRequestTarget;
import org.apache.wicket.settings.IExceptionSettings.UnexpectedExceptionDisplay;
import org.apache.wicket.util.time.Duration;
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/IResourceSettings.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/IResourceSettings.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/IResourceSettings.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/settings/IResourceSettings.java Fri Jan 8 21:48:50 2010
@@ -22,7 +22,6 @@
import org.apache.wicket.Localizer;
import org.apache.wicket.javascript.IJavascriptCompressor;
import org.apache.wicket.markup.html.IPackageResourceGuard;
-import org.apache.wicket.markup.html.JavascriptPackageResource;
import org.apache.wicket.markup.html.PackageResourceGuard;
import org.apache.wicket.model.IModel;
import org.apache.wicket.resource.IPropertiesFactory;
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java?rev=897330&r1=897329&r2=897330&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseExceptionsTest.java Fri Jan 8 21:48:50 2010
@@ -81,7 +81,7 @@
tester.getWicketSession().invalidateNow();
// Invoke the call back URL of the ajax event behavior
- String callbackUrl = ((AjaxEventBehavior)link.getBehaviors().get(0)).getCallbackUrl(true)
+ String callbackUrl = ((AjaxEventBehavior)link.getBehaviors().get(0)).getCallbackUrl()
.toString();
tester.getServletRequest().setURL(callbackUrl);