JBoss Portal SVN: r11825 - in branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal: core/impl/coordination and 1 other directories.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-09-06 07:52:19 -0400 (Sat, 06 Sep 2008)
New Revision: 11825
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
Log:
- Oops, getWindowBindingInfo should really be getWindowBinding...
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java 2008-09-06 11:51:06 UTC (rev 11824)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java 2008-09-06 11:52:19 UTC (rev 11825)
@@ -205,7 +205,7 @@
* @return
* @throws IllegalCoordinationException
*/
- WindowBindingInfo getWindowBindingInfo(Page page, String name) throws IllegalCoordinationException;
+ WindowBindingInfo getWindowBinding(Page page, String name) throws IllegalCoordinationException;
/**
* Set parameter binding implicit mode for a given page container. This will be inherited recursively by all children
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-06 11:51:06 UTC (rev 11824)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-06 11:52:19 UTC (rev 11825)
@@ -567,12 +567,12 @@
public void renameWindowBinding(Page page, String bindingName, String newName) throws IllegalCoordinationException
{
- WindowBindingInfo info = getWindowBindingInfo(page, bindingName);
+ WindowBindingInfo info = getWindowBinding(page, bindingName);
removeWindowBinding(page, bindingName);
setWindowBinding(newName, info.getWindows());
}
- public WindowBindingInfo getWindowBindingInfo(Page page, String name) throws IllegalCoordinationException
+ public WindowBindingInfo getWindowBinding(Page page, String name) throws IllegalCoordinationException
{
ParameterValidation.throwIllegalArgExceptionIfNull(page, "Page");
ParameterValidation.throwIllegalArgExceptionIfNull(name, "window binding name");
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-06 11:51:06 UTC (rev 11824)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-06 11:52:19 UTC (rev 11825)
@@ -322,7 +322,7 @@
ws.put(w4, qName21);
cos.setWindowBinding("binding2", ws);
- WindowBindingInfo info = cos.getWindowBindingInfo(page1, "binding1");
+ WindowBindingInfo info = cos.getWindowBinding(page1, "binding1");
assertNotNull(info);
assertEquals("binding1", info.getName());
assertEquals(page1, info.getPage());
@@ -334,7 +334,7 @@
assertEquals(qName11, windows.get(w1));
assertEquals(qName12, windows.get(w2));
- info = cos.getWindowBindingInfo(page1, "binding2");
+ info = cos.getWindowBinding(page1, "binding2");
assertNotNull(info);
assertEquals("binding2", info.getName());
assertEquals(page1, info.getPage());
@@ -377,8 +377,8 @@
infos = cos.getWindowBindings(page1);
assertNotNull(infos);
assertEquals(1, infos.size());
- assertNotNull(cos.getWindowBindingInfo(page1, "binding1"));
- assertNull(cos.getWindowBindingInfo(page1, "binding2"));
+ assertNotNull(cos.getWindowBinding(page1, "binding1"));
+ assertNull(cos.getWindowBinding(page1, "binding2"));
TransactionAssert.commitTransaction();
}
@@ -662,7 +662,7 @@
cos.renameWindowBinding(page1, "new", "newer");
- info = cos.getWindowBindingInfo(page1, "newer");
+ info = cos.getWindowBinding(page1, "newer");
assertNotNull(info);
TransactionAssert.commitTransaction();
17 years, 8 months
JBoss Portal SVN: r11824 - in branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal: core/impl/coordination and 1 other directories.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-09-06 07:51:06 -0400 (Sat, 06 Sep 2008)
New Revision: 11824
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
Log:
- Added removeWindowBinding(page, name), renameWindowBinding(page, old name, new name) and getWindowBindingInfo(page, name) methods
- Fixed an issue with PREFIX_PARAMETER_ALIAS_LENGTH which wasn't correct.
- get*(page, name) should return null when the coordination element is not found instead of failing.
- Improved tests and coverage.
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java 2008-09-06 09:50:22 UTC (rev 11823)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java 2008-09-06 11:51:06 UTC (rev 11824)
@@ -165,6 +165,12 @@
void removeWindowBinding(WindowBindingInfo parameterBinding) throws IllegalCoordinationException;
/**
+ * @param page
+ * @param name
+ */
+ void removeWindowBinding(Page page, String name);
+
+ /**
* Renames the specified window binding to the new name
*
* @param windowBinding the window binding to be renamed
@@ -174,6 +180,34 @@
void renameWindowBinding(WindowBindingInfo windowBinding, String newName) throws IllegalCoordinationException;
/**
+ * @param page
+ * @param bindingName
+ * @param newName
+ * @throws IllegalCoordinationException
+ */
+ void renameWindowBinding(Page page, String bindingName, String newName) throws IllegalCoordinationException;
+
+ /**
+ * @param page
+ * @return window bindings define in the scope of a given page
+ */
+ Collection<? extends WindowBindingInfo> getWindowBindings(Page page);
+
+ /**
+ * @param window
+ * @return window bindings where given window is involved
+ */
+ Collection<? extends WindowBindingInfo> getWindowBindings(Window window);
+
+ /**
+ * @param page
+ * @param name
+ * @return
+ * @throws IllegalCoordinationException
+ */
+ WindowBindingInfo getWindowBindingInfo(Page page, String name) throws IllegalCoordinationException;
+
+ /**
* Set parameter binding implicit mode for a given page container. This will be inherited recursively by all children
* page containers
*
@@ -239,16 +273,4 @@
* @return window bindings for a given parameter qname
*/
Collection<? extends WindowBindingInfo> getWindowBindings(Page page, QName parameterQName);
-
- /**
- * @param page
- * @return window bindings define in the scope of a given page
- */
- Collection<? extends WindowBindingInfo> getWindowBindings(Page page);
-
- /**
- * @param window
- * @return window bindings where given window is involved
- */
- Collection<? extends WindowBindingInfo> getWindowBindings(Window window);
}
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-06 09:50:22 UTC (rev 11823)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-06 11:51:06 UTC (rev 11824)
@@ -78,7 +78,7 @@
public static final String PREFIX_PARAMETER_ALIAS = PREFIX_PARAMETER + ".alias";
public static final String PREFIX_PARAMETER_ALIAS_NAME = PREFIX_PARAMETER_ALIAS + ".name.";
- private static final int PREFIX_PARAMETER_ALIAS_LENGTH = PREFIX_PARAMETER_ALIAS.length();
+ private static final int PREFIX_PARAMETER_ALIAS_LENGTH = PREFIX_PARAMETER_ALIAS_NAME.length();
public static final Boolean DEFAULT_IMPLICIT_MODE = true;
protected EventConverter eventConverter = new SimpleEventConverter();
@@ -393,12 +393,20 @@
}
}
- if (sources.isEmpty() || destinations.isEmpty())
+ boolean emptySources = sources.isEmpty();
+ boolean emptyDestinations = destinations.isEmpty();
+ if (emptySources && emptyDestinations)
{
+ return null;
+ }
+ else if ((emptySources && !emptyDestinations) || emptyDestinations)
+ {
throw new IllegalCoordinationException("Couldn't find sources or destinations for event '" + name + "'");
}
-
- return new EventInfoPOJO(name, page, sources, destinations);
+ else
+ {
+ return new EventInfoPOJO(name, page, sources, destinations);
+ }
}
public Collection<EventWiringInfo> getEventWirings(Page page)
@@ -536,11 +544,18 @@
{
ParameterValidation.throwIllegalArgExceptionIfNull(info, "WindowBindingInfo");
- // Remove all entries
- String prop_wiring = PREFIX_PARAMETER_BINDING + "." + info.getName();
- for (Window window : info.getWindows().keySet())
+ removeWindowBinding(info.getPage(), info.getName());
+ }
+
+ public void removeWindowBinding(Page page, String name)
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNull(name, "window binding name");
+ ParameterValidation.throwIllegalArgExceptionIfNull(page, "Page");
+
+ String nameProp = PREFIX_PARAMETER_BINDING + name;
+ for (PortalObject window : page.getChildren(PortalObject.WINDOW_MASK))
{
- window.setDeclaredProperty(prop_wiring, null);
+ window.setDeclaredProperty(nameProp, null);
}
}
@@ -550,6 +565,44 @@
setWindowBinding(newName, windowBinding.getWindows());
}
+ public void renameWindowBinding(Page page, String bindingName, String newName) throws IllegalCoordinationException
+ {
+ WindowBindingInfo info = getWindowBindingInfo(page, bindingName);
+ removeWindowBinding(page, bindingName);
+ setWindowBinding(newName, info.getWindows());
+ }
+
+ public WindowBindingInfo getWindowBindingInfo(Page page, String name) throws IllegalCoordinationException
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNull(page, "Page");
+ ParameterValidation.throwIllegalArgExceptionIfNull(name, "window binding name");
+
+ String nameProp = PREFIX_PARAMETER_BINDING + name;
+
+ // Examine window properties and create page parameters
+ Collection<PortalObject> children = page.getChildren(PortalObject.WINDOW_MASK);
+ Map<Window, QName> windows = new HashMap<Window, QName>(children.size());
+ for (PortalObject window : children)
+ {
+ String bindingName = window.getDeclaredProperty(nameProp);
+
+ if (bindingName != null)
+ {
+ QName qname = decodeQName(bindingName);
+ windows.put((Window)window, qname);
+ }
+ }
+
+ if (windows.isEmpty())
+ {
+ return null;
+ }
+ else
+ {
+ return new WindowInfoPOJO(name, page, windows);
+ }
+ }
+
public Boolean isParameterBindingImplicitModeEnabled(PageContainer pageContainer)
{
ParameterValidation.throwIllegalArgExceptionIfNull(pageContainer, "PageContainer");
@@ -884,13 +937,18 @@
private final Map<Window, QName> windows;
private final Page page;
- private WindowInfoPOJO(String name, Page page)
+ private WindowInfoPOJO(String name, Page page, Map<Window, QName> windows)
{
this.name = name;
- this.windows = new HashMap<Window, QName>();
+ this.windows = windows;
this.page = page;
}
+ private WindowInfoPOJO(String name, Page page)
+ {
+ this(name, page, new HashMap<Window, QName>());
+ }
+
public String getName()
{
return name;
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-06 09:50:22 UTC (rev 11823)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-06 11:51:06 UTC (rev 11824)
@@ -299,6 +299,90 @@
TransactionAssert.commitTransaction();
}
+ public void testGetWindowBinding() throws Exception
+ {
+ TransactionAssert.beginTransaction();
+
+ Page page1 = getPage1();
+
+ Window w1 = page1.getWindow("Window_1");
+ Window w2 = page1.getWindow("Window_2");
+ Window w4 = page1.getWindow("Window_4");
+
+
+ Map<Window, QName> ws = new HashMap<Window, QName>();
+ QName qName11 = new QName("ns1", "1");
+ QName qName12 = new QName("ns1", "2");
+ ws.put(w1, qName11);
+ ws.put(w2, qName12);
+ cos.setWindowBinding("binding1", ws);
+
+ QName qName21 = new QName("ns2", "foo3");
+ ws.clear();
+ ws.put(w4, qName21);
+ cos.setWindowBinding("binding2", ws);
+
+ WindowBindingInfo info = cos.getWindowBindingInfo(page1, "binding1");
+ assertNotNull(info);
+ assertEquals("binding1", info.getName());
+ assertEquals(page1, info.getPage());
+ Map<Window, QName> windows = info.getWindows();
+ assertNotNull(windows);
+ assertEquals(2, windows.size());
+ assertTrue(windows.containsKey(w1));
+ assertTrue(windows.containsKey(w2));
+ assertEquals(qName11, windows.get(w1));
+ assertEquals(qName12, windows.get(w2));
+
+ info = cos.getWindowBindingInfo(page1, "binding2");
+ assertNotNull(info);
+ assertEquals("binding2", info.getName());
+ assertEquals(page1, info.getPage());
+ windows = info.getWindows();
+ assertNotNull(windows);
+ assertEquals(1, windows.size());
+ assertTrue(windows.containsKey(w4));
+ assertEquals(qName21, windows.get(w4));
+
+ TransactionAssert.commitTransaction();
+ }
+
+ public void testRemoveWindowBinding() throws Exception
+ {
+ TransactionAssert.beginTransaction();
+
+ Page page1 = getPage1();
+
+ Window w1 = page1.getWindow("Window_1");
+ Window w2 = page1.getWindow("Window_2");
+ Window w4 = page1.getWindow("Window_4");
+
+ Map<Window, QName> ws = new HashMap<Window, QName>();
+ QName qName11 = new QName("ns1", "1");
+ QName qName12 = new QName("ns1", "2");
+ ws.put(w1, qName11);
+ ws.put(w2, qName12);
+ cos.setWindowBinding("binding1", ws);
+
+ QName qName21 = new QName("ns2", "foo3");
+ ws.clear();
+ ws.put(w4, qName21);
+ cos.setWindowBinding("binding2", ws);
+
+ Collection<? extends WindowBindingInfo> infos = cos.getWindowBindings(page1);
+ assertNotNull(infos);
+ assertEquals(2, infos.size());
+
+ cos.removeWindowBinding(page1, "binding2");
+ infos = cos.getWindowBindings(page1);
+ assertNotNull(infos);
+ assertEquals(1, infos.size());
+ assertNotNull(cos.getWindowBindingInfo(page1, "binding1"));
+ assertNull(cos.getWindowBindingInfo(page1, "binding2"));
+
+ TransactionAssert.commitTransaction();
+ }
+
public void testAliasBinding() throws Exception
{
TransactionAssert.beginTransaction();
@@ -455,7 +539,7 @@
TransactionAssert.commitTransaction();
}
- public void testAddMultipleEventWirings() throws IllegalCoordinationException
+ public void testRemoveEventWiring() throws IllegalCoordinationException
{
TransactionAssert.beginTransaction();
@@ -477,6 +561,12 @@
assertNotNull(events);
assertEquals(2, events.size());
+ cos.removeEventWiring(page1, "event1");
+ events = cos.getEventWirings(page1);
+ assertEquals(1, events.size());
+ assertNull(cos.getEventWiring(page1, "event1"));
+ assertNotNull(cos.getEventWiring(page1, "event2"));
+
TransactionAssert.commitTransaction();
}
@@ -570,6 +660,11 @@
info = bindings.iterator().next();
assertEquals("new", info.getName());
+ cos.renameWindowBinding(page1, "new", "newer");
+
+ info = cos.getWindowBindingInfo(page1, "newer");
+ assertNotNull(info);
+
TransactionAssert.commitTransaction();
}
17 years, 8 months
JBoss Portal SVN: r11823 - in branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core: impl/coordination and 1 other directory.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-09-06 05:50:22 -0400 (Sat, 06 Sep 2008)
New Revision: 11823
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
Log:
- Re-organization and minor improvements.
- Javadoc of newly added methods.
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java 2008-09-05 23:13:35 UTC (rev 11822)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java 2008-09-06 09:50:22 UTC (rev 11823)
@@ -33,6 +33,7 @@
/**
* @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
+ * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
* @version : 0.1 $
*/
public interface CoordinationConfigurator
@@ -58,6 +59,14 @@
void removeEventWiring(EventWiringInfo eventWiringInfo) throws IllegalCoordinationException;
/**
+ * Removes the wiring found in the given page and identified with the given name
+ *
+ * @param page
+ * @param wiringName
+ */
+ void removeEventWiring(Page page, String wiringName);
+
+ /**
* Set event wiring implicit mode for a given page container. This will be inherited recursively by all children page
* containers
*
@@ -77,6 +86,16 @@
void renameEventWiring(EventWiringInfo eventWiring, String newName) throws IllegalCoordinationException;
/**
+ * Renames the named wiring in the given Page to the spefified new name.
+ *
+ * @param page the Page in which the wiring is supposed to be found
+ * @param wiringName the name of the wiring to be renamed
+ * @param newName the new name for the wiring
+ * @throws IllegalCoordinationException
+ */
+ void renameEventWiring(Page page, String wiringName, String newName) throws IllegalCoordinationException;
+
+ /**
* Checks if implicit event wiring is enabled for a given page container. May return null if no implicit mode is not
* set for this portal object
*
@@ -107,6 +126,16 @@
Collection<EventWiringInfo> getEventWirings(Page page);
/**
+ * Retrieves the event wiring found in the given page and identified with the specified name
+ *
+ * @param page
+ * @param name
+ * @return
+ * @throws IllegalCoordinationException
+ */
+ EventWiringInfo getEventWiring(Page page, String name) throws IllegalCoordinationException;
+
+ /**
* @param window
* @return all wirings where given window is a source
*/
@@ -222,10 +251,4 @@
* @return window bindings where given window is involved
*/
Collection<? extends WindowBindingInfo> getWindowBindings(Window window);
-
- void removeEventWiring(Page page, String wiringName);
-
- EventWiringInfo getEventWiring(Page page, String name) throws IllegalCoordinationException;
-
- void renameEventWiring(Page page, String wiringName, String newName) throws IllegalCoordinationException;
}
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-05 23:13:35 UTC (rev 11822)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-06 09:50:22 UTC (rev 11823)
@@ -56,31 +56,33 @@
* @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
* @version : 0.1 $
*/
-public class CoordinationService extends AbstractJBossService
- implements CoordinationManager, CoordinationConfigurator
+public class CoordinationService extends AbstractJBossService implements CoordinationManager, CoordinationConfigurator
{
private static final String EVENT_ROLE_SOURCE = "source";
- public static final String SOURCE = EVENT_ROLE_SOURCE;
private static final String EVENT_ROLE_DESTINATION = "destination";
- public static final String DESTINATION = EVENT_ROLE_DESTINATION;
public static final String BINDING = "binding";
public static final String PREFIX = "coordination";
public static final String QNAME_SEPARATOR = ";";
+
public static final String PREFIX_EVENT = PREFIX + ".event";
- public static final String PREFIX_PARAMETER = PREFIX + ".parameter";
- public static final String PREFIX_PARAMETER_ALIAS = PREFIX_PARAMETER + ".alias";
+ public static final String EVENT_IMPLICIT_MODE = PREFIX_EVENT + ".implicit_mode";
public static final String PREFIX_EVENT_NAME = PREFIX_EVENT + ".name.";
public static final String PREFIX_EVENT_WIRING = PREFIX_EVENT + ".wiring.";
- public static final String PREFIX_PARAMETER_NAME = PREFIX_PARAMETER + ".name";
- public static final String PREFIX_PARAMETER_BINDING = PREFIX_PARAMETER + ".binding";
- public static final String PREFIX_PARAMETER_ALIAS_NAME = PREFIX_PARAMETER_ALIAS + ".name";
- public static final String PREFIX_EVENT_IMPLICIT_MODE = PREFIX_EVENT + ".implicit_mode";
- public static final String PREFIX_PARAMETER_IMPLICIT_MODE = PREFIX_PARAMETER + ".implicit_mode";
- public static final Boolean DEFAULT_IMPLICIT_MODE = true;
+ private static final int PREFIX_EVENT_NAME_LENGTH = PREFIX_EVENT_NAME.length();
+ public static final String PREFIX_PARAMETER = PREFIX + ".parameter";
+ public static final String PARAMETER_IMPLICIT_MODE = PREFIX_PARAMETER + ".implicit_mode";
+ public static final String PREFIX_PARAMETER_NAME = PREFIX_PARAMETER + ".name.";
+ public static final String PREFIX_PARAMETER_BINDING = PREFIX_PARAMETER + ".binding.";
+ private static final int PREFIX_PARAMETER_BINDING_LENGTH = PREFIX_PARAMETER_BINDING.length();
+
+ public static final String PREFIX_PARAMETER_ALIAS = PREFIX_PARAMETER + ".alias";
+ public static final String PREFIX_PARAMETER_ALIAS_NAME = PREFIX_PARAMETER_ALIAS + ".name.";
+ private static final int PREFIX_PARAMETER_ALIAS_LENGTH = PREFIX_PARAMETER_ALIAS.length();
+
+ public static final Boolean DEFAULT_IMPLICIT_MODE = true;
protected EventConverter eventConverter = new SimpleEventConverter();
protected PortalObjectContainer portalObjectContainer;
- private static final int PREFIX_EVENT_NAME_LENGTH = PREFIX_EVENT_NAME.length();
protected void startService() throws Exception
{
@@ -259,7 +261,7 @@
for (Window window : sw)
{
- window.setDeclaredProperty(prop_name, SOURCE);
+ window.setDeclaredProperty(prop_name, EVENT_ROLE_SOURCE);
window.setDeclaredProperty(prop_wiring, sources.get(window).toString());
}
@@ -267,7 +269,7 @@
for (Window window : dw)
{
- window.setDeclaredProperty(prop_name, DESTINATION);
+ window.setDeclaredProperty(prop_name, EVENT_ROLE_DESTINATION);
window.setDeclaredProperty(prop_wiring, destinations.get(window).toString());
}
@@ -275,30 +277,13 @@
public void removeEventWiring(EventWiringInfo info) throws IllegalCoordinationException
{
- /*ParameterValidation.throwIllegalArgExceptionIfNull(info, "EventWiringInfo");
-
- // Remove all entries
-
- String prop_name = PREFIX_EVENT_NAME + "." + info.getName();
- String prop_wiring = PREFIX_EVENT_WIRING + "." + info.getName();
-
- Set<Window> all = new HashSet<Window>();
- all.addAll(info.getSources().keySet());
- all.addAll(info.getDestinations().keySet());
-
- for (Window window : all)
- {
- window.setDeclaredProperty(prop_name, null);
- window.setDeclaredProperty(prop_wiring, null);
- }*/
-
ParameterValidation.throwIllegalArgExceptionIfNull(info, "EventWiringInfo");
removeEventWiring(info.getPage(), info.getName());
}
public void removeEventWiring(Page page, String wiringName)
{
- ParameterValidation.throwIllegalArgExceptionIfNull(wiringName, "Event wiring name");
+ ParameterValidation.throwIllegalArgExceptionIfNull(wiringName, "event wiring name");
ParameterValidation.throwIllegalArgExceptionIfNull(page, "Page");
String prop_name = PREFIX_EVENT_NAME + wiringName;
@@ -330,25 +315,25 @@
public void setEventWiringImplicitMode(PageContainer pageContainer, boolean mode) throws IllegalCoordinationException
{
ParameterValidation.throwIllegalArgExceptionIfNull(pageContainer, "PageContainer");
- setImplicitMode(pageContainer, mode, PREFIX_EVENT_IMPLICIT_MODE);
+ setImplicitMode(pageContainer, mode, EVENT_IMPLICIT_MODE);
}
public void removeEventWiringImplicitMode(PageContainer pageContainer) throws IllegalCoordinationException
{
ParameterValidation.throwIllegalArgExceptionIfNull(pageContainer, "PageContainer");
- setImplicitMode(pageContainer, null, PREFIX_EVENT_IMPLICIT_MODE);
+ setImplicitMode(pageContainer, null, EVENT_IMPLICIT_MODE);
}
public Boolean isEventWiringImplicitModeEnabled(PageContainer pageContainer)
{
ParameterValidation.throwIllegalArgExceptionIfNull(pageContainer, "PageContainer");
- return decodeImplicitMode(pageContainer, PREFIX_EVENT_IMPLICIT_MODE);
+ return decodeImplicitMode(pageContainer, EVENT_IMPLICIT_MODE);
}
public Boolean resolveEventWiringImplicitModeEnabled(PageContainer page)
{
ParameterValidation.throwIllegalArgExceptionIfNull(page, "PageContainer");
- return resolveImplicitMode(page, PREFIX_EVENT_IMPLICIT_MODE);
+ return resolveImplicitMode(page, EVENT_IMPLICIT_MODE);
}
public Collection<EventWiringInfo> getEventWirings(Page page, QName eventQName)
@@ -538,7 +523,7 @@
}
// Set window properties
- String prop_wiring = PREFIX_PARAMETER_BINDING + "." + name;
+ String prop_wiring = PREFIX_PARAMETER_BINDING + name;
//
for (Window window : windows.keySet())
@@ -568,25 +553,25 @@
public Boolean isParameterBindingImplicitModeEnabled(PageContainer pageContainer)
{
ParameterValidation.throwIllegalArgExceptionIfNull(pageContainer, "PageContainer");
- return decodeImplicitMode(pageContainer, PREFIX_PARAMETER_IMPLICIT_MODE);
+ return decodeImplicitMode(pageContainer, PARAMETER_IMPLICIT_MODE);
}
public void setParameterBindingImplicitMode(PageContainer pageContainer, boolean mode) throws IllegalCoordinationException
{
ParameterValidation.throwIllegalArgExceptionIfNull(pageContainer, "PageContainer");
- setImplicitMode(pageContainer, mode, PREFIX_PARAMETER_IMPLICIT_MODE);
+ setImplicitMode(pageContainer, mode, PARAMETER_IMPLICIT_MODE);
}
public Boolean resolveParameterBindingImplicitModeEnabled(PageContainer pageContainer)
{
ParameterValidation.throwIllegalArgExceptionIfNull(pageContainer, "PageContainer");
- return resolveImplicitMode(pageContainer, PREFIX_PARAMETER_IMPLICIT_MODE);
+ return resolveImplicitMode(pageContainer, PARAMETER_IMPLICIT_MODE);
}
public void removeParameterBindingImplicitMode(PageContainer pageContainer) throws IllegalCoordinationException
{
ParameterValidation.throwIllegalArgExceptionIfNull(pageContainer, "PageContainer");
- setImplicitMode(pageContainer, null, PREFIX_PARAMETER_IMPLICIT_MODE);
+ setImplicitMode(pageContainer, null, PARAMETER_IMPLICIT_MODE);
}
public void setAliasBinding(Page page, String aliasName, Set<QName> qnames) throws IllegalCoordinationException
@@ -599,7 +584,7 @@
throw new IllegalArgumentException("Aliased QNames set is empty!");
}
- String propName = PREFIX_PARAMETER_ALIAS_NAME + "." + aliasName;
+ String propName = PREFIX_PARAMETER_ALIAS_NAME + aliasName;
// Check if qname consist separator string
for (QName qname : qnames)
@@ -629,7 +614,7 @@
ParameterValidation.throwIllegalArgExceptionIfNull(aliasInfo, "AliasBindingInfo");
AliasInfoPOJO alias = (AliasInfoPOJO)aliasInfo;
- String propName = PREFIX_PARAMETER_ALIAS_NAME + "." + aliasInfo.getName();
+ String propName = PREFIX_PARAMETER_ALIAS_NAME + aliasInfo.getName();
if (alias.getPage().getProperties().keySet().contains(propName))
{
alias.getPage().setDeclaredProperty(propName, null);
@@ -653,7 +638,7 @@
{
if (propertyName.startsWith(PREFIX_PARAMETER_ALIAS_NAME))
{
- String aliasName = propertyName.substring(PREFIX_PARAMETER_ALIAS_NAME.length() + 1);
+ String aliasName = propertyName.substring(PREFIX_PARAMETER_ALIAS_LENGTH);
AliasInfoPOJO info = new AliasInfoPOJO(aliasName, page);
String qnameList = page.getProperty(propertyName);
String[] qnames = qnameList.split(QNAME_SEPARATOR);
@@ -719,7 +704,7 @@
{
if (propName.startsWith(PREFIX_PARAMETER_BINDING))
{
- String pn = propName.substring(PREFIX_PARAMETER_BINDING.length() + 1);
+ String pn = propName.substring(PREFIX_PARAMETER_BINDING_LENGTH);
WindowInfoPOJO info;
if (!params.keySet().contains(pn))
{
17 years, 8 months
JBoss Portal SVN: r11822 - in branches/JBoss_Portal_Branch_2_7: core/src/main/org/jboss/portal/core/impl/coordination and 2 other directories.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-09-05 19:13:35 -0400 (Fri, 05 Sep 2008)
New Revision: 11822
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/EventWiringInfo.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/ParameterBindingInfo.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
Log:
- Added getPage method on EventWiringInfo and ParameterBindingInfo
- Added getEventWiring, removeEventWiring(page, name) and renameEventWiring(page, oldName, newName) methods for easier use.
- EventWiringManagerBean uses new method and rename and delete operations should now properly work from the GUI.
- Added more tests.
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java 2008-09-05 20:34:27 UTC (rev 11821)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java 2008-09-05 23:13:35 UTC (rev 11822)
@@ -222,4 +222,10 @@
* @return window bindings where given window is involved
*/
Collection<? extends WindowBindingInfo> getWindowBindings(Window window);
+
+ void removeEventWiring(Page page, String wiringName);
+
+ EventWiringInfo getEventWiring(Page page, String name) throws IllegalCoordinationException;
+
+ void renameEventWiring(Page page, String wiringName, String newName) throws IllegalCoordinationException;
}
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/EventWiringInfo.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/EventWiringInfo.java 2008-09-05 20:34:27 UTC (rev 11821)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/EventWiringInfo.java 2008-09-05 23:13:35 UTC (rev 11822)
@@ -22,6 +22,7 @@
package org.jboss.portal.core.controller.coordination;
+import org.jboss.portal.core.model.portal.Page;
import org.jboss.portal.core.model.portal.Window;
import javax.xml.namespace.QName;
@@ -39,4 +40,6 @@
Map<Window, QName> getSources();
Map<Window, QName> getDestinations();
+
+ Page getPage();
}
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/ParameterBindingInfo.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/ParameterBindingInfo.java 2008-09-05 20:34:27 UTC (rev 11821)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/ParameterBindingInfo.java 2008-09-05 23:13:35 UTC (rev 11822)
@@ -22,6 +22,8 @@
package org.jboss.portal.core.controller.coordination;
+import org.jboss.portal.core.model.portal.Page;
+
/**
* @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
* @author <a href="mailto:julien@jboss-portal.org">Julien Viet</a>
@@ -30,4 +32,6 @@
public interface ParameterBindingInfo
{
String getName();
+
+ Page getPage();
}
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-05 20:34:27 UTC (rev 11821)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-05 23:13:35 UTC (rev 11822)
@@ -57,18 +57,20 @@
* @version : 0.1 $
*/
public class CoordinationService extends AbstractJBossService
- implements CoordinationManager, CoordinationConfigurator
+ implements CoordinationManager, CoordinationConfigurator
{
- public static final String SOURCE = "source";
- public static final String DESTINATION = "destination";
+ private static final String EVENT_ROLE_SOURCE = "source";
+ public static final String SOURCE = EVENT_ROLE_SOURCE;
+ private static final String EVENT_ROLE_DESTINATION = "destination";
+ public static final String DESTINATION = EVENT_ROLE_DESTINATION;
public static final String BINDING = "binding";
public static final String PREFIX = "coordination";
public static final String QNAME_SEPARATOR = ";";
public static final String PREFIX_EVENT = PREFIX + ".event";
public static final String PREFIX_PARAMETER = PREFIX + ".parameter";
public static final String PREFIX_PARAMETER_ALIAS = PREFIX_PARAMETER + ".alias";
- public static final String PREFIX_EVENT_NAME = PREFIX_EVENT + ".name";
- public static final String PREFIX_EVENT_WIRING = PREFIX_EVENT + ".wiring";
+ public static final String PREFIX_EVENT_NAME = PREFIX_EVENT + ".name.";
+ public static final String PREFIX_EVENT_WIRING = PREFIX_EVENT + ".wiring.";
public static final String PREFIX_PARAMETER_NAME = PREFIX_PARAMETER + ".name";
public static final String PREFIX_PARAMETER_BINDING = PREFIX_PARAMETER + ".binding";
public static final String PREFIX_PARAMETER_ALIAS_NAME = PREFIX_PARAMETER_ALIAS + ".name";
@@ -78,6 +80,7 @@
protected EventConverter eventConverter = new SimpleEventConverter();
protected PortalObjectContainer portalObjectContainer;
+ private static final int PREFIX_EVENT_NAME_LENGTH = PREFIX_EVENT_NAME.length();
protected void startService() throws Exception
{
@@ -101,9 +104,9 @@
// Only explicit wirings
Map<Window, PortletWindowEvent> windows;
- if(!implicitMode)
+ if (!implicitMode)
{
- windows = getEventWindowsExplicit(page, event, context);
+ windows = getEventWindowsExplicit(page, event, context);
}
// If no explicit wirings for this event fallback to implicit
else
@@ -158,7 +161,7 @@
for (Map.Entry<Window, QName> entry : info.getSources().entrySet())
{
if (entry.getKey().getName().equals(event.getWindowId()) &&
- entry.getValue().equals(event.getName()))
+ entry.getValue().equals(event.getName()))
{
for (Window window : info.getDestinations().keySet())
{
@@ -183,16 +186,16 @@
{
Map<Window, PortletWindowEvent> windows = new HashMap<Window, PortletWindowEvent>();
for (String windowName : context.getWindowNames())
+ {
+ PortletInfo info = context.getPortletInfo(windowName);
+
+ //
+ if (info.getEventing() != null && info.getEventing().getConsumedEvents().containsKey(event.getName()))
{
- PortletInfo info = context.getPortletInfo(windowName);
-
- //
- if (info.getEventing() != null && info.getEventing().getConsumedEvents().containsKey(event.getName()))
- {
- PortletWindowEvent distributedEvent = new PortletWindowEvent(event.getName(), event.getPayload(), windowName);
- windows.put(context.getWindow(windowName), distributedEvent);
- }
+ PortletWindowEvent distributedEvent = new PortletWindowEvent(event.getName(), event.getPayload(), windowName);
+ windows.put(context.getWindow(windowName), distributedEvent);
}
+ }
return windows;
}
@@ -202,7 +205,7 @@
ParameterValidation.throwIllegalArgExceptionIfNull(sources, "sources");
ParameterValidation.throwIllegalArgExceptionIfNull(destinations, "destinations");
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(eventName, "event name", null);
-
+
if (sources.isEmpty())
{
throw new IllegalArgumentException("empty sources map");
@@ -224,7 +227,7 @@
all.addAll(sw);
all.addAll(dw);
-
+
for (Window window : all)
{
if (parentPage == null)
@@ -251,8 +254,8 @@
// Set the sources
- String prop_name = PREFIX_EVENT_NAME + "." + eventName;
- String prop_wiring = PREFIX_EVENT_WIRING + "." + eventName;
+ String prop_name = PREFIX_EVENT_NAME + eventName;
+ String prop_wiring = PREFIX_EVENT_WIRING + eventName;
for (Window window : sw)
{
@@ -272,7 +275,7 @@
public void removeEventWiring(EventWiringInfo info) throws IllegalCoordinationException
{
- ParameterValidation.throwIllegalArgExceptionIfNull(info, "EventWiringInfo");
+ /*ParameterValidation.throwIllegalArgExceptionIfNull(info, "EventWiringInfo");
// Remove all entries
@@ -287,6 +290,24 @@
{
window.setDeclaredProperty(prop_name, null);
window.setDeclaredProperty(prop_wiring, null);
+ }*/
+
+ ParameterValidation.throwIllegalArgExceptionIfNull(info, "EventWiringInfo");
+ removeEventWiring(info.getPage(), info.getName());
+ }
+
+ public void removeEventWiring(Page page, String wiringName)
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNull(wiringName, "Event wiring name");
+ ParameterValidation.throwIllegalArgExceptionIfNull(page, "Page");
+
+ String prop_name = PREFIX_EVENT_NAME + wiringName;
+ String prop_wiring = PREFIX_EVENT_WIRING + wiringName;
+
+ for (PortalObject window : page.getChildren(PortalObject.WINDOW_MASK))
+ {
+ window.setDeclaredProperty(prop_name, null);
+ window.setDeclaredProperty(prop_wiring, null);
}
}
@@ -296,6 +317,16 @@
setEventWiring(eventWiring.getSources(), eventWiring.getDestinations(), newName);
}
+ public void renameEventWiring(Page page, String wiringName, String newName) throws IllegalCoordinationException
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNull(wiringName, "Event wiring name");
+ ParameterValidation.throwIllegalArgExceptionIfNull(page, "Page");
+
+ EventWiringInfo info = getEventWiring(page, wiringName);
+ removeEventWiring(page, wiringName);
+ setEventWiring(info.getSources(), info.getDestinations(), newName);
+ }
+
public void setEventWiringImplicitMode(PageContainer pageContainer, boolean mode) throws IllegalCoordinationException
{
ParameterValidation.throwIllegalArgExceptionIfNull(pageContainer, "PageContainer");
@@ -340,6 +371,51 @@
return events;
}
+ public EventWiringInfo getEventWiring(Page page, String name) throws IllegalCoordinationException
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNull(page, "Page");
+ ParameterValidation.throwIllegalArgExceptionIfNull(name, "Event wiring name");
+
+ String wiringProp = PREFIX_EVENT_WIRING + name;
+ String nameProp = PREFIX_EVENT_NAME + name;
+
+ Collection<PortalObject> windows = page.getChildren(PortalObject.WINDOW_MASK);
+ Map<Window, QName> sources = new HashMap<Window, QName>(windows.size());
+ Map<Window, QName> destinations = new HashMap<Window, QName>(windows.size());
+ for (PortalObject window : windows)
+ {
+ String eventName = window.getDeclaredProperty(wiringProp);
+
+ if (eventName != null)
+ {
+ String role = window.getDeclaredProperty(nameProp);
+ if (role == null)
+ {
+ throw new IllegalCoordinationException("Couldn't find role associated to event '" + name + "' in window "
+ + window.getId());
+ }
+
+ QName qname = decodeQName(eventName);
+
+ if (role.equalsIgnoreCase(EVENT_ROLE_SOURCE))
+ {
+ sources.put((Window)window, qname);
+ }
+ else if (role.equalsIgnoreCase(EVENT_ROLE_DESTINATION))
+ {
+ destinations.put((Window)window, qname);
+ }
+ }
+ }
+
+ if (sources.isEmpty() || destinations.isEmpty())
+ {
+ throw new IllegalCoordinationException("Couldn't find sources or destinations for event '" + name + "'");
+ }
+
+ return new EventInfoPOJO(name, page, sources, destinations);
+ }
+
public Collection<EventWiringInfo> getEventWirings(Page page)
{
ParameterValidation.throwIllegalArgExceptionIfNull(page, "Page");
@@ -349,18 +425,18 @@
Map<String, EventInfoPOJO> events = new HashMap<String, EventInfoPOJO>();
for (PortalObject window : page.getChildren(PortalObject.WINDOW_MASK))
{
- Set<String> propNames = window.getProperties().keySet();
+ Set<String> propNames = window.getDeclaredProperties().keySet();
for (String propName : propNames)
{
- if(propName.startsWith(PREFIX_EVENT_NAME))
+ if (propName.startsWith(PREFIX_EVENT_NAME))
{
- String en = propName.substring(PREFIX_EVENT_NAME.length() + 1);
+ String en = propName.substring(PREFIX_EVENT_NAME_LENGTH);
EventInfoPOJO info;
if (!events.keySet().contains(en))
{
- info = new EventInfoPOJO(en);
+ info = new EventInfoPOJO(en, page);
events.put(en, info);
}
else
@@ -368,24 +444,20 @@
info = events.get(en);
}
- String prop_wiring = PREFIX_EVENT_WIRING + "." + en;
+ String prop_wiring = PREFIX_EVENT_WIRING + en;
- String name = window.getProperty(prop_wiring);
- String role = window.getProperty(propName);
-
-
//TODO: if information from properties is not consistent should we throw exception?
-
+ String name = window.getDeclaredProperty(prop_wiring);
if (name != null)
{
QName qname = decodeQName(name);
+ String role = window.getDeclaredProperty(propName);
-
- if (qname != null && role != null && role.equalsIgnoreCase("source"))
+ if (role != null && role.equalsIgnoreCase(EVENT_ROLE_SOURCE))
{
info.getSources().put((Window)window, qname);
}
- else if (qname != null && role != null && role.equalsIgnoreCase("destination"))
+ else if (role != null && role.equalsIgnoreCase(EVENT_ROLE_DESTINATION))
{
info.getDestinations().put((Window)window, qname);
}
@@ -522,7 +594,7 @@
ParameterValidation.throwIllegalArgExceptionIfNull(page, "Page");
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(aliasName, "name", "alias binding");
ParameterValidation.throwIllegalArgExceptionIfNull(qnames, "aliased QNames");
- if(qnames.isEmpty())
+ if (qnames.isEmpty())
{
throw new IllegalArgumentException("Aliased QNames set is empty!");
}
@@ -539,7 +611,7 @@
}
StringBuilder qnameList = new StringBuilder();
- for (Iterator i = qnames.iterator(); i.hasNext(); )
+ for (Iterator i = qnames.iterator(); i.hasNext();)
{
QName qname = (QName)i.next();
qnameList.append(qname.toString());
@@ -558,9 +630,9 @@
AliasInfoPOJO alias = (AliasInfoPOJO)aliasInfo;
String propName = PREFIX_PARAMETER_ALIAS_NAME + "." + aliasInfo.getName();
- if (alias.page.getProperties().keySet().contains(propName))
+ if (alias.getPage().getProperties().keySet().contains(propName))
{
- alias.page.setDeclaredProperty(propName,null);
+ alias.getPage().setDeclaredProperty(propName, null);
}
}
@@ -568,7 +640,7 @@
{
removeAliasBinding(aliasBinding);
AliasInfoPOJO alias = (AliasInfoPOJO)aliasBinding;
- setAliasBinding(alias.page, newName, alias.getNames());
+ setAliasBinding(alias.getPage(), newName, alias.getNames());
}
public Collection<AliasBindingInfo> getAliasBindings(Page page)
@@ -590,7 +662,7 @@
for (String string : qnames)
{
QName qname = QName.valueOf(string);
- info.names.add(qname);
+ info.add(qname);
}
}
aliases.add(info);
@@ -645,13 +717,13 @@
for (String propName : propNames)
{
- if(propName.startsWith(PREFIX_PARAMETER_BINDING))
+ if (propName.startsWith(PREFIX_PARAMETER_BINDING))
{
String pn = propName.substring(PREFIX_PARAMETER_BINDING.length() + 1);
WindowInfoPOJO info;
if (!params.keySet().contains(pn))
{
- info = new WindowInfoPOJO(pn);
+ info = new WindowInfoPOJO(pn, page);
params.put(pn, info);
}
else
@@ -666,7 +738,7 @@
QName qname = decodeQName(binding);
if (qname != null)
{
- info.windows.put((Window)child, qname);
+ info.addMapping((Window)child, qname);
}
}
}
@@ -720,7 +792,6 @@
}
-
private Boolean resolveImplicitMode(PageContainer pageContainer, String prefix)
{
String value = pageContainer.getDeclaredProperty(prefix);
@@ -779,21 +850,21 @@
private class EventInfoPOJO implements EventWiringInfo
{
private final String name;
- private final Map<Window,QName> sources;
- private final Map<Window,QName> destinations;
+ private final Map<Window, QName> sources;
+ private final Map<Window, QName> destinations;
+ private final Page page;
- private EventInfoPOJO(String name, Map<Window, QName> sources, Map<Window, QName> destinations)
+ private EventInfoPOJO(String name, Page page, Map<Window, QName> sources, Map<Window, QName> destinations)
{
this.name = name;
this.sources = sources;
this.destinations = destinations;
+ this.page = page;
}
- private EventInfoPOJO(String name)
+ private EventInfoPOJO(String name, Page page)
{
- this.name = name;
- this.sources = new HashMap<Window,QName>();
- this.destinations = new HashMap<Window,QName>();
+ this(name, page, new HashMap<Window, QName>(), new HashMap<Window, QName>());
}
public String getName()
@@ -813,22 +884,26 @@
EventWiringInfo getImmutableWiringInfo()
{
- return new EventInfoPOJO(name, Collections.unmodifiableMap(sources), Collections.unmodifiableMap(destinations));
+ return new EventInfoPOJO(name, page, Collections.unmodifiableMap(sources), Collections.unmodifiableMap(destinations));
}
+ public Page getPage()
+ {
+ return page;
+ }
}
private class WindowInfoPOJO implements WindowBindingInfo
{
private final String name;
private final Map<Window, QName> windows;
- private final Map<Window, QName> immutableWindows;
+ private final Page page;
- private WindowInfoPOJO(String name)
+ private WindowInfoPOJO(String name, Page page)
{
this.name = name;
- this.windows = new HashMap<Window,QName>();
- this.immutableWindows = Collections.unmodifiableMap(windows);
+ this.windows = new HashMap<Window, QName>();
+ this.page = page;
}
public String getName()
@@ -838,8 +913,18 @@
public Map<Window, QName> getWindows()
{
- return immutableWindows;
+ return Collections.unmodifiableMap(windows);
}
+
+ public Page getPage()
+ {
+ return page;
+ }
+
+ private void addMapping(Window window, QName qname)
+ {
+ windows.put(window, qname);
+ }
}
private class AliasInfoPOJO implements AliasBindingInfo
@@ -847,14 +932,12 @@
private final String name;
private final Page page;
private final Set<QName> names;
- private final Set<QName> immutableNames;
private AliasInfoPOJO(String name, Page page)
{
this.name = name;
this.page = page;
this.names = new HashSet<QName>();
- this.immutableNames = Collections.unmodifiableSet(names);
}
public String getName()
@@ -864,7 +947,17 @@
public Set<QName> getNames()
{
- return immutableNames;
+ return Collections.unmodifiableSet(names);
}
+
+ public Page getPage()
+ {
+ return page;
+ }
+
+ private void add(QName qname)
+ {
+ names.add(qname);
+ }
}
}
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-05 20:34:27 UTC (rev 11821)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-05 23:13:35 UTC (rev 11822)
@@ -88,18 +88,18 @@
Page p_1_1 = p_1.createPage("Page_1");
Page p_1_2 = p_1.createPage("Page_2");
- Page p_1_1_1 = p_1_1.createPage("Page_1");
+ p_1_1.createPage("Page_1");
- Window w_1_1 = p_1_1.createWindow("Window_1", ContentType.PORTLET, "");
- Window w_1_2 = p_1_1.createWindow("Window_2", ContentType.PORTLET, "");
- Window w_1_3 = p_1_1.createWindow("Window_3", ContentType.PORTLET, "");
- Window w_1_4 = p_1_1.createWindow("Window_4", ContentType.PORTLET, "");
+ p_1_1.createWindow("Window_1", ContentType.PORTLET, "");
+ p_1_1.createWindow("Window_2", ContentType.PORTLET, "");
+ p_1_1.createWindow("Window_3", ContentType.PORTLET, "");
+ p_1_1.createWindow("Window_4", ContentType.PORTLET, "");
- Window w_2_1 = p_1_2.createWindow("Window_1", ContentType.PORTLET, "");
- Window w_2_2 = p_1_2.createWindow("Window_2", ContentType.PORTLET, "");
- Window w_2_3 = p_1_2.createWindow("Window_3", ContentType.PORTLET, "");
- Window w_2_4 = p_1_2.createWindow("Window_4", ContentType.PORTLET, "");
+ p_1_2.createWindow("Window_1", ContentType.PORTLET, "");
+ p_1_2.createWindow("Window_2", ContentType.PORTLET, "");
+ p_1_2.createWindow("Window_3", ContentType.PORTLET, "");
+ p_1_2.createWindow("Window_4", ContentType.PORTLET, "");
TransactionAssert.commitTransaction();
@@ -110,11 +110,10 @@
TransactionAssert.beginTransaction();
Portal portal_1 = container.getContext("").getPortal("Portal_1");
- Page page_1 = portal_1.getPage("Page_1");
+ Page page_1 = portal_1.getPage("Page_1");
Page page_1_1 = page_1.getPage("Page_1");
-
assertNull(cos.isEventWiringImplicitModeEnabled(portal_1));
assertNull(cos.isEventWiringImplicitModeEnabled(page_1));
assertNull(cos.isEventWiringImplicitModeEnabled(page_1_1));
@@ -200,19 +199,13 @@
{
TransactionAssert.beginTransaction();
- Portal portal1 = container.getContext("").getPortal("Portal_1");
- Page page1 = portal1.getPage("Page_1");
- Page page2 = portal1.getPage("Page_2");
+ Page page1 = getPage1();
-
Window w1 = page1.getWindow("Window_1");
Window w2 = page1.getWindow("Window_2");
Window w3 = page1.getWindow("Window_3");
Window w4 = page1.getWindow("Window_4");
- Window w2_1 = page1.getWindow("Window_2");
-
-
Map<Window, QName> s1 = new HashMap<Window, QName>();
Map<Window, QName> d1 = new HashMap<Window, QName>();
s1.put(w1, new QName("juju", "foo"));
@@ -221,10 +214,8 @@
d1.put(w4, new QName("bobo", "bar"));
-
cos.setEventWiring(s1, d1, "event1");
-
Collection<EventWiringInfo> events = cos.getEventWirings(page1);
assertEquals(1, events.size());
@@ -264,7 +255,7 @@
events = cos.getEventDestinationWirings(w4);
assertNotNull(events);
assertTrue(events.isEmpty());
-
+
TransactionAssert.commitTransaction();
}
@@ -272,18 +263,13 @@
{
TransactionAssert.beginTransaction();
- Portal portal1 = container.getContext("").getPortal("Portal_1");
- Page page1 = portal1.getPage("Page_1");
- Page page2 = portal1.getPage("Page_2");
+ Page page1 = getPage1();
Window w1 = page1.getWindow("Window_1");
Window w2 = page1.getWindow("Window_2");
- Window w3 = page1.getWindow("Window_3");
Window w4 = page1.getWindow("Window_4");
- Window w2_1 = page1.getWindow("Window_2");
-
Map<Window, QName> ws = new HashMap<Window, QName>();
ws.put(w1, new QName("juju", "foo"));
ws.put(w2, new QName("juju", "foo1"));
@@ -309,7 +295,7 @@
assertEquals(0, bindings.size());
-
+
TransactionAssert.commitTransaction();
}
@@ -384,7 +370,6 @@
}
-
assertNotNull(info2);
assertNotNull(info3);
@@ -401,7 +386,6 @@
assertTrue(info3.getNames().contains(qname9));
-
TransactionAssert.commitTransaction();
}
@@ -409,8 +393,7 @@
{
TransactionAssert.beginTransaction();
- Portal portal1 = container.getContext("").getPortal("Portal_1");
- Page page1 = portal1.getPage("Page_1");
+ Page page1 = getPage1();
Window w1 = page1.getWindow("Window_1");
Window w2 = page1.getWindow("Window_2");
@@ -434,10 +417,14 @@
events = cos.getEventWirings(page1);
assertEquals(1, events.size());
-
info = events.iterator().next();
assertEquals("new", info.getName());
+ cos.renameEventWiring(page1, "new", "newer");
+
+ info = cos.getEventWiring(page1, "newer");
+ assertNotNull(info);
+
TransactionAssert.commitTransaction();
}
@@ -445,8 +432,7 @@
{
TransactionAssert.beginTransaction();
- Portal portal1 = container.getContext("").getPortal("Portal_1");
- Page page1 = portal1.getPage("Page_1");
+ Page page1 = getPage1();
Window w1 = page1.getWindow("Window_1");
@@ -473,8 +459,7 @@
{
TransactionAssert.beginTransaction();
- Portal portal1 = container.getContext("").getPortal("Portal_1");
- Page page1 = portal1.getPage("Page_1");
+ Page page1 = getPage1();
Window w1 = page1.getWindow("Window_1");
Window w2 = page1.getWindow("Window_2");
@@ -495,12 +480,73 @@
TransactionAssert.commitTransaction();
}
+ public void testGetEventWiring() throws IllegalCoordinationException
+ {
+ TransactionAssert.beginTransaction();
+
+ Page page1 = getPage1();
+
+ Window w1 = page1.getWindow("Window_1");
+ Window w2 = page1.getWindow("Window_2");
+ Window w3 = page1.getWindow("Window_3");
+ Window w4 = page1.getWindow("Window_4");
+
+ Map<Window, QName> s1 = new HashMap<Window, QName>();
+ Map<Window, QName> d1 = new HashMap<Window, QName>();
+ QName source11 = new QName("source", "1");
+ QName source12 = new QName("source", "2");
+ s1.put(w1, source11);
+ s1.put(w2, source12);
+ QName dest11 = new QName("dest", "3");
+ QName dest12 = new QName("dest", "4");
+ d1.put(w3, dest11);
+ d1.put(w4, dest12);
+
+ cos.setEventWiring(s1, d1, "event1");
+
+ s1 = new HashMap<Window, QName>();
+ d1 = new HashMap<Window, QName>();
+ QName source21 = new QName("source2", "1");
+ s1.put(w1, source21);
+ QName dest21 = new QName("dest2", "3");
+ d1.put(w3, dest21);
+
+ cos.setEventWiring(s1, d1, "event2");
+
+ EventWiringInfo info = cos.getEventWiring(page1, "event1");
+ assertNotNull(info);
+ assertEquals("event1", info.getName());
+
+ Map<Window, QName> sources = info.getSources();
+ assertNotNull(sources);
+ assertEquals(2, sources.size());
+ assertEquals(source11, sources.get(w1));
+ assertEquals(source12, sources.get(w2));
+ Map<Window, QName> destinations = info.getDestinations();
+ assertEquals(2, destinations.size());
+ assertEquals(dest11, destinations.get(w3));
+ assertEquals(dest12, destinations.get(w4));
+
+ info = cos.getEventWiring(page1, "event2");
+ assertNotNull(info);
+ assertEquals("event2", info.getName());
+
+ sources = info.getSources();
+ assertNotNull(sources);
+ assertEquals(1, sources.size());
+ assertEquals(source21, sources.get(w1));
+ destinations = info.getDestinations();
+ assertEquals(1, destinations.size());
+ assertEquals(dest21, destinations.get(w3));
+
+ TransactionAssert.commitTransaction();
+ }
+
public void testRenameWindowBinding() throws Exception
{
TransactionAssert.beginTransaction();
- Portal portal1 = container.getContext("").getPortal("Portal_1");
- Page page1 = portal1.getPage("Page_1");
+ Page page1 = getPage1();
Window w1 = page1.getWindow("Window_1");
Window w2 = page1.getWindow("Window_2");
@@ -531,8 +577,7 @@
{
TransactionAssert.beginTransaction();
- Portal portal1 = container.getContext("").getPortal("Portal_1");
- Page page1 = portal1.getPage("Page_1");
+ Page page1 = getPage1();
QName qname1 = new QName("nm1", "local1");
QName qname2 = new QName("nm2", "local2");
@@ -571,4 +616,10 @@
{
this.cos = cos;
}
+
+ private Page getPage1()
+ {
+ Portal portal1 = container.getContext("").getPortal("Portal_1");
+ return portal1.getPage("Page_1");
+ }
}
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java 2008-09-05 20:34:27 UTC (rev 11821)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java 2008-09-05 23:13:35 UTC (rev 11822)
@@ -156,7 +156,7 @@
// create new wiring
if (currentWiring == null)
{
- currentWiring = new EventWiringInfoCreator();
+ currentWiring = new EventWiringInfoCreator(managerBean.getSelectedPage());
}
// return list of produced events
@@ -334,23 +334,13 @@
public String delete(String name) throws IllegalCoordinationException
{
- DisplayEventWiring displayEvent = displayEventWirings.get(name);
- if (displayEvent != null)
- {
- EventWiringInfo event = displayEvent.getEventInfo();
- managerBean.getCoordinationService().removeEventWiring(event);
- }
+ managerBean.getCoordinationService().removeEventWiring(managerBean.getSelectedPage(), name);
return resetSelection();
}
public String rename(String oldName, String newName) throws IllegalCoordinationException
{
- DisplayEventWiring displayEvent = displayEventWirings.get(oldName);
- if (displayEvent != null)
- {
- EventWiringInfo event = displayEvent.getEventInfo();
- managerBean.getCoordinationService().renameEventWiring(event, newName);
- }
+ managerBean.getCoordinationService().renameEventWiring(managerBean.getSelectedPage(), oldName, newName);
return resetSelection();
}
@@ -456,12 +446,23 @@
}
}
- private static class EventWiringInfoCreator implements EventWiringInfo
+ private class EventWiringInfoCreator implements EventWiringInfo
{
private String name;
private Map<Window, QName> sources;
private Map<Window, QName> destinations;
+ private final Page page;
+ private EventWiringInfoCreator(Page page)
+ {
+ this.page = page;
+ }
+
+ public Page getPage()
+ {
+ return page;
+ }
+
public String getName()
{
return name;
17 years, 8 months
JBoss Portal SVN: r11821 - in branches/JBoss_Portal_2_6_6_JBPORTAL-2109: cms/src/main/org/jboss/portal/cms/impl/jcr/ha and 2 other directories.
by portal-commits@lists.jboss.org
Author: sohil.shah(a)jboss.com
Date: 2008-09-05 16:34:27 -0400 (Fri, 05 Sep 2008)
New Revision: 11821
Modified:
branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/impl/jcr/JCRCMS.java
branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/impl/jcr/ha/HAJCRCMS.java
branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/security/AuthorizationProviderImpl.java
branches/JBoss_Portal_2_6_6_JBPORTAL-2109/core-cms/src/resources/portal-cms-sar/conf/hibernate/cms/domain.hbm.xml
branches/JBoss_Portal_2_6_6_JBPORTAL-2109/core-cms/src/resources/portal-cms-sar/conf/hibernate/cms/hibernate.cfg.xml
Log:
JBPORTAL-2109 - CMS Security Issue with LDAP/Clustered mode
Modified: branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/impl/jcr/JCRCMS.java
===================================================================
--- branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/impl/jcr/JCRCMS.java 2008-09-05 16:52:34 UTC (rev 11820)
+++ branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/impl/jcr/JCRCMS.java 2008-09-05 20:34:27 UTC (rev 11821)
@@ -68,6 +68,7 @@
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Locale;
+import java.util.Set;
/**
@@ -114,15 +115,13 @@
/** Used for storing the logged in user information */
protected static ThreadLocal userInfo = new ThreadLocal();
-
public static ThreadLocal getUserInfo()
{
return JCRCMS.userInfo;
- }
+ }
/** This is used to turnoff workflow triggering only for this particular request through the CMS commands */
protected static ThreadLocal turnOffWorkflow = new ThreadLocal();
-
public static void turnOffWorkflow()
{
turnOffWorkflow.set(new Boolean(true));
@@ -156,6 +155,21 @@
return isUISecurityFilterActive;
}
+
+ /**
+ * Used for propagating user's role information from different nodes of a cluster to the
+ * HASingleton Master Node currently processing CMS requests
+ */
+ protected static ThreadLocal userRoles = new ThreadLocal();
+ public static Set<String> getRoles()
+ {
+ return (Set<String>)userRoles.get();
+ }
+ public static void setRoles(Set<String> roles)
+ {
+ userRoles.set(roles);
+ }
+
public JCRCMS()
{
@@ -582,6 +596,11 @@
{
JCRCMS.enableUISecurityFilter();
}
+ Set<String> roles = (Set<String>)propagatedContext.getClusterContextInfo("roles");
+ if(roles != null)
+ {
+ JCRCMS.setRoles(roles);
+ }
}
// .... add new nodes & properties and save them
Modified: branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/impl/jcr/ha/HAJCRCMS.java
===================================================================
--- branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/impl/jcr/ha/HAJCRCMS.java 2008-09-05 16:52:34 UTC (rev 11820)
+++ branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/impl/jcr/ha/HAJCRCMS.java 2008-09-05 20:34:27 UTC (rev 11821)
@@ -22,6 +22,15 @@
******************************************************************************/
package org.jboss.portal.cms.impl.jcr.ha;
+import java.security.Principal;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.security.auth.Subject;
+import javax.security.jacc.PolicyContext;
+import javax.security.jacc.PolicyContextException;
+
import org.apache.log4j.Logger;
import org.jboss.portal.cms.CMSException;
import org.jboss.portal.cms.Command;
@@ -31,6 +40,7 @@
import org.jboss.portal.cms.model.CMSUser;
import org.jboss.portal.identity.User;
import org.jboss.portal.jems.ha.HASingletonInvoker;
+import org.jboss.portal.security.impl.jacc.JACCPortalPrincipal;
/**
* Extend the JCR CMS and make it run as an ha singleton.
@@ -62,6 +72,17 @@
User user = (User)this.getUserInfo().get();
JCRCommandContext context = this.getCommandContext((JCRCommand)cmd);
context.setClusterContextInfo("user", new CMSUser(user.getUserName()));
+
+ try
+ {
+ //Propagate the currently authenticated Subject's roles to the Master Node
+ Set<String> roles = this.getCurrentRoles();
+ context.setClusterContextInfo("roles", roles);
+ }
+ catch(PolicyContextException e)
+ {
+ throw new CMSException(e);
+ }
}
//Add the Workflow ThreadLocal variable to the Command Context for propagation to the Master Node
@@ -77,7 +98,7 @@
{
JCRCommandContext context = this.getCommandContext((JCRCommand)cmd);
context.setClusterContextInfo("enableUISecurityFilter", Boolean.TRUE);
- }
+ }
// Use the proxy to invoke on the singleton
Object returnValue = null;
@@ -206,4 +227,40 @@
return context;
}
+
+ private Set getCurrentRoles() throws PolicyContextException
+ {
+ Set<String> roles = new HashSet<String>();
+
+ // Get the current authenticated subject through the JACC contract
+ Subject subject = (Subject)PolicyContext.getContext("javax.security.auth.Subject.container");
+
+ if (subject != null)
+ {
+ Set tmp = subject.getPrincipals(JACCPortalPrincipal.class);
+ JACCPortalPrincipal pp = null;
+ for (Iterator i = tmp.iterator(); i.hasNext();)
+ {
+ pp = (JACCPortalPrincipal)i.next();
+ if (pp != null)
+ {
+ break;
+ }
+ }
+ if (pp == null)
+ {
+ pp = new JACCPortalPrincipal(subject);
+ tmp.add(pp);
+
+ // Lazy create all the permission containers for the given role names
+ for (Iterator i = pp.getRoles().iterator(); i.hasNext();)
+ {
+ Principal role = (Principal)i.next();
+ roles.add(role.getName());
+ }
+ }
+ }
+
+ return roles;
+ }
}
Modified: branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/security/AuthorizationProviderImpl.java
===================================================================
--- branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/security/AuthorizationProviderImpl.java 2008-09-05 16:52:34 UTC (rev 11820)
+++ branches/JBoss_Portal_2_6_6_JBPORTAL-2109/cms/src/main/org/jboss/portal/cms/security/AuthorizationProviderImpl.java 2008-09-05 20:34:27 UTC (rev 11821)
@@ -26,6 +26,7 @@
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.jboss.portal.cms.hibernate.state.Tools;
+import org.jboss.portal.cms.impl.jcr.JCRCMS;
import org.jboss.portal.identity.AnonymousRole;
import org.jboss.portal.identity.IdentityContext;
import org.jboss.portal.identity.IdentityServiceController;
@@ -567,7 +568,7 @@
// Get the current authenticated subject through the JACC contract
Subject subject = (Subject)PolicyContext.getContext("javax.security.auth.Subject.container");
-
+
if (subject != null)
{
Set tmp = subject.getPrincipals(JACCPortalPrincipal.class);
@@ -593,6 +594,13 @@
}
}
}
+
+ if(roles.isEmpty())
+ {
+ //Check and see if roles are found propagated via the cluster context
+ roles = JCRCMS.getRoles();
+ }
+
return roles;
}
}
Modified: branches/JBoss_Portal_2_6_6_JBPORTAL-2109/core-cms/src/resources/portal-cms-sar/conf/hibernate/cms/domain.hbm.xml
===================================================================
--- branches/JBoss_Portal_2_6_6_JBPORTAL-2109/core-cms/src/resources/portal-cms-sar/conf/hibernate/cms/domain.hbm.xml 2008-09-05 16:52:34 UTC (rev 11820)
+++ branches/JBoss_Portal_2_6_6_JBPORTAL-2109/core-cms/src/resources/portal-cms-sar/conf/hibernate/cms/domain.hbm.xml 2008-09-05 20:34:27 UTC (rev 11821)
@@ -277,7 +277,7 @@
<!-- mapping to persist CMS Fine Grained Security related objects -->
<class name="org.jboss.portal.cms.security.PermRoleAssoc" table="jbp_cms_perm_role">
- <cache usage="read-write"/>
+ <cache usage="@portal.hibernate.cache.usage@"/>
<id
name="id"
column="ID"
@@ -292,7 +292,7 @@
/>
</class>
<class name="org.jboss.portal.cms.security.PermUserAssoc" table="jbp_cms_perm_user">
- <cache usage="read-write"/>
+ <cache usage="@portal.hibernate.cache.usage@"/>
<id
name="id"
column="ID"
@@ -307,7 +307,7 @@
/>
</class>
<class name="org.jboss.portal.cms.security.Criteria" table="jbp_cms_perm_criteria">
- <cache usage="read-write"/>
+ <cache usage="@portal.hibernate.cache.usage@"/>
<id
name="id"
column="ID"
@@ -328,7 +328,7 @@
/>
</class>
<class name="org.jboss.portal.cms.security.Permission" table="jbp_cms_perm">
- <cache usage="read-write"/>
+ <cache usage="@portal.hibernate.cache.usage@"/>
<id
name="id"
column="ID"
@@ -337,19 +337,19 @@
</id>
<!-- one-to-many association with the criteria object -->
<set name="criteria" lazy="false" table="jbp_cms_perm_criteria" cascade="all-delete-orphan">
- <cache usage="read-write"/>
+ <cache usage="@portal.hibernate.cache.usage@"/>
<key column="CMS_PERM_ID"/>
<one-to-many class="org.jboss.portal.cms.security.Criteria"/>
</set>
<!-- many-to-many association with the role object -->
<set name="roleAssoc" lazy="false" cascade="all-delete-orphan">
- <cache usage="read-write"/>
+ <cache usage="@portal.hibernate.cache.usage@"/>
<key column="CMS_PERM_ID"/>
<one-to-many class="org.jboss.portal.cms.security.PermRoleAssoc"/>
</set>
<!-- many-to-many association with the user object -->
<set name="userAssoc" lazy="false" cascade="all-delete-orphan">
- <cache usage="read-write"/>
+ <cache usage="@portal.hibernate.cache.usage@"/>
<key column="CMS_PERM_ID"/>
<one-to-many class="org.jboss.portal.cms.security.PermUserAssoc"/>
</set>
Modified: branches/JBoss_Portal_2_6_6_JBPORTAL-2109/core-cms/src/resources/portal-cms-sar/conf/hibernate/cms/hibernate.cfg.xml
===================================================================
--- branches/JBoss_Portal_2_6_6_JBPORTAL-2109/core-cms/src/resources/portal-cms-sar/conf/hibernate/cms/hibernate.cfg.xml 2008-09-05 16:52:34 UTC (rev 11820)
+++ branches/JBoss_Portal_2_6_6_JBPORTAL-2109/core-cms/src/resources/portal-cms-sar/conf/hibernate/cms/hibernate.cfg.xml 2008-09-05 20:34:27 UTC (rev 11821)
@@ -33,8 +33,23 @@
<!-- caching properties -->
<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache">true</property>
- <property name="cache.provider_configuration_file_resource_path">conf/hibernate/cms/ehcache.xml</property>
- <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
+
+ <!--
+ | Uncomment in clustered mode : use transactional replicated cache
+ @portal.single.xml.close@
+ <property name="cache.provider_class">org.jboss.portal.jems.hibernate.JMXTreeCacheProvider</property>
+ <property name="cache.object_name">portal:service=TreeCacheProvider,type=hibernate</property>
+ @portal.single.xml.open@
+ -->
+
+ <!--
+ | Comment in clustered mode
+ @portal.clustered.xml.close@
+ <property name="cache.provider_configuration_file_resource_path">conf/hibernate/portal/ehcache.xml</property>
+ <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
+ @portal.clustered.xml.open@
+ -->
+
<!-- managed environment transaction configuration -->
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
17 years, 8 months
JBoss Portal SVN: r11820 - branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-09-05 12:52:34 -0400 (Fri, 05 Sep 2008)
New Revision: 11820
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java
Log:
- Minor.
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java 2008-09-05 16:34:41 UTC (rev 11819)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java 2008-09-05 16:52:34 UTC (rev 11820)
@@ -506,19 +506,13 @@
public String getDeclaredProperty(String name)
{
- if (name == null)
- {
- throw new IllegalArgumentException();
- }
- return (String)declaredPropertyMap.get(name);
+ ParameterValidation.throwIllegalArgExceptionIfNull(name, "property name");
+ return declaredPropertyMap.get(name);
}
public void setDeclaredProperty(String name, String value)
{
- if (name == null)
- {
- throw new IllegalArgumentException();
- }
+ ParameterValidation.throwIllegalArgExceptionIfNull(name, "property name");
if (value == null)
{
declaredPropertyMap.remove(name);
17 years, 8 months
JBoss Portal SVN: r11819 - branches/JBoss_Portal_Branch_2_7/server/src/main/org/jboss/portal/server/listener.
by portal-commits@lists.jboss.org
Author: thomas.heute(a)jboss.com
Date: 2008-09-05 12:34:41 -0400 (Fri, 05 Sep 2008)
New Revision: 11819
Modified:
branches/JBoss_Portal_Branch_2_7/server/src/main/org/jboss/portal/server/listener/SessionListener.java
Log:
oups
Modified: branches/JBoss_Portal_Branch_2_7/server/src/main/org/jboss/portal/server/listener/SessionListener.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/server/src/main/org/jboss/portal/server/listener/SessionListener.java 2008-09-05 16:31:11 UTC (rev 11818)
+++ branches/JBoss_Portal_Branch_2_7/server/src/main/org/jboss/portal/server/listener/SessionListener.java 2008-09-05 16:34:41 UTC (rev 11819)
@@ -78,7 +78,6 @@
public void sessionDestroyed(HttpSessionEvent arg0)
{
- System.out.println("Portal session got destroyed");
Set<String> contexts = (Set<String>)arg0.getSession().getAttribute(KEY);
MBeanServer server = MBeanServerLocator.locateJBoss();
17 years, 8 months
JBoss Portal SVN: r11818 - in branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal: test/core/model/portal/coordination and 1 other directory.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-09-05 12:31:11 -0400 (Fri, 05 Sep 2008)
New Revision: 11818
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
Log:
- getEventWirings was not processing all the events due to a weird break...
- Added test case that replicates the bug.
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-04 21:04:54 UTC (rev 11817)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-05 16:31:11 UTC (rev 11818)
@@ -356,7 +356,7 @@
if(propName.startsWith(PREFIX_EVENT_NAME))
{
String en = propName.substring(PREFIX_EVENT_NAME.length() + 1);
- EventInfoPOJO info = null;
+ EventInfoPOJO info;
if (!events.keySet().contains(en))
{
@@ -390,8 +390,6 @@
info.getDestinations().put((Window)window, qname);
}
}
-
- break;
}
}
}
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-04 21:04:54 UTC (rev 11817)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-05 16:31:11 UTC (rev 11818)
@@ -469,6 +469,32 @@
TransactionAssert.commitTransaction();
}
+ public void testAddMultipleEventWirings() throws IllegalCoordinationException
+ {
+ TransactionAssert.beginTransaction();
+
+ Portal portal1 = container.getContext("").getPortal("Portal_1");
+ Page page1 = portal1.getPage("Page_1");
+
+ Window w1 = page1.getWindow("Window_1");
+ Window w2 = page1.getWindow("Window_2");
+
+ Map<Window, QName> s1 = new HashMap<Window, QName>();
+ s1.put(w1, new QName("juju", "foo"));
+
+ Map<Window, QName> d1 = new HashMap<Window, QName>();
+ d1.put(w2, new QName("bobo", "bar"));
+
+ cos.setEventWiring(s1, d1, "event1");
+ cos.setEventWiring(s1, d1, "event2");
+
+ Collection<EventWiringInfo> events = cos.getEventWirings(page1);
+ assertNotNull(events);
+ assertEquals(2, events.size());
+
+ TransactionAssert.commitTransaction();
+ }
+
public void testRenameWindowBinding() throws Exception
{
TransactionAssert.beginTransaction();
17 years, 8 months
JBoss Portal SVN: r11817 - in branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal: test/core/model/portal/coordination and 1 other directory.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-09-04 17:04:54 -0400 (Thu, 04 Sep 2008)
New Revision: 11817
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
Log:
- Thought there was an issue with window checking. There isn't as evidenced by added test case.
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-04 21:04:10 UTC (rev 11816)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-04 21:04:54 UTC (rev 11817)
@@ -244,7 +244,8 @@
{
if (dw.contains(window))
{
- throw new IllegalCoordinationException("The same window cannot be source and destination of the same explicit wiring");
+ throw new IllegalCoordinationException("The same window '" + window.getName()
+ + "' cannot be source and destination of the same explicit wiring");
}
}
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-04 21:04:10 UTC (rev 11816)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-04 21:04:54 UTC (rev 11817)
@@ -441,6 +441,34 @@
TransactionAssert.commitTransaction();
}
+ public void testEventWiringSameWindowInBothSourcesAndDestinations() throws IllegalCoordinationException
+ {
+ TransactionAssert.beginTransaction();
+
+ Portal portal1 = container.getContext("").getPortal("Portal_1");
+ Page page1 = portal1.getPage("Page_1");
+
+ Window w1 = page1.getWindow("Window_1");
+
+ Map<Window, QName> s1 = new HashMap<Window, QName>();
+ s1.put(w1, new QName("juju", "foo"));
+
+ Map<Window, QName> d1 = new HashMap<Window, QName>();
+ d1.put(page1.getWindow("Window_1"), new QName("bobo", "bar"));
+
+ try
+ {
+ cos.setEventWiring(s1, d1, "event1");
+ fail("Should have detected that Window_1 is in both sources and destinations!");
+ }
+ catch (IllegalCoordinationException e)
+ {
+ // expected
+ }
+
+ TransactionAssert.commitTransaction();
+ }
+
public void testRenameWindowBinding() throws Exception
{
TransactionAssert.beginTransaction();
17 years, 8 months
JBoss Portal SVN: r11816 - in branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core: model/portal and 1 other directory.
by portal-commits@lists.jboss.org
Author: chris.laprun(a)jboss.com
Date: 2008-09-04 17:04:10 -0400 (Thu, 04 Sep 2008)
New Revision: 11816
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/PortalObject.java
Log:
- Added getChild(name, expectedType) convenience method.
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java 2008-09-04 19:38:50 UTC (rev 11815)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/model/portal/PortalObjectImpl.java 2008-09-04 21:04:10 UTC (rev 11816)
@@ -22,6 +22,15 @@
******************************************************************************/
package org.jboss.portal.core.impl.model.portal;
+import org.apache.log4j.Logger;
+import org.jboss.portal.common.NotYetImplemented;
+import org.jboss.portal.common.i18n.LocalizedString;
+import org.jboss.portal.common.util.ParameterValidation;
+import org.jboss.portal.core.model.portal.DuplicatePortalObjectException;
+import org.jboss.portal.core.model.portal.NoSuchPortalObjectException;
+import org.jboss.portal.core.model.portal.PortalObject;
+import org.jboss.portal.core.model.portal.PortalObjectId;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -35,14 +44,6 @@
import java.util.TreeMap;
import java.util.TreeSet;
-import org.apache.log4j.Logger;
-import org.jboss.portal.common.NotYetImplemented;
-import org.jboss.portal.common.i18n.LocalizedString;
-import org.jboss.portal.core.model.portal.DuplicatePortalObjectException;
-import org.jboss.portal.core.model.portal.NoSuchPortalObjectException;
-import org.jboss.portal.core.model.portal.PortalObject;
-import org.jboss.portal.core.model.portal.PortalObjectId;
-
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision$
@@ -420,10 +421,7 @@
public PortalObject getChild(String name)
{
- if (name == null)
- {
- throw new IllegalArgumentException();
- }
+ ParameterValidation.throwIllegalArgExceptionIfNull(name, "child name");
ObjectNode childNode = (ObjectNode)objectNode.getChildren().get(name);
if (childNode != null)
{
@@ -441,6 +439,20 @@
}
}
+ public <T extends PortalObject> T getChild(String name, Class<T> expectedType)
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNull(expectedType, "expected type");
+ PortalObject child = getChild(name);
+
+ // only return the child if it matches the expected class
+ if(expectedType.isInstance(child))
+ {
+ return expectedType.cast(child);
+ }
+
+ return null;
+ }
+
private Set getAccessedChildren()
{
if (accessedChildren == null)
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/PortalObject.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/PortalObject.java 2008-09-04 19:38:50 UTC (rev 11815)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/PortalObject.java 2008-09-04 21:04:10 UTC (rev 11816)
@@ -22,11 +22,11 @@
******************************************************************************/
package org.jboss.portal.core.model.portal;
+import org.jboss.portal.common.i18n.LocalizedString;
+
import java.util.Collection;
import java.util.Map;
-import org.jboss.portal.common.i18n.LocalizedString;
-
/**
* The base interface for all portal objects.
*
@@ -97,7 +97,7 @@
/**
* Set the localized string used to represent that object.
*
- * @param the localized display name
+ * @param localizedString the localized display name
*/
void setDisplayName(LocalizedString localizedString);
@@ -144,6 +144,18 @@
PortalObject getChild(String name);
/**
+ * Returns the child of the specified type and with the given name or <code>null</code> if it cannot be found.
+ *
+ * @param name the child's name
+ * @param expectedType the expected type of the child to be retrieved
+ * @param <T> a class extending PortalObject
+ * @return the named child or <code>null</code> if it cannot be found
+ * @throws IllegalArgumentException if the specified name or the specified class is <code>null</code>
+ * @since 2.7
+ */
+ <T extends PortalObject> T getChild(String name, Class<T> expectedType);
+
+ /**
* Destroy an existing child.
*
* @param name the child name
17 years, 8 months