any plans to port to trunk also? -igor
On Wed, May 13, 2009 at 7:04 AM, <[email protected]> wrote: > Author: jcompagner > Date: Wed May 13 14:04:48 2009 > New Revision: 774373 > > URL: http://svn.apache.org/viewvc?rev=774373&view=rev > Log: > url compressing fix incombination with > BookmarkableListenerInterfaceRequestTarget > > Modified: > > wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressingWebCodingStrategy.java > > wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressor.java > > Modified: > wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressingWebCodingStrategy.java > URL: > http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressingWebCodingStrategy.java?rev=774373&r1=774372&r2=774373&view=diff > ============================================================================== > --- > wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressingWebCodingStrategy.java > (original) > +++ > wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressingWebCodingStrategy.java > Wed May 13 14:04:48 2009 > @@ -26,8 +26,11 @@ > import org.apache.wicket.markup.html.WebPage; > import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy; > import org.apache.wicket.request.RequestParameters; > +import > org.apache.wicket.request.target.component.BookmarkableListenerInterfaceRequestTarget; > +import > org.apache.wicket.request.target.component.IBookmarkablePageRequestTarget; > import > org.apache.wicket.request.target.component.listener.IListenerInterfaceRequestTarget; > import org.apache.wicket.util.string.AppendingStringBuffer; > +import org.apache.wicket.util.string.Strings; > > > /** > @@ -138,4 +141,67 @@ > } > return requestCycle.getOriginalResponse().encodeURL(url); > } > + > + protected CharSequence encode(RequestCycle requestCycle, > + IBookmarkablePageRequestTarget requestTarget) > + { > + if (requestTarget instanceof > BookmarkableListenerInterfaceRequestTarget && > + requestTarget.getPageParameters().containsKey( > + > WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME)) > + { > + BookmarkableListenerInterfaceRequestTarget t = > (BookmarkableListenerInterfaceRequestTarget)requestTarget; > + Page page = t.getPage(); > + int version = page.getCurrentVersionNumber(); > + String componentPath = t.getComponentPath(); > + String interfaceName = t.getInterfaceName(); > + String pageMapName = t.getPageMapName(); > + > + // add the wicket:interface param to the params. > + // > pagemap:(pageid:componenta:componentb:...):version:interface:behavior:urlDepth > + AppendingStringBuffer param = new > AppendingStringBuffer(4 + componentPath.length() + > + interfaceName.length()); > + if (pageMapName != null) > + { > + param.append(pageMapName); > + } > + param.append(Component.PATH_SEPARATOR); > + // Add path to component > + if (page instanceof WebPage && > !"IResourceListener".equals(interfaceName)) > + { > + param.append(page.getId()); > + Component comp = > page.get(Strings.afterFirstPathComponent(componentPath, > + Component.PATH_SEPARATOR)); > + param.append(Component.PATH_SEPARATOR); > + > param.append(((WebPage)page).getUrlCompressor().getUIDForComponentAndInterface( > + comp, interfaceName)); > + interfaceName = null; > + } > + else > + { > + param.append(componentPath); > + } > + param.append(Component.PATH_SEPARATOR); > + if (version != 0) > + { > + param.append(version); > + } > + // Interface > + param.append(Component.PATH_SEPARATOR); > + // Add listener interface > + if (interfaceName != null && > + > !IRedirectListener.INTERFACE.getName().equals(interfaceName)) > + { > + param.append(interfaceName); > + } > + > + // Behavior (none) > + param.append(Component.PATH_SEPARATOR); > + > + // URL depth (not required) > + param.append(Component.PATH_SEPARATOR); > + > t.getPageParameters().put(WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME, > + param.toString()); > + } > + return super.encode(requestCycle, requestTarget); > + } > } > > Modified: > wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressor.java > URL: > http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressor.java?rev=774373&r1=774372&r2=774373&view=diff > ============================================================================== > --- > wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressor.java > (original) > +++ > wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/request/urlcompressing/UrlCompressor.java > Wed May 13 14:04:48 2009 > @@ -25,6 +25,8 @@ > import org.apache.wicket.IClusterable; > import org.apache.wicket.util.collections.IntHashMap; > import org.apache.wicket.util.collections.IntHashMap.Entry; > +import org.slf4j.Logger; > +import org.slf4j.LoggerFactory; > > > /** > @@ -49,6 +51,9 @@ > */ > public class UrlCompressor implements IClusterable > { > + /** Log. */ > + private static final Logger log = > LoggerFactory.getLogger(UrlCompressor.class); > + > /** > * @author jcompagner > */ > @@ -119,9 +124,17 @@ > { > directComponentRefs.remove(ref.uid); > } > - int uid = Integer.parseInt(uidString); > - ComponentAndInterface cai = > (ComponentAndInterface)directComponentRefs.get(uid); > - return cai; > + try > + { > + int uid = Integer.parseInt(uidString); > + ComponentAndInterface cai = > (ComponentAndInterface)directComponentRefs.get(uid); > + return cai; > + } > + catch (Exception e) > + { > + log.warn("cant decompress Component/Interface from '" > + uidString + "'", e); > + } > + return null; > } > > /** > > >
