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

Reply via email to