Looks like a patch to make it easier to use Selenium to test your
webapplication.

Selenium is very fond of id in tags.

/Per

On Thu, Oct 15, 2009 at 9:58 AM, Daniel Frisk <dan...@jalbum.net> wrote:
> Ok, I'm lazy and couldn't decipher that code at a glance. What does it do?
>
> // Daniel
> jalbum.net
>
>
>
> On 2009-10-15, at 03:09, Douglas Ferguson wrote:
>
>> Has anybody seen this:
>>
>> http://www.onehippo.org/cms7/integration_testing.html
>>
>> Seems like a nice alternative vs. having to set markupIds on all
>> components.
>>
>> Thoughts?
>>
>> ............
>>
>> They have a patch for wicket:
>>
>>> Index: jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java
>>> ===================================================================
>>> *** jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java
>>> (revision 724306)
>>> --- jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java
>>> (working copy)
>>> ***************
>>> *** 1475,1478 ****
>>> --- 1475,1489 ----
>>>        {
>>>                return sequence++;
>>>        }
>>> +
>>> +       /**
>>> +        * Retrieves the next available session-unique value for the
>>> supplied Component
>>> +        *
>>> +        * @param component
>>> +        *            the component which requests the generation of a
>>> markup identifier
>>> +        * @return session-unique value
>>> +        */
>>> +       public Object getMarkupId(Component component) {
>>> +               return new Integer(nextSequenceValue());
>>> +       }
>>>  }
>>> Index: jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
>>> ===================================================================
>>> *** jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
>>> (revision 724306)
>>> --- jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java
>>> (working copy)
>>> ***************
>>> *** 1426,1437 ****
>>>                        return null;
>>>                }
>>>
>>> !               final int generatedMarkupId = storedMarkupId instanceof
>>> Integer
>>> !                       ? ((Integer)storedMarkupId).intValue() :
>>> Session.get
>>> ().nextSequenceValue();
>>> !
>>> !               if (storedMarkupId == null)
>>> !               {
>>> !                       setMarkupIdImpl(new Integer(generatedMarkupId));
>>>                }
>>>
>>>                // try to read from markup
>>> --- 1426,1445 ----
>>>                        return null;
>>>                }
>>>
>>> !               String markupIdPostfix;
>>> !               if (!(storedMarkupId instanceof Integer)) {
>>> !                       Object markupIdFromSession =
>>> Session.get().getMarkupId(this);
>>> !                       if (storedMarkupId == null && markupIdFromSession
>>> != null) {
>>> !                               setMarkupIdImpl(markupIdFromSession);
>>> !                       }
>>> !                       storedMarkupId = markupIdFromSession;
>>> !               }
>>> !               if (storedMarkupId instanceof Integer) {
>>> !                       markupIdPostfix = Integer.toHexString(((Integer)
>>> storedMarkupId).intValue()).toLowerCase();
>>> !               } else if (storedMarkupId instanceof String) {
>>> !                       return (String) storedMarkupId;
>>> !               } else {
>>> !                       markupIdPostfix = storedMarkupId.toString();
>>>                }
>>>
>>>                // try to read from markup
>>> ***************
>>> *** 1449,1455 ****
>>>                        markupIdPrefix = getId();
>>>                }
>>>
>>> -               String markupIdPostfix = Integer.toHexString
>>> (generatedMarkupId).toLowerCase();
>>>                markupIdPostfix = RequestContext.get().encodeMarkupId
>>> (markupIdPostfix);
>>>
>>>                String markupId = markupIdPrefix + markupIdPostfix;
>>> --- 1457,1462 ----
>>
>>
>> Then in their session, they return stable ids
>>
>>>   private Map<String,Integer> pluginComponentCounters = new
>>> HashMap<String,Integer>();
>>>
>>>   // Do not add the @Override annotation on this
>>>   public Object getMarkupId(Component component) {
>>>       String markupId = null;
>>>       for (Component ancestor=component.getParent(); ancestor!
>>> =null && markupId==null; ancestor=ancestor.getParent()) {
>>>           if (ancestor instanceof IPlugin || ancestor instanceof
>>> Home) {
>>>               markupId = ancestor.getMarkupId(true);
>>>               break;
>>>           }
>>>       }
>>>       if (markupId == null) {
>>>           return "root";
>>>       }
>>>       int componentNum = 0;
>>>       if (pluginComponentCounters.containsKey(markupId)) {
>>>           componentNum = pluginComponentCounters.get
>>> (markupId).intValue();
>>>       }
>>>       ++componentNum;
>>>       pluginComponentCounters.put(markupId, new Integer
>>> (componentNum));
>>>       return markupId + "_" + componentNum;
>>>   }
>>> }
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to