Is there any drawback to using this in production?
On Oct 15, 2009, at 10:53 AM, Igor Vaynberg wrote: > see idebugsettings.setoutputcomponentpath, this will add > wicket:path='component's page relative path' attribute which is stable > as long as you do not change the hierarchy and can be used for writing > selenium tests. > > -igor > > On Thu, Oct 15, 2009 at 4:14 AM, Per Lundholm > <per.lundh...@gmail.com> wrote: >> 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 >> >> > > --------------------------------------------------------------------- > 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