Author: julien(a)jboss.com
Date: 2008-03-21 16:54:38 -0400 (Fri, 21 Mar 2008)
New Revision: 10362
Modified:
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/admin/ui/DebuggerPortlet.java
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/jsp/EventRoute.java
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/jsp/PageEventControllerContext.java
modules/portlet/trunk/portal/src/main/resources/simple-portal-war/layouts/nav/main.jsp
modules/portlet/trunk/samples/src/main/artifacts/basic-portlet-war/WEB-INF/portlet.xml
modules/portlet/trunk/samples/src/main/java/org/jboss/portal/portlet/samples/basic/RandomEventPortlet.java
Log:
improvements of event debugger
Modified:
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/admin/ui/DebuggerPortlet.java
===================================================================
---
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/admin/ui/DebuggerPortlet.java 2008-03-21
13:58:44 UTC (rev 10361)
+++
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/admin/ui/DebuggerPortlet.java 2008-03-21
20:54:38 UTC (rev 10362)
@@ -25,6 +25,11 @@
import org.jboss.portal.portlet.portal.jsp.PageEventControllerContext;
import org.jboss.portal.portlet.portal.jsp.EventRoute;
import org.jboss.portal.portlet.portal.jsp.PagePortletControllerContext;
+import org.jboss.portal.portlet.portal.jsp.EventAcknowledgement;
+import org.jboss.portal.portlet.invocation.response.PortletInvocationResponse;
+import org.jboss.portal.portlet.invocation.response.UpdateNavigationalStateResponse;
+import org.jboss.portal.portlet.invocation.response.ErrorResponse;
+import org.jboss.portal.portlet.ParametersStateString;
import javax.portlet.GenericPortlet;
import javax.portlet.RenderRequest;
@@ -33,6 +38,8 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
+import java.util.Map;
+import java.util.Iterator;
/**
* @author <a href="mailto:julien@jboss-portal.org">Julien
Viet</a>
@@ -44,11 +51,19 @@
protected void doView(RenderRequest req, RenderResponse resp) throws PortletException,
IOException
{
PagePortletControllerContext context =
(PagePortletControllerContext)req.getAttribute("bilto");
- PageEventControllerContext eventCC = context.getEventControllerContext();
+
+ PageEventControllerContext eventCC = null;
+ if (context != null)
+ {
+ eventCC = context.getEventControllerContext();
+ }
+
//
+ PrintWriter writer = resp.getWriter();
+
+ //
if (eventCC != null)
{
- PrintWriter writer = resp.getWriter();
writer.print("" +
"<a href=\"javascript:showAllDetails()\" >Show All
Details</a><br/>" +
"<div class=\"debug-container\">");
@@ -62,6 +77,10 @@
}
writer.println("</div>\n");
}
+ else
+ {
+ writer.println("No event phase happened in the last request");
+ }
}
private void printRoute(EventRoute route, PrintWriter
writer,PagePortletControllerContext context, int id, String cid)
@@ -77,7 +96,7 @@
writer.print("<label>Destination: </label>" +
context.getPortletInfo(route.getDestination()).getName() + "</p>\n" +
" <div class=\"details\" id=\"details-" + id + cid
+ "\">\n" +
" <div class=\"details-frame\">\n" +
- " " + route.getAcknowledgement() + "\n" +
+ " " + formatAck(route.getAcknowledgement()) + "\n"
+
" <div class=\"dotted-white\"></div>\n"
+
" <label>Payload: " + route.getPayload() +
"</label>\n" +
" </div>\n" +
@@ -94,7 +113,118 @@
}
}
-
+
+ private String formatAck(EventAcknowledgement ack)
+ {
+ if (ack instanceof EventAcknowledgement.Consumed)
+ {
+ EventAcknowledgement.Consumed consumedAck = (EventAcknowledgement.Consumed)ack;
+ PortletInvocationResponse response = consumedAck.getResponse();
+ if (response instanceof UpdateNavigationalStateResponse)
+ {
+ UpdateNavigationalStateResponse updateResponse =
(UpdateNavigationalStateResponse)response;
+
+ //
+ String[] strings = new String[4];
+
+ //
+ if (updateResponse.getMode() != null)
+ {
+ strings[0] = "mode=" + updateResponse.getMode();
+ }
+
+ //
+ if (updateResponse.getWindowState() != null)
+ {
+ strings[1] = "windowstate=" + updateResponse.getWindowState();
+ }
+
+ // Should be ok, we are not consuming remote portlets
+ ParametersStateString newNS =
(ParametersStateString)updateResponse.getNavigationalState();
+ if (newNS != null)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.append("private=");
+ formatMap(newNS.getParameters(), sb);
+ strings[2] = sb.toString();
+ }
+
+ //
+ Map<String, String[]> publicChanges =
updateResponse.getPublicNavigationalStateUpdates();
+ if (publicChanges != null)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.append("public=");
+ formatMap(publicChanges, sb);
+ strings[3] = sb.toString();
+ }
+
+ //
+ StringBuilder sb = new StringBuilder("[");
+ formatList(strings, sb);
+ sb.append("]");
+
+ //
+ return sb.toString();
+ }
+ else if (response instanceof ErrorResponse)
+ {
+ ErrorResponse errorResponse = (ErrorResponse)response;
+
+ //
+ return "Error:" + errorResponse.getMessage();
+ }
+ else
+ {
+ return "Todo format:" + response;
+ }
+ }
+ else
+ {
+ return ack.toString();
+ }
+ }
+
+ private void formatList(String[] strings, StringBuilder sb)
+ {
+ boolean done = false;
+ for (String string : strings)
+ {
+ if (string != null)
+ {
+ sb.append(done ? "," : "").append(string);
+
+ //
+ done = true;
+ }
+ }
+ }
+
+ private void formatMap(Map<String, String[]> map, StringBuilder sb)
+ {
+ sb.append("{");
+ for (Iterator<Map.Entry<String, String[]>> i =
map.entrySet().iterator();i.hasNext();)
+ {
+ Map.Entry<String, String[]> entry = i.next();
+
+ //
+ sb.append(entry.getKey());
+
+ //
+ sb.append("=(");
+ String[] value = entry.getValue();
+ formatList(entry.getValue(), sb);
+ sb.append(')');
+
+ //
+ if (i.hasNext())
+ {
+ sb.append(',');
+ }
+ }
+ sb.append("}");
+ }
+
public static int rand(int lo, int hi)
{
Random rn2 = new Random();
Modified:
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/jsp/EventRoute.java
===================================================================
---
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/jsp/EventRoute.java 2008-03-21
13:58:44 UTC (rev 10361)
+++
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/jsp/EventRoute.java 2008-03-21
20:54:38 UTC (rev 10362)
@@ -57,7 +57,12 @@
/** . */
EventAcknowledgement acknowledgement;
- public EventRoute(EventRoute parent, QName name, Serializable payload, String source,
String destination)
+ public EventRoute(
+ EventRoute parent,
+ QName name,
+ Serializable payload,
+ String source,
+ String destination)
{
this.parent = parent;
this.name = name;
Modified:
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/jsp/PageEventControllerContext.java
===================================================================
---
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/jsp/PageEventControllerContext.java 2008-03-21
13:58:44 UTC (rev 10361)
+++
modules/portlet/trunk/portal/src/main/java/org/jboss/portal/portlet/portal/jsp/PageEventControllerContext.java 2008-03-21
20:54:38 UTC (rev 10362)
@@ -94,7 +94,12 @@
Event destinationEvent = new Event(producedEvent.getName(),
producedEvent.getPayload(), windowId);
//
- EventRoute eventRoute = new EventRoute(relatedRoute,
producedEvent.getName(), producedEvent.getPayload(), producedEvent.getWindowId(),
destinationEvent.getWindowId());
+ EventRoute eventRoute = new EventRoute(
+ relatedRoute,
+ producedEvent.getName(),
+ producedEvent.getPayload(),
+ producedEvent.getWindowId(),
+ destinationEvent.getWindowId());
//
if (relatedRoute != null)
Modified:
modules/portlet/trunk/portal/src/main/resources/simple-portal-war/layouts/nav/main.jsp
===================================================================
---
modules/portlet/trunk/portal/src/main/resources/simple-portal-war/layouts/nav/main.jsp 2008-03-21
13:58:44 UTC (rev 10361)
+++
modules/portlet/trunk/portal/src/main/resources/simple-portal-war/layouts/nav/main.jsp 2008-03-21
20:54:38 UTC (rev 10362)
@@ -29,6 +29,9 @@
<li>
<a href="${pageContext.request.contextPath}/demo/demo3.jsp"
class="${fn:substringAfter(pageContext.request.servletPath, 'demo/') ==
'demo3.jsp' ? 'selected' : ''}">Demo3</a>
</li>
+ <li>
+ <a href="${pageContext.request.contextPath}/demo/demo4.jsp"
class="${fn:substringAfter(pageContext.request.servletPath, 'demo/') ==
'demo4.jsp' ? 'selected' : ''}">Demo3</a>
+ </li>
</ul>
<br class="clear"/>
</div>
Modified:
modules/portlet/trunk/samples/src/main/artifacts/basic-portlet-war/WEB-INF/portlet.xml
===================================================================
---
modules/portlet/trunk/samples/src/main/artifacts/basic-portlet-war/WEB-INF/portlet.xml 2008-03-21
13:58:44 UTC (rev 10361)
+++
modules/portlet/trunk/samples/src/main/artifacts/basic-portlet-war/WEB-INF/portlet.xml 2008-03-21
20:54:38 UTC (rev 10362)
@@ -74,12 +74,7 @@
<portlet-info>
<title>A portlet that generate events randomly</title>
</portlet-info>
-<!--
<supported-processing-event>
- <name>Event1</name>
- </supported-processing-event>
--->
- <supported-processing-event>
<name>Event2</name>
</supported-processing-event>
<supported-processing-event>
@@ -94,6 +89,8 @@
<supported-publishing-event>
<name>Event3</name>
</supported-publishing-event>
+
<supported-public-render-parameter>foo</supported-public-render-parameter>
+
<supported-public-render-parameter>bar</supported-public-render-parameter>
</portlet>
<portlet>
@@ -108,12 +105,7 @@
<supported-processing-event>
<name>Event1</name>
</supported-processing-event>
-<!--
<supported-processing-event>
- <name>Event2</name>
- </supported-processing-event>
--->
- <supported-processing-event>
<name>Event3</name>
</supported-processing-event>
<supported-publishing-event>
@@ -125,6 +117,9 @@
<supported-publishing-event>
<name>Event3</name>
</supported-publishing-event>
+
<supported-public-render-parameter>foo</supported-public-render-parameter>
+
<supported-public-render-parameter>juu</supported-public-render-parameter>
+
<supported-public-render-parameter>daa</supported-public-render-parameter>
</portlet>
<portlet>
@@ -142,11 +137,6 @@
<supported-processing-event>
<name>Event2</name>
</supported-processing-event>
-<!--
- <supported-processing-event>
- <name>Event3</name>
- </supported-processing-event>
--->
<supported-publishing-event>
<name>Event1</name>
</supported-publishing-event>
@@ -156,6 +146,9 @@
<supported-publishing-event>
<name>Event3</name>
</supported-publishing-event>
+
<supported-public-render-parameter>bar</supported-public-render-parameter>
+
<supported-public-render-parameter>juu</supported-public-render-parameter>
+
<supported-public-render-parameter>zee</supported-public-render-parameter>
</portlet>
<filter>
@@ -201,4 +194,29 @@
<value-type>java.lang.Integer</value-type>
</event-definition>
+ <public-render-parameter>
+ <identifier>foo</identifier>
+ <name>foo</name>
+ </public-render-parameter>
+
+ <public-render-parameter>
+ <identifier>bar</identifier>
+ <name>bar</name>
+ </public-render-parameter>
+
+ <public-render-parameter>
+ <identifier>juu</identifier>
+ <name>juu</name>
+ </public-render-parameter>
+
+ <public-render-parameter>
+ <identifier>daa</identifier>
+ <name>daa</name>
+ </public-render-parameter>
+
+ <public-render-parameter>
+ <identifier>zee</identifier>
+ <name>zee</name>
+ </public-render-parameter>
+
</portlet-app>
Modified:
modules/portlet/trunk/samples/src/main/java/org/jboss/portal/portlet/samples/basic/RandomEventPortlet.java
===================================================================
---
modules/portlet/trunk/samples/src/main/java/org/jboss/portal/portlet/samples/basic/RandomEventPortlet.java 2008-03-21
13:58:44 UTC (rev 10361)
+++
modules/portlet/trunk/samples/src/main/java/org/jboss/portal/portlet/samples/basic/RandomEventPortlet.java 2008-03-21
20:54:38 UTC (rev 10362)
@@ -53,13 +53,28 @@
};
/** . */
+ private static final String[] PARAM_NAMES = {
+ "foo", "bar", "juu", "daa",
"zee"
+ };
+
+ /** . */
+ private static final String[] PARAM_VALUES = {
+ "red", "green", "blue", "yellow",
"white", "black"
+ };
+
+ /** . */
private static final Random random = new Random();
private static QName pickQName()
{
+ return pickValue(QNAMES);
+ }
+
+ private static <T> T pickValue(T[] values)
+ {
synchronized (random)
{
- return QNAMES[random.nextInt(QNAMES.length)];
+ return values[random.nextInt(values.length)];
}
}
@@ -76,7 +91,7 @@
int repeat = Integer.parseInt(req.getParameter("repeat"));
//
- publishEvent(resp, repeat);
+ publishState(resp, repeat);
}
public void processEvent(EventRequest req, EventResponse resp) throws
PortletException, IOException
@@ -100,14 +115,19 @@
//
if (repeat > 0)
{
- publishEvent(resp, repeat - 1);
+ publishState(resp, repeat - 1);
}
}
- private void publishEvent(StateAwareResponse resp, int repeat)
+ private void publishState(StateAwareResponse resp, int repeat)
{
QName name = pickQName();
resp.setEvent(name, repeat);
+
+ //
+ resp.setRenderParameter(pickValue(PARAM_NAMES), pickValue(PARAM_VALUES));
+
+ //
System.out.println("Portlet " + getPortletConfig().getPortletName() +
" generated the event (" + name + "," + repeat + ")");
}