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