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: [email protected]
For additional commands, e-mail: [email protected]