Author: ivaynberg
Date: Sat Oct 30 04:18:44 2010
New Revision: 1028987
URL: http://svn.apache.org/viewvc?rev=1028987&view=rev
Log:
Issue: WICKET-3142
Added:
wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/InvalidBehaviorIdException.java
(with props)
Modified:
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/PageInstanceMapper.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/BehaviorRequestTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/BehaviorUrlTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/MockComponent.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult-1.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIndexTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java
Modified:
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java
(original)
+++
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/info/ComponentInfo.java
Sat Oct 30 04:18:44 2010
@@ -69,7 +69,7 @@ public class ComponentInfo
private final String listenerInterface;
private final String componentPath;
- private final Integer behaviorIndex;
+ private final Integer behaviorId;
private final Integer renderCount;
/**
@@ -78,17 +78,17 @@ public class ComponentInfo
* @param renderCount
* @param listenerInterface
* @param componentPath
- * @param behaviorIndex
+ * @param behaviorId
*/
public ComponentInfo(Integer renderCount, String listenerInterface,
String componentPath,
- Integer behaviorIndex)
+ Integer behaviorId)
{
Args.notEmpty(listenerInterface, "listenerInterface");
Args.notNull(componentPath, "componentPath");
this.listenerInterface = listenerInterface;
this.componentPath = componentPath;
- this.behaviorIndex = behaviorIndex;
+ this.behaviorId = behaviorId;
this.renderCount = renderCount;
}
@@ -111,9 +111,9 @@ public class ComponentInfo
/**
* @return behavior index
*/
- public Integer getBehaviorIndex()
+ public Integer getBehaviorId()
{
- return behaviorIndex;
+ return behaviorId;
}
/**
@@ -141,10 +141,10 @@ public class ComponentInfo
result.append(listenerInterface);
- if (behaviorIndex != null)
+ if (behaviorId != null)
{
result.append(BEHAVIOR_INDEX_SEPARATOR);
- result.append(behaviorIndex);
+ result.append(behaviorId);
}
result.append(SEPARATOR);
result.append(encodeComponentPath(componentPath));
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Sat Oct
30 04:18:44 2010
@@ -30,6 +30,7 @@ import org.apache.wicket.authorization.A
import org.apache.wicket.authorization.IAuthorizationStrategy;
import org.apache.wicket.authorization.UnauthorizedActionException;
import org.apache.wicket.behavior.IBehavior;
+import org.apache.wicket.behavior.InvalidBehaviorIdException;
import org.apache.wicket.event.Broadcast;
import org.apache.wicket.event.IEvent;
import org.apache.wicket.event.IEventSink;
@@ -235,6 +236,12 @@ public abstract class Component
private static final long serialVersionUID = 1L;
+ /** metadata key that stores stable ids for behavior - ids are used
when generating a url, etc */
+ private static MetaDataKey<ArrayList<IBehavior>> BEHAVIOR_IDS = new
MetaDataKey<ArrayList<IBehavior>>()
+ {
+ private static final long serialVersionUID = 1L;
+ };
+
/**
* Action used with IAuthorizationStrategy to determine whether a
component is allowed to be
* enabled.
@@ -596,27 +603,6 @@ public abstract class Component
}
}
- private boolean data_can_remove(int index)
- {
- int len = data_length();
- for (int j = index + 1; j < len; j++)
- {
- if (data_get(j) instanceof IRequestListener)
- {
- return false;
- }
- }
- return true;
- }
-
- /**
- * WARNING: CALL THIS METHOD ONLY IF {...@link #data_can_remove(int)}
HAS RETURNED {...@code true},
- * OTHERWISE USE {...@link #data_set(int, Object)} TO SET THE VALUE TO
{...@code null} OR SOMETHING
- * MORE APPROPRIATE FOR THE USECASE
- *
- * @param position
- * @return {...@code true} if the item can be removed
- */
private Object data_remove(int position)
{
int currentLength = data_length();
@@ -1072,29 +1058,21 @@ public abstract class Component
data_add(behavior);
}
- /**
- * FOR INTERNAL USE ONLY
- *
- * @return unmodified list of behaviors which may contain null entries
- */
- public final List<? extends IBehavior> getBehaviorsRawList()
+ private final List<? extends IBehavior> getBehaviorsRawList()
{
if (data != null)
{
// if the model is set, we must skip it
+ final int startIndex = getFlag(FLAG_MODEL_SET) ? 1 : 0;
int length = data_length();
- if (length > 0)
+ if (length > startIndex)
{
final ArrayList<IBehavior> result = new
ArrayList<IBehavior>();
- for (int i = 0; i < length; ++i)
+ for (int i = startIndex; i < length; ++i)
{
Object o = data_get(i);
- if (o == null || !(o instanceof
IBehavior))
- {
- result.add((IBehavior)null);
- }
- else
+ if (o == null || o instanceof IBehavior)
{
result.add((IBehavior)o);
}
@@ -1755,20 +1733,6 @@ public abstract class Component
return key.get(getMetaData());
}
- private int getMetaDataIndex()
- {
- int start = getFlag(FLAG_MODEL_SET) ? 1 : 0;
- for (int i = start; i < data_length(); i++)
- {
- Object object = data_get(i);
- if (object instanceof MetaDataEntry<?>[] || object
instanceof MetaDataEntry)
- {
- return i;
- }
- }
- return -1;
- }
-
/**
*
* @return meta data entry
@@ -1778,9 +1742,11 @@ public abstract class Component
MetaDataEntry<?>[] metaData = null;
// index where we should expect the entry
- int index = getMetaDataIndex();
+ int index = getFlag(FLAG_MODEL_SET) ? 1 : 0;
- if (index >= 0)
+ int length = data_length();
+
+ if (index < length)
{
Object object = data_get(index);
if (object instanceof MetaDataEntry<?>[])
@@ -2473,44 +2439,31 @@ public abstract class Component
*/
private boolean removeBehavior(final IBehavior behavior)
{
- final int start = getFlag(FLAG_MODEL_SET) ? 1 : 0;
final int len = data_length();
- for (int i = start; i < len; ++i)
+ for (int i = 0; i < len; i++)
{
Object o = data_get(i);
if (o != null && o.equals(behavior))
{
- // behaviors that produce urls depend on their
index in the behaviors list,
- // therefore we cannot blindly shrink the array
by removing this behavior's slot.
- // Instead we check if there are any behaviors
downstream that will be affected by
- // this, and if there are we set this
behavior's slot to null instead of removing it
- // to preserve indexes of behaviors downstream.
+ data_remove(i);
+ behavior.unbind(this);
- if (!data_can_remove(i))
+ // remove behavior from behavior-ids metadata
+ ArrayList<IBehavior> ids =
getMetaData(BEHAVIOR_IDS);
+ if (ids != null)
{
- data_set(i, null);
- }
- else
- {
- data_remove(i);
-
- if (o instanceof IRequestListener)
+ int idx = ids.indexOf(behavior);
+ if (idx == ids.size() - 1)
{
- // this was a listener which
mightve caused holes in the array, see if we
- // can clean them up. notice:
at this point we already know there are no
- // listeners that can be
affected by index change downstream because this is
- // the last one in the array
- for (int j = i - 1; j >= start;
j--)
- {
- if (data_get(j) == null)
- {
- data_remove(j);
- }
- }
+ ids.remove(idx);
+ }
+ else if (idx >= 0)
+ {
+ ids.set(idx, null);
}
+ ids.trimToSize();
+ return true;
}
- behavior.unbind(this);
- return true;
}
}
return false;
@@ -3057,7 +3010,6 @@ public abstract class Component
*/
public final <M> void setMetaData(final MetaDataKey<M> key, final M
object)
{
- int index = getMetaDataIndex();
MetaDataEntry<?>[] old = getMetaData();
Object metaData = null;
@@ -3067,9 +3019,11 @@ public abstract class Component
metaData = (metaDataArray.length > 1) ?
(Object)metaDataArray : metaDataArray[0];
}
+ int index = getFlag(FLAG_MODEL_SET) ? 1 : 0;
+
if (old == null && metaData != null)
{
- data_add(metaData);
+ data_insert(index, metaData);
}
else if (old != null && metaData != null)
{
@@ -3077,15 +3031,7 @@ public abstract class Component
}
else if (old != null && metaData == null)
{
- if (data_can_remove(index))
- {
- data_remove(index);
- }
- else
- {
- data_set(index, null);
- }
-
+ data_remove(index);
}
}
@@ -3156,15 +3102,8 @@ public abstract class Component
}
else
{
- if (data_can_remove(0))
- {
- data_remove(0);
- setFlag(FLAG_MODEL_SET, false);
- }
- else
- {
- data_set(0, null);
- }
+ data_remove(0);
+ setFlag(FLAG_MODEL_SET, false);
}
}
else
@@ -3447,15 +3386,15 @@ public abstract class Component
final RequestListenerInterface listener)
{
PageAndComponentProvider provider = new
PageAndComponentProvider(getPage(), this);
- int index = getBehaviorsRawList().indexOf(behaviour);
+ int id = getBehaviorId(behaviour);
IRequestHandler handler;
if (getPage().isPageStateless())
{
- handler = new
BookmarkableListenerInterfaceRequestHandler(provider, listener, index);
+ handler = new
BookmarkableListenerInterfaceRequestHandler(provider, listener, id);
}
else
{
- handler = new ListenerInterfaceRequestHandler(provider,
listener, index);
+ handler = new ListenerInterfaceRequestHandler(provider,
listener, id);
}
return getRequestCycle().urlFor(handler);
}
@@ -4554,4 +4493,69 @@ public abstract class Component
new ComponentEventSender(this).send(sink, type, payload);
}
+ /** {...@inheritdoc} */
+ public final IBehavior getBehaviorById(int id)
+ {
+ IBehavior behavior = null;
+
+ ArrayList<IBehavior> ids = getMetaData(BEHAVIOR_IDS);
+ if (ids != null)
+ {
+ if (id >= 0 && id < ids.size())
+ {
+ behavior = ids.get(id);
+ }
+ }
+
+ if (behavior != null)
+ {
+ return behavior;
+ }
+ throw new InvalidBehaviorIdException(this, id);
+ }
+
+ /** {...@inheritdoc} */
+ public final int getBehaviorId(IBehavior behavior)
+ {
+ if (!getBehaviorsRawList().contains(behavior))
+ {
+ throw new IllegalStateException(
+ "Behavior must be added to component before its
id can be generated. Behavior: " +
+ behavior + ", Component: " + this);
+ }
+
+ ArrayList<IBehavior> ids = getMetaData(BEHAVIOR_IDS);
+
+ if (ids == null)
+ {
+ ids = new ArrayList<IBehavior>(1);
+ setMetaData(BEHAVIOR_IDS, ids);
+ }
+
+ int id = ids.indexOf(behavior);
+
+ if (id < 0)
+ {
+ // try to find an unused slot
+ for (int i = 0; i < ids.size(); i++)
+ {
+ if (ids.get(i) == null)
+ {
+ ids.set(i, behavior);
+ id = i;
+ }
+ }
+ }
+
+ if (id < 0)
+ {
+ // no unused slots, add to the end
+ id = ids.size();
+ ids.add(behavior);
+ ids.trimToSize();
+ }
+
+ return id;
+ }
+
}
Added:
wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/InvalidBehaviorIdException.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/InvalidBehaviorIdException.java?rev=1028987&view=auto
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/InvalidBehaviorIdException.java
(added)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/InvalidBehaviorIdException.java
Sat Oct 30 04:18:44 2010
@@ -0,0 +1,62 @@
+/*
+ * 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.behavior;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.WicketRuntimeException;
+
+/**
+ * Thrown when a behavior with an invalid id is requested
+ *
+ * @author ivaynberg (Igor Vaynberg)
+ */
+public class InvalidBehaviorIdException extends WicketRuntimeException
+{
+ private static final long serialVersionUID = 1L;
+
+ private final Component component;
+ private final int behaviorId;
+
+ /**
+ * Constructor
+ *
+ * @param component
+ * @param behaviorId
+ */
+ public InvalidBehaviorIdException(Component component, int behaviorId)
+ {
+ super("Cannot find behavior with id: " + behaviorId + " on
component: " + component);
+ this.component = component;
+ this.behaviorId = behaviorId;
+ }
+
+ /**
+ * @return component which was thought to contain the behavior
+ */
+ public Component getComponent()
+ {
+ return component;
+ }
+
+ /**
+ * @return behavior id
+ */
+ public int getBehaviorId()
+ {
+ return behaviorId;
+ }
+}
Propchange:
wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/InvalidBehaviorIdException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/component/IRequestableComponent.java
Sat Oct 30 04:18:44 2010
@@ -16,10 +16,9 @@
*/
package org.apache.wicket.request.component;
-import java.util.List;
-
import org.apache.wicket.Component;
import org.apache.wicket.behavior.IBehavior;
+import org.apache.wicket.behavior.InvalidBehaviorIdException;
import org.apache.wicket.model.IDetachable;
/**
@@ -69,16 +68,23 @@ public interface IRequestableComponent
public boolean canCallListenerInterface();
/**
- * Gets the currently coupled {...@link IBehavior}s as a unmodifiable
list. Returns an empty list
- * rather than null if there are no behaviors coupled to this component.
+ * Gets a stable id for the specified behavior. The id remains stable
from the point this method
+ * is first called for the behavior until the behavior has been removed
from the component
*
- * NOTE: the list of behaviors is used to keep the index of the
behavior in the url, which means
- * the list returned should preserve the index. Eg, removal of items
from the list should not be
- * allowed, a removed item should instead be marked by a value such as
{...@code null}.
+ * @param behavior
+ * @return
+ */
+ public int getBehaviorId(IBehavior behavior);
+
+ /**
+ * Gets the behavior for the specified id
*
- * @return The currently coupled behaviors as a unmodifiable list
+ * @param id
+ * @return behavior or {...@code null} if none
+ * @throws InvalidBehaviorIdException
+ * when behavior with this id cannot be found
*/
- public List<? extends IBehavior> getBehaviorsRawList();
+ public IBehavior getBehaviorById(int id);
/**
* Detaches the component.
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
Sat Oct 30 04:18:44 2010
@@ -41,7 +41,7 @@ public class ListenerInterfaceRequestHan
private final RequestListenerInterface listenerInterface;
- private final Integer behaviorIndex;
+ private final Integer behaviorId;
/**
* Construct.
@@ -58,7 +58,7 @@ public class ListenerInterfaceRequestHan
this.pageComponentProvider = pageComponentProvider;
this.listenerInterface = listenerInterface;
- this.behaviorIndex = behaviorIndex;
+ this.behaviorId = behaviorIndex;
}
/**
@@ -130,7 +130,7 @@ public class ListenerInterfaceRequestHan
*/
public Integer getBehaviorIndex()
{
- return behaviorIndex;
+ return behaviorId;
}
/**
@@ -187,17 +187,16 @@ public class ListenerInterfaceRequestHan
private void invokeListener()
{
- IRequestableComponent component = getComponent();
if (getBehaviorIndex() == null)
{
- listenerInterface.invoke(component);
+ listenerInterface.invoke(getComponent());
}
else
{
try
{
- IBehavior behavior =
component.getBehaviorsRawList().get(behaviorIndex);
- listenerInterface.invoke(component, behavior);
+ IBehavior behavior =
getComponent().getBehaviorById(behaviorId);
+ listenerInterface.invoke(getComponent(),
behavior);
}
catch (IndexOutOfBoundsException e)
{
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
Sat Oct 30 04:18:44 2010
@@ -182,7 +182,7 @@ public abstract class AbstractBookmarkab
provider.setPageSource(getContext());
return new ListenerInterfaceRequestHandler(provider,
listenerInterface,
- componentInfo.getBehaviorIndex());
+ componentInfo.getBehaviorId());
}
else
{
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/PageInstanceMapper.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/PageInstanceMapper.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/PageInstanceMapper.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/PageInstanceMapper.java
Sat Oct 30 04:18:44 2010
@@ -89,7 +89,7 @@ public class PageInstanceMapper extends
RequestListenerInterface
listenerInterface =
requestListenerInterfaceFromString(componentInfo.getListenerInterface());
return new
ListenerInterfaceRequestHandler(provider, listenerInterface,
-
componentInfo.getBehaviorIndex());
+ componentInfo.getBehaviorId());
}
}
}
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/BehaviorRequestTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/BehaviorRequestTest.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/BehaviorRequestTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/BehaviorRequestTest.java
Sat Oct 30 04:18:44 2010
@@ -62,7 +62,7 @@ public class BehaviorRequestTest extends
private String urlForBehavior(IBehavior behaviorUnderTest)
{
- int index =
page.container.getBehaviorsRawList().indexOf(behaviorUnderTest);
+ int index = page.container.getBehaviorId(behaviorUnderTest);
String enabledBehaviorUrl = tester.urlFor(
new ListenerInterfaceRequestHandler(new
PageAndComponentProvider(page, page.container),
IBehaviorListener.INTERFACE, index)).toString();
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/BehaviorUrlTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/BehaviorUrlTest.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/BehaviorUrlTest.java
(original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/BehaviorUrlTest.java
Sat Oct 30 04:18:44 2010
@@ -40,12 +40,12 @@ public class BehaviorUrlTest extends Tes
TestPage page = new TestPage();
- int indexBeforeRender =
page.container.getBehaviorsRawList().indexOf(page.callbackBehavior);
+ int indexBeforeRender =
page.container.getBehaviorId(page.callbackBehavior);
tester.startPage(page);
page = (TestPage)tester.getLastRenderedPage();
- int indexAfterRender =
page.container.getBehaviorsRawList().indexOf(page.callbackBehavior);
+ int indexAfterRender =
page.container.getBehaviorId(page.callbackBehavior);
assertEquals("index of behavior in the raw list should not have
changed",
indexBeforeRender, indexAfterRender);
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/MockComponent.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/MockComponent.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/MockComponent.java
(original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/MockComponent.java Sat
Oct 30 04:18:44 2010
@@ -16,9 +16,6 @@
*/
package org.apache.wicket;
-import java.util.Collections;
-import java.util.List;
-
import org.apache.wicket.behavior.IBehavior;
import org.apache.wicket.request.component.IRequestableComponent;
import org.apache.wicket.request.component.IRequestablePage;
@@ -139,11 +136,6 @@ public class MockComponent implements IR
return true;
}
- public List<IBehavior> getBehaviorsRawList()
- {
- return Collections.emptyList();
- }
-
public boolean isEnabledInHierarchy()
{
return false;
@@ -153,4 +145,14 @@ public class MockComponent implements IR
{
return false;
}
+
+ public int getBehaviorId(IBehavior behavior)
+ {
+ throw new IllegalArgumentException();
+ }
+
+ public IBehavior getBehaviorById(int id)
+ {
+ return null;
+ }
}
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
Sat Oct 30 04:18:44 2010
@@ -5,6 +5,6 @@
wicketAjaxDebugEnable=true;
/*-->]^]^>*/</script>
<script type="text/javascript"
id="wicket-ajax-base-url"><!--/*--><![CDATA[/*><!--*/
-Wicket.Ajax.baseUrl="wicket/page?0-1.IBehaviorListener.1-comp";
+Wicket.Ajax.baseUrl="wicket/page?0-1.IBehaviorListener.0-comp";
/*-->]^]^>*/</script>
-</head>]]></header-contribution><component id="comp1" ><![CDATA[<span
id="comp1" onclick="var
wcall=wicketAjaxGet('page?0-1.IBehaviorListener.1-comp',function() {
}.bind(this),function() { }.bind(this), function() {return Wicket.$('comp1') !=
null;}.bind(this));">body</span>]]></component></ajax-response>
\ No newline at end of file
+</head>]]></header-contribution><component id="comp1" ><![CDATA[<span
id="comp1" onclick="var
wcall=wicketAjaxGet('page?0-1.IBehaviorListener.0-comp',function() {
}.bind(this),function() { }.bind(this), function() {return Wicket.$('comp1') !=
null;}.bind(this));">body</span>]]></component></ajax-response>
\ No newline at end of file
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageExpectedResult.html
Sat Oct 30 04:18:44 2010
@@ -9,6 +9,6 @@ wicketAjaxDebugEnable=true;
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.TestDetachPage?0";
/*-->]]>*/</script>
</head><body>
- <span wicket:id="comp" id="comp1" onclick="var
wcall=wicketAjaxGet('../page?0-1.IBehaviorListener.1-comp',function() {
}.bind(this),function() { }.bind(this), function() {return Wicket.$('comp1') !=
null;}.bind(this));">body</span>
+ <span wicket:id="comp" id="comp1" onclick="var
wcall=wicketAjaxGet('../page?0-1.IBehaviorListener.0-comp',function() {
}.bind(this),function() { }.bind(this), function() {return Wicket.$('comp1') !=
null;}.bind(this));">body</span>
</body>
</html>
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult-1.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult-1.html?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult-1.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult-1.html
Sat Oct 30 04:18:44 2010
@@ -5,6 +5,6 @@
wicketAjaxDebugEnable=true;
/*-->]^]^>*/</script>
<script type="text/javascript"
id="wicket-ajax-base-url"><!--/*--><![CDATA[/*><!--*/
-Wicket.Ajax.baseUrl="wicket/page?0-1.IBehaviorListener.1-testPanel-baseSpan-linja1";
+Wicket.Ajax.baseUrl="wicket/page?0-1.IBehaviorListener.0-testPanel-baseSpan-linja1";
/*-->]^]^>*/</script>
-</head>]]></header-contribution><component id="linja11" ><![CDATA[<span
id="linja11">1</span>]]></component><evaluate><![CDATA[setTimeout("var
wcall=wicketAjaxGet('page?0-1.IBehaviorListener.1-testPanel-baseSpan-linja1',function()
{ }.bind(this),function() { }.bind(this), function() {var c =
Wicket.$('linja11'); return typeof(c) != 'undefined' && c !=
null}.bind(this));", 2000);]]></evaluate></ajax-response>
\ No newline at end of file
+</head>]]></header-contribution><component id="linja11" ><![CDATA[<span
id="linja11">1</span>]]></component><evaluate><![CDATA[setTimeout("var
wcall=wicketAjaxGet('page?0-1.IBehaviorListener.0-testPanel-baseSpan-linja1',function()
{ }.bind(this),function() { }.bind(this), function() {var c =
Wicket.$('linja11'); return typeof(c) != 'undefined' && c !=
null}.bind(this));", 2000);]]></evaluate></ajax-response>
\ No newline at end of file
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult.html?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/markup/html/componentMap/SimpleTestPageExpectedResult.html
Sat Oct 30 04:18:44 2010
@@ -11,7 +11,7 @@ wicketAjaxDebugEnable=true;
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.markup.html.componentMap.SimpleTestPage?0";
/*-->]]>*/</script>
<script type="text/javascript" ><!--/*--><![CDATA[/*><!--*/
-Wicket.Event.add(window, "load", function(event) { setTimeout("var
wcall=wicketAjaxGet('../page?0-1.IBehaviorListener.1-testPanel-baseSpan-linja1',function()
{ }.bind(this),function() { }.bind(this), function() {var c =
Wicket.$('linja11'); return typeof(c) != 'undefined' && c !=
null}.bind(this));", 2000);;});
+Wicket.Event.add(window, "load", function(event) { setTimeout("var
wcall=wicketAjaxGet('../page?0-1.IBehaviorListener.0-testPanel-baseSpan-linja1',function()
{ }.bind(this),function() { }.bind(this), function() {var c =
Wicket.$('linja11'); return typeof(c) != 'undefined' && c !=
null}.bind(this));", 2000);;});
/*-->]]>*/</script>
</head>
<body>
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIndexTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIndexTest.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIndexTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/behavior/ImmutableBehaviorIndexTest.java
Sat Oct 30 04:18:44 2010
@@ -63,8 +63,8 @@ public class ImmutableBehaviorIndexTest
assertTrue(output.contains("autocomplete=\"off\""));
assertTrue(output.contains("class2=\"border\""));
assertTrue(output.contains("autocomplete2=\"off\""));
- assertTrue(output.contains("IBehaviorListener.2"));
- assertTrue(output.contains("IBehaviorListener.4"));
+ assertTrue(output.contains("IBehaviorListener.0"));
+ assertTrue(output.contains("IBehaviorListener.1"));
// if we remove a behavior that is before the ibehaviorlistener
its url index should not
// change
@@ -75,9 +75,8 @@ public class ImmutableBehaviorIndexTest
page.getContainer().remove(auto2);
tester.startPage(page);
output = tester.getLastResponseAsString();
- System.out.println(output);
- assertTrue(output.contains("IBehaviorListener.2"));
- assertTrue(output.contains("IBehaviorListener.4"));
+ assertTrue(output.contains("IBehaviorListener.0"));
+ assertTrue(output.contains("IBehaviorListener.1"));
}
/**
@@ -95,7 +94,14 @@ public class ImmutableBehaviorIndexTest
MyPage page = new MyPage();
page.getContainer().add(border, auto, link, border2, link2,
auto2);
- List<? extends IBehavior> behaviors =
page.getContainer().getBehaviorsRawList();
+ int borderId = page.container.getBehaviorId(border);
+ int border2Id = page.container.getBehaviorId(border2);
+ int autoId = page.container.getBehaviorId(auto);
+ int auto2Id = page.container.getBehaviorId(auto2);
+ int linkId = page.container.getBehaviorId(link);
+ int link2Id = page.container.getBehaviorId(link2);
+
+ List<? extends IBehavior> behaviors =
page.getContainer().getBehaviors();
assertEquals(6, behaviors.size());
// test removal of various behaviors and make sure they
preserve indexes as long as there is
@@ -103,30 +109,31 @@ public class ImmutableBehaviorIndexTest
// border,auto,link,border2,link2,auto2
page.getContainer().remove(border);
- behaviors = page.getContainer().getBehaviorsRawList();
- assertEquals(6, behaviors.size());
- assertNull(behaviors.get(0));
+ behaviors = page.getContainer().getBehaviors();
+ assertEquals(5, behaviors.size());
+ assertEquals(autoId, page.container.getBehaviorId(auto));
+ assertEquals(link2Id, page.container.getBehaviorId(link2));
- // null,auto,link,border2,link2,auto2
+ // auto,link,border2,link2,auto2
page.getContainer().remove(link);
- behaviors = page.getContainer().getBehaviorsRawList();
- assertEquals(6, behaviors.size());
- assertNull(behaviors.get(0));
- assertNull(behaviors.get(2));
+ behaviors = page.getContainer().getBehaviors();
+ assertEquals(4, behaviors.size());
+ assertEquals(autoId, page.container.getBehaviorId(auto));
+ assertEquals(link2Id, page.container.getBehaviorId(link2));
- // null,auto,null,border2,link2,auto2
+ // auto,border2,link2,auto2
page.getContainer().remove(auto2);
- behaviors = page.getContainer().getBehaviorsRawList();
- assertEquals(5, behaviors.size());
- assertNull(behaviors.get(0));
- assertNull(behaviors.get(2));
+ behaviors = page.getContainer().getBehaviors();
+ assertEquals(3, behaviors.size());
+ assertEquals(autoId, page.container.getBehaviorId(auto));
+ assertEquals(link2Id, page.container.getBehaviorId(link2));
- // null,auto,null,border2,link2
+ // auto,border2,link2
page.getContainer().remove(link2); // last IBehaviorListener
- behaviors = page.getContainer().getBehaviorsRawList();
+ behaviors = page.getContainer().getBehaviors();
assertEquals(2, behaviors.size());
- assertSame(auto, behaviors.get(0));
- assertSame(border2, behaviors.get(1));
+ assertEquals(autoId, page.container.getBehaviorId(auto));
+ assertEquals(border2Id, page.container.getBehaviorId(border2));
}
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html
Sat Oct 30 04:18:44 2010
@@ -1,7 +1,7 @@
<? xml version= "1.0" encoding ="UTF-8" ?>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html wicket:id="html" xmlns:wicket="" xmlns="http://www.w3.org/1999/xhtml"
xmlns:lang="[current language]" lang="de" id="html1" onclick="var
wcall=wicketAjaxGet('../page?0-1.IBehaviorListener.1-html',function() {
}.bind(this),function() { }.bind(this), function() {return Wicket.$('html1') !=
null;}.bind(this));return !wcall;">
+<html wicket:id="html" xmlns:wicket="" xmlns="http://www.w3.org/1999/xhtml"
xmlns:lang="[current language]" lang="de" id="html1" onclick="var
wcall=wicketAjaxGet('../page?0-1.IBehaviorListener.0-html',function() {
}.bind(this),function() { }.bind(this), function() {return Wicket.$('html1') !=
null;}.bind(this));return !wcall;">
<head><link rel="stylesheet" type="text/css" href="../../BasePage.css" />
<script type="text/javascript"
src="../resource/org.apache.wicket.markup.html.WicketEventReference/wicket-event.js"></script>
<script type="text/javascript"
src="../resource/org.apache.wicket.ajax.WicketAjaxReference/wicket-ajax.js"></script>
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java?rev=1028987&r1=1028986&r2=1028987&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/info/ComponentInfoTest.java
Sat Oct 30 04:18:44 2010
@@ -44,7 +44,7 @@ public class ComponentInfoTest extends T
ComponentInfo info = ComponentInfo.parse(s);
assertEquals("listener", info.getListenerInterface());
assertEquals("component:path", info.getComponentPath());
- assertNull(info.getBehaviorIndex());
+ assertNull(info.getBehaviorId());
assertEquals(s, info.toString());
}
@@ -99,7 +99,7 @@ public class ComponentInfoTest extends T
ComponentInfo info = ComponentInfo.parse(s);
assertEquals("listener", info.getListenerInterface());
assertEquals("compo-nent:path", info.getComponentPath());
- assertNull(info.getBehaviorIndex());
+ assertNull(info.getBehaviorId());
assertEquals(s, info.toString());
}
@@ -113,7 +113,7 @@ public class ComponentInfoTest extends T
ComponentInfo info = ComponentInfo.parse(s);
assertEquals("listener", info.getListenerInterface());
assertEquals("co-mpo--nent:path", info.getComponentPath());
- assertNull(info.getBehaviorIndex());
+ assertNull(info.getBehaviorId());
assertEquals(s, info.toString());
}
@@ -127,7 +127,7 @@ public class ComponentInfoTest extends T
ComponentInfo info = ComponentInfo.parse(s);
assertEquals("listener", info.getListenerInterface());
assertEquals("component:path", info.getComponentPath());
- assertEquals((Object)12, info.getBehaviorIndex());
+ assertEquals((Object)12, info.getBehaviorId());
assertEquals(s, info.toString());
}
@@ -154,7 +154,7 @@ public class ComponentInfoTest extends T
ComponentInfo info = ComponentInfo.parse(s);
assertEquals("listener", info.getListenerInterface());
assertEquals((Integer)4, info.getRenderCount());
- assertEquals((Integer)5, info.getBehaviorIndex());
+ assertEquals((Integer)5, info.getBehaviorId());
assertEquals(s, info.toString());
}