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 2008/08/21 03:20:38 UTC
svn commit: r687532 - in
/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng:
AjaxNGBehavior.java request/AjaxNGUrlCodingStrategy.java
Author: knopp
Date: Wed Aug 20 18:20:38 2008
New Revision: 687532
URL: http://svn.apache.org/viewvc?rev=687532&view=rev
Log:
More stuff
Modified:
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxNGBehavior.java
wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/request/AjaxNGUrlCodingStrategy.java
Modified: wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxNGBehavior.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxNGBehavior.java?rev=687532&r1=687531&r2=687532&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxNGBehavior.java (original)
+++ wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/AjaxNGBehavior.java Wed Aug 20 18:20:38 2008
@@ -124,14 +124,17 @@
res.append("{");
- res.append("p:'");
+ res.append("p:'");
Page page = component.getPage();
- res.append(page.getNumericId());
- if (page.getCurrentVersionNumber() != 0)
+ if (page.getPageMapName() != null)
{
+ res.append(page.getPageMapName());
res.append(":");
- res.append(page.getCurrentVersionNumber());
}
+ res.append(page.getNumericId());
+ res.append(":");
+ res.append(page.getCurrentVersionNumber());
+
res.append("'");
Modified: wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/request/AjaxNGUrlCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/request/AjaxNGUrlCodingStrategy.java?rev=687532&r1=687531&r2=687532&view=diff
==============================================================================
--- wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/request/AjaxNGUrlCodingStrategy.java (original)
+++ wicket/sandbox/knopp/experimental/wicket/src/main/java/org/apache/wicket/ajaxng/request/AjaxNGUrlCodingStrategy.java Wed Aug 20 18:20:38 2008
@@ -18,6 +18,9 @@
import org.apache.wicket.Component;
import org.apache.wicket.IRequestTarget;
+import org.apache.wicket.Page;
+import org.apache.wicket.Session;
+import org.apache.wicket.Component.IVisitor;
import org.apache.wicket.request.RequestParameters;
import org.apache.wicket.request.target.coding.IRequestTargetUrlCodingStrategy;
@@ -27,26 +30,97 @@
public class AjaxNGUrlCodingStrategy implements IRequestTargetUrlCodingStrategy
{
private final String mountPath;
-
+
public AjaxNGUrlCodingStrategy(String mountPath)
{
this.mountPath = mountPath;
}
+
+ private String getParameter(RequestParameters parameters, String key)
+ {
+ Object o = parameters.getParameters().get(key);
+ if (o instanceof String[])
+ {
+ return ((String[])o)[0];
+ }
+ else
+ {
+ return null;
+ }
+ }
+ private Page getPage(RequestParameters parameters)
+ {
+ String page = getParameter(parameters, PARAM_PAGE_ID);
+ String elements[] = page.split(":");
+ int pageId;
+ String pageMapName = null;
+ int version = 0;
+ if (elements.length == 2)
+ {
+ pageId = Integer.valueOf(elements[0]);
+ version = Integer.valueOf(elements[1]);
+ }
+ else if (elements.length == 3)
+ {
+ pageMapName = elements[0];
+ pageId = Integer.valueOf(elements[1]);
+ version = Integer.valueOf(elements[2]);
+ }
+ else
+ {
+ throw new IllegalStateException("Couldn't parse pageID '" + page + "'");
+ }
+ return Session.get().getPage(pageMapName, "" + pageId, version);
+ }
+
private Component getComponent(RequestParameters parameters)
{
+ Page page = getPage(parameters);
+
+ if (page != null)
+ {
+ final String componentId = getParameter(parameters, PARAM_COMPONENT_ID);
+ if (componentId == null)
+ {
+ return page;
+ }
+ else
+ {
+ return (Component)page.visitChildren(new IVisitor<Component>()
+ {
+ public Object component(Component component)
+ {
+ if (componentId.equals(component.getMarkupId(false)))
+ {
+ return component;
+ }
+ return CONTINUE_TRAVERSAL;
+ }
+ });
+ }
+ }
+
return null;
- //String page = parameters.getParameters().get(PARAM_PAGE_ID);
}
public IRequestTarget decode(RequestParameters requestParameters)
{
- return AjaxNGRequestTarget.DUMMY;
- }
+ Component component = getComponent(requestParameters);
+ if (component == null)
+ {
+ throw new IllegalStateException("Couldn't find component with id '" +
+ getParameter(requestParameters, PARAM_COMPONENT_ID) + "'.");
+ }
+
+ int behaviorIndex = Integer.valueOf(getParameter(requestParameters, PARAM_BEHAVIOR_INDEX));
+
+ return new AjaxNGRequestTarget(component, behaviorIndex);
+ }
public CharSequence encode(IRequestTarget requestTarget)
{
- // we need this as the prefix for the ajax configuration
+ // we need this as the prefix for the ajax configuration
return getMountPath();
}
@@ -54,8 +128,8 @@
{
return mountPath;
}
-
- private static final String PARAM_PREFIX = "wicket:";
+
+ private static final String PARAM_PREFIX = "wicketNG:";
public static final String PARAM_TIMESTAMP = PARAM_PREFIX + "timestamp";
public static final String PARAM_COMPONENT_ID = PARAM_PREFIX + "componentId";
public static final String PARAM_PAGE_ID = PARAM_PREFIX + "pageId";