Author: julien(a)jboss.com
Date: 2008-02-07 13:01:50 -0500 (Thu, 07 Feb 2008)
New Revision: 9837
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/ParametersStateString.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/StateControllerContextImpl.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/AbstractPortletControllerContext.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java
Log:
- reuse Map<String,String[]> serialization in order to reduce now the public nav
state size in the URL
Modified:
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/ParametersStateString.java
===================================================================
---
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/ParametersStateString.java 2008-02-07
17:37:56 UTC (rev 9836)
+++
modules/portlet/trunk/portlet/src/main/java/org/jboss/portal/portlet/ParametersStateString.java 2008-02-07
18:01:50 UTC (rev 9837)
@@ -24,6 +24,7 @@
import org.jboss.portal.common.util.Base64;
import org.jboss.portal.common.util.ParameterMap;
+import org.jboss.portal.common.io.Serialization;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -151,19 +152,7 @@
private ParametersStateString(DataInputStream in) throws IOException
{
- int size = in.readInt();
- Map<String, String[]> tmp = new HashMap<String, String[]>(size);
- while (size-- > 0)
- {
- String name = in.readUTF();
- int length = in.readInt();
- String[] values = new String[length];
- for (int i = 0;i < length;i++)
- {
- values[i] = in.readUTF();
- }
- tmp.put(name, values);
- }
+ Map<String, String[]> tmp = Serialization.PARAMETER_MAP.unserialize(in);
//
parameters = ParameterMap.wrap(tmp);
@@ -389,19 +378,7 @@
else
{
out.writeByte(1);
- out.writeInt(parameters.size());
- for (Map.Entry entry : parameters.entrySet())
- {
- String name = (String)entry.getKey();
- out.writeUTF(name);
- String[] values = (String[])entry.getValue();
- int length = values.length;
- out.writeInt(length);
- for (String value : values)
- {
- out.writeUTF(value);
- }
- }
+ Serialization.PARAMETER_MAP.serialize(parameters, out);
}
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/StateControllerContextImpl.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/StateControllerContextImpl.java 2008-02-07
17:37:56 UTC (rev 9836)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/StateControllerContextImpl.java 2008-02-07
18:01:50 UTC (rev 9837)
@@ -32,6 +32,7 @@
import org.jboss.portal.Mode;
import org.jboss.portal.common.io.UndeclaredIOException;
+import javax.xml.namespace.QName;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -109,6 +110,8 @@
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream zos = new GZIPOutputStream(baos);
DataOutputStream out = new DataOutputStream(zos);
+
+ //
out.writeInt(pageState.windows.size());
for (Map.Entry<String, WindowNavigationalState> entry :
pageState.windows.entrySet())
{
@@ -161,6 +164,25 @@
out.writeUTF(windowNS.getMode().toString());
}
}
+
+ //
+ Map<QName, String[]> publicNS = pageState.page;
+ out.writeInt(publicNS.size());
+ for (Map.Entry<QName, String[]> entry : publicNS.entrySet())
+ {
+ QName name = entry.getKey();
+ out.writeUTF(name.getNamespaceURI());
+ out.writeUTF(name.getLocalPart());
+ String[] values = entry.getValue();
+ int length = values.length;
+ out.writeInt(length);
+ for (String value : values)
+ {
+ out.writeUTF(value);
+ }
+ }
+
+ //
out.close();
return baos.toByteArray();
}
@@ -178,6 +200,8 @@
GZIPInputStream zis = new GZIPInputStream(bais);
DataInputStream in = new DataInputStream(zis);
PageNavigationalStateImpl pageState = new MutablePageNavigationalState(this);
+
+ //
int size = in.readInt();
while (size-- > 0)
{
@@ -213,10 +237,26 @@
mode = codeToMode.get(modeStateHeader);
}
WindowNavigationalState windowNS = new WindowNavigationalState(portletNS,
mode, windowState);
- pageState.setWindowNavigationalState(windowId, windowNS);
+ pageState.windows.put(windowId, windowNS);
}
//
+ size = in.readInt();
+ while (size-- > 0)
+ {
+ String namespaceURI = in.readUTF();
+ String localName = in.readUTF();
+ QName name = new QName(namespaceURI, localName);
+ int length = in.readInt();
+ String[] values = new String[length];
+ for (int i = 0;i < length;i++)
+ {
+ values[i] = in.readUTF();
+ }
+ pageState.page.put(name, values);
+ }
+
+ //
return pageState;
}
catch (IOException e)
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/AbstractPortletControllerContext.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/AbstractPortletControllerContext.java 2008-02-07
17:37:56 UTC (rev 9836)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/AbstractPortletControllerContext.java 2008-02-07
18:01:50 UTC (rev 9837)
@@ -26,10 +26,10 @@
import org.jboss.portal.Mode;
import org.jboss.portal.WindowState;
import org.jboss.portal.common.io.IOTools;
+import org.jboss.portal.common.io.Serialization;
import org.jboss.portal.common.util.MarkupInfo;
import org.jboss.portal.common.util.MediaType;
import org.jboss.portal.common.util.ParameterMap;
-import org.jboss.portal.common.util.Tools;
import org.jboss.portal.common.util.Base64;
import org.jboss.portal.portlet.ParametersStateString;
import org.jboss.portal.portlet.Portlet;
@@ -234,7 +234,8 @@
}
else
{
- Map<String, String[]> publicNavigationalStateChanges =
(Map<String,
String[]>)IOTools.unserialize(Tools.fromHexString(req.getParameter(PUBLIC_NAVIGATIONAL_STATE_CHANGES)));
+ byte[] bytes =
Base64.decode(req.getParameter(PUBLIC_NAVIGATIONAL_STATE_CHANGES), true);
+ Map<String, String[]> publicNavigationalStateChanges =
IOTools.unserialize(Serialization.PARAMETER_MAP, bytes);
//
request = new PortletRenderRequest(
@@ -352,4 +353,5 @@
{
return new TestPortletInvocationContext(stateControllerContext, req, resp,
windowId, pageState, MARKUP_INFO);
}
+
}
\ No newline at end of file
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java 2008-02-07
17:37:56 UTC (rev 9836)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/controller/PortletURLRenderer.java 2008-02-07
18:01:50 UTC (rev 9837)
@@ -24,6 +24,7 @@
package org.jboss.portal.portlet.test.controller;
import org.jboss.portal.common.io.IOTools;
+import org.jboss.portal.common.io.Serialization;
import org.jboss.portal.common.text.CharBuffer;
import org.jboss.portal.common.text.FastURLEncoder;
import org.jboss.portal.common.util.Tools;
@@ -175,18 +176,10 @@
RenderURL renderURL = (RenderURL)containerURL;
//
- try
- {
- Map<String, String[]> changes =
renderURL.getPublicNavigationalStateChanges();
- HashMap<String, String[]> serialiableChanges = new
HashMap<String, String[]>(changes);
- byte[] bytes = IOTools.serialize(serialiableChanges);
- String ns = Tools.toHexString(bytes);
- parameters.put(PUBLIC_NAVIGATIONAL_STATE_CHANGES, ns);
- }
- catch (IOException e)
- {
- throw new Error(e);
- }
+ Map<String, String[]> changes =
renderURL.getPublicNavigationalStateChanges();
+ byte[] bytes = IOTools.serialize(Serialization.PARAMETER_MAP, changes);
+ String ns = Base64.encodeBytes(bytes, true);
+ parameters.put(PUBLIC_NAVIGATIONAL_STATE_CHANGES, ns);
//
StateString navigationalState = renderURL.getNavigationalState();