[portal-commits] JBoss Portal SVN: r11834 - in branches/JBoss_Portal_Branch_2_7: core/src/main/org/jboss/portal/core/impl/coordination and 4 other directories.
portal-commits at lists.jboss.org
portal-commits at lists.jboss.org
Mon Sep 8 17:45:10 EDT 2008
Author: chris.laprun at jboss.com
Date: 2008-09-08 17:45:10 -0400 (Mon, 08 Sep 2008)
New Revision: 11834
Added:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/Utils.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowMultiQNameMetaData.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowSimpleQNameMetaData.java
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/WEB-INF/classes/Resource.properties
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/WindowBindingInfo.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/core/model/portal/metadata/coordination/CoordinationAliasBindingMetaData.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationEventWiringMetaData.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationMetaData.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowBindingMetaData.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowMetaData.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java
Log:
- Implemented possibility to select several parameters for a given window. Not convinced this
is the proper way to do things but committing so it's not lost. Might be reverted.
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-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/CoordinationConfigurator.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -151,10 +151,10 @@
* Defines shared parameter binding for a given collection of windows.
*
* @param name
- * @param windows
+ * @param mappings
* @throws IllegalCoordinationException
*/
- void setWindowBinding(String name, Map<Window, QName> windows) throws IllegalCoordinationException;
+ void setWindowBinding(String name, Map<Window, Set<QName>> mappings) throws IllegalCoordinationException;
/**
* Removes given parameter binding
Added: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/Utils.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/Utils.java (rev 0)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/Utils.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -0,0 +1,54 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2008, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.core.controller.coordination;
+
+import org.jboss.portal.common.util.ParameterValidation;
+
+import java.util.Set;
+import java.util.Map;
+import java.util.HashSet;
+
+/**
+ * @author <a href="mailto:chris.laprun at jboss.com">Chris Laprun</a>
+ * @version $Revision$
+ */
+public class Utils
+{
+ public static <T, U> Map<T, Set<U>> addToMultiMap(Map<T, Set<U>> multiMap, T key, U value)
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNull(multiMap, "multi map");
+ ParameterValidation.throwIllegalArgExceptionIfNull(key, "key");
+ ParameterValidation.throwIllegalArgExceptionIfNull(value, "value");
+
+ Set<U> existing = multiMap.get(key);
+ if (existing == null)
+ {
+ existing = new HashSet<U>();
+ multiMap.put(key, existing);
+ }
+
+ existing.add(value);
+
+ return multiMap;
+ }
+}
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/WindowBindingInfo.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/WindowBindingInfo.java 2008-09-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/coordination/WindowBindingInfo.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -26,6 +26,7 @@
import javax.xml.namespace.QName;
import java.util.Map;
+import java.util.Set;
/**
* @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
@@ -34,5 +35,5 @@
*/
public interface WindowBindingInfo extends ParameterBindingInfo
{
- Map<Window, QName> getWindows();
+ Map<Window, Set<QName>> getMappings();
}
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-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/impl/coordination/CoordinationService.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -30,6 +30,7 @@
import org.jboss.portal.core.controller.coordination.EventWiringInfo;
import org.jboss.portal.core.controller.coordination.IllegalCoordinationException;
import org.jboss.portal.core.controller.coordination.WindowBindingInfo;
+import org.jboss.portal.core.controller.coordination.Utils;
import org.jboss.portal.core.controller.portlet.ControllerPortletControllerContext;
import org.jboss.portal.core.model.portal.Page;
import org.jboss.portal.core.model.portal.PageContainer;
@@ -130,11 +131,17 @@
for (WindowBindingInfo info : getWindowBindings(window))
{
- for (Map.Entry<Window, QName> entry : info.getWindows().entrySet())
+ for (Map.Entry<Window, Set<QName>> entry : info.getMappings().entrySet())
{
- if (entry.getKey().getName().equals(window.getName()) && entry.getValue().equals(name))
+ if (entry.getKey().getName().equals(window.getName()))
{
- names.add(info.getName());
+ for (QName qName : entry.getValue())
+ {
+ if (name.equals(qName))
+ {
+ names.add(info.getName());
+ }
+ }
}
}
}
@@ -380,7 +387,7 @@
+ window.getId());
}
- QName qname = decodeQName(eventName);
+ QName qname = QName.valueOf(eventName);
if (role.equalsIgnoreCase(EVENT_ROLE_SOURCE))
{
@@ -443,7 +450,7 @@
String name = window.getDeclaredProperty(prop_wiring);
if (name != null)
{
- QName qname = decodeQName(name);
+ QName qname = QName.valueOf(name);
String role = window.getDeclaredProperty(propName);
if (role != null && role.equalsIgnoreCase(EVENT_ROLE_SOURCE))
@@ -507,18 +514,18 @@
// Binding stuff *****************************************************************************************
- public void setWindowBinding(String name, Map<Window, QName> windows) throws IllegalCoordinationException
+ public void setWindowBinding(String name, Map<Window, Set<QName>> mappings) throws IllegalCoordinationException
{
- ParameterValidation.throwIllegalArgExceptionIfNull(windows, "windows");
+ ParameterValidation.throwIllegalArgExceptionIfNull(mappings, "windows");
ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(name, "name", "window binding");
- if (windows.isEmpty())
+ if (mappings.isEmpty())
{
throw new IllegalArgumentException("empty windows map");
}
// Obtain parent page and check that all windows are in one branch...
Page parentPage = null;
- for (Window window : windows.keySet())
+ for (Window window : mappings.keySet())
{
if (parentPage == null)
{
@@ -534,9 +541,9 @@
String prop_wiring = PREFIX_PARAMETER_BINDING + name;
//
- for (Window window : windows.keySet())
+ for (Window window : mappings.keySet())
{
- window.setDeclaredProperty(prop_wiring, windows.get(window).toString());
+ window.setDeclaredProperty(prop_wiring, concatenateQNames(mappings.get(window)));
}
}
@@ -562,14 +569,14 @@
public void renameWindowBinding(WindowBindingInfo windowBinding, String newName) throws IllegalCoordinationException
{
removeWindowBinding(windowBinding);
- setWindowBinding(newName, windowBinding.getWindows());
+ setWindowBinding(newName, windowBinding.getMappings());
}
public void renameWindowBinding(Page page, String bindingName, String newName) throws IllegalCoordinationException
{
WindowBindingInfo info = getWindowBinding(page, bindingName);
removeWindowBinding(page, bindingName);
- setWindowBinding(newName, info.getWindows());
+ setWindowBinding(newName, info.getMappings());
}
public WindowBindingInfo getWindowBinding(Page page, String name) throws IllegalCoordinationException
@@ -581,25 +588,24 @@
// 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());
+ Map<Window, Set<QName>> mappings = new HashMap<Window, Set<QName>>(children.size());
for (PortalObject window : children)
{
- String bindingName = window.getDeclaredProperty(nameProp);
+ String qNameList = window.getDeclaredProperty(nameProp);
- if (bindingName != null)
+ if (qNameList != null)
{
- QName qname = decodeQName(bindingName);
- windows.put((Window)window, qname);
+ mappings.put((Window)window, extractQNames(qNameList));
}
}
- if (windows.isEmpty())
+ if (mappings.isEmpty())
{
return null;
}
else
{
- return new WindowInfoPOJO(name, page, windows);
+ return new WindowInfoPOJO(name, page, mappings);
}
}
@@ -639,27 +645,27 @@
String propName = PREFIX_PARAMETER_ALIAS_NAME + aliasName;
- // Check if qname consist separator string
- for (QName qname : qnames)
+ page.setDeclaredProperty(propName, concatenateQNames(qnames));
+ }
+
+ private String concatenateQNames(Set<QName> qnames) throws IllegalCoordinationException
+ {
+ StringBuilder qnameList = new StringBuilder();
+ for (Iterator i = qnames.iterator(); i.hasNext();)
{
+ QName qname = (QName)i.next();
+ // Check if qname contains separator string
if (qname.toString().contains(QNAME_SEPARATOR))
{
throw new IllegalCoordinationException("Qname: " + qname + " contains forbidden character: " + QNAME_SEPARATOR);
}
- }
-
- StringBuilder qnameList = new StringBuilder();
- for (Iterator i = qnames.iterator(); i.hasNext();)
- {
- QName qname = (QName)i.next();
qnameList.append(qname.toString());
if (i.hasNext())
{
qnameList.append(QNAME_SEPARATOR);
}
}
-
- page.setDeclaredProperty(propName, qnameList.toString());
+ return qnameList.toString();
}
public void removeAliasBinding(AliasBindingInfo aliasInfo) throws IllegalCoordinationException
@@ -728,13 +734,7 @@
String qNameList = page.getDeclaredProperty(nameProp);
if (qNameList != null)
{
- String[] qnames = qNameList.split(QNAME_SEPARATOR);
- Set<QName> names = new HashSet<QName>(qnames.length);
- for (String string : qnames)
- {
- QName qname = QName.valueOf(string);
- names.add(qname);
- }
+ Set<QName> names = extractQNames(qNameList);
return new AliasInfoPOJO(name, page, names);
}
else
@@ -743,6 +743,18 @@
}
}
+ private Set<QName> extractQNames(String qNameList)
+ {
+ String[] qnames = qNameList.split(QNAME_SEPARATOR);
+ Set<QName> names = new HashSet<QName>(qnames.length);
+ for (String string : qnames)
+ {
+ QName qname = QName.valueOf(string);
+ names.add(qname);
+ }
+ return names;
+ }
+
public Collection<? extends WindowBindingInfo> getWindowBindings(Page page, QName parameterName)
{
ParameterValidation.throwIllegalArgExceptionIfNull(page, "Page");
@@ -752,7 +764,7 @@
Collection<WindowBindingInfo> infos = new HashSet<WindowBindingInfo>();
for (WindowBindingInfo pageParam : pageParams)
{
- if (pageParam.getWindows().containsValue(parameterName))
+ if (pageParam.getMappings().containsValue(parameterName))
{
infos.add(pageParam);
}
@@ -766,7 +778,7 @@
Collection<WindowBindingInfo> infos = new HashSet<WindowBindingInfo>();
for (WindowBindingInfo pageParam : pageParams)
{
- if (pageParam.getWindows().keySet().contains(window))
+ if (pageParam.getMappings().keySet().contains(window))
{
infos.add(pageParam);
}
@@ -806,7 +818,7 @@
//TODO: if the information from properties is not consistent should we throw exception?
if (binding != null)
{
- QName qname = decodeQName(binding);
+ QName qname = QName.valueOf(binding);
if (qname != null)
{
info.addMapping((Window)child, qname);
@@ -912,12 +924,7 @@
return null;
}
- private QName decodeQName(String fullString)
- {
- return QName.valueOf(fullString);
- }
-
private class EventInfoPOJO implements EventWiringInfo
{
private final String name;
@@ -967,19 +974,19 @@
private class WindowInfoPOJO implements WindowBindingInfo
{
private final String name;
- private final Map<Window, QName> windows;
+ private Map<Window, Set<QName>> mappings;
private final Page page;
- private WindowInfoPOJO(String name, Page page, Map<Window, QName> windows)
+ private WindowInfoPOJO(String name, Page page, Map<Window, Set<QName>> mappings)
{
this.name = name;
- this.windows = windows;
+ this.mappings = mappings;
this.page = page;
}
private WindowInfoPOJO(String name, Page page)
{
- this(name, page, new HashMap<Window, QName>());
+ this(name, page, new HashMap<Window, Set<QName>>());
}
public String getName()
@@ -987,9 +994,9 @@
return name;
}
- public Map<Window, QName> getWindows()
+ public Map<Window, Set<QName>> getMappings()
{
- return Collections.unmodifiableMap(windows);
+ return Collections.unmodifiableMap(mappings);
}
public Page getPage()
@@ -999,7 +1006,7 @@
private void addMapping(Window window, QName qname)
{
- windows.put(window, qname);
+ mappings = Utils.addToMultiMap(mappings, window, qname);
}
}
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationAliasBindingMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationAliasBindingMetaData.java 2008-09-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationAliasBindingMetaData.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -25,6 +25,7 @@
import org.w3c.dom.Element;
import org.jboss.portal.common.xml.XMLTools;
+import javax.xml.namespace.QName;
import java.util.List;
import java.util.LinkedList;
import java.util.Iterator;
@@ -39,19 +40,19 @@
{
private String name;
- private Set<String> qnames = new HashSet<String>();
+ private Set<QName> qnames = new HashSet<QName>();
- public CoordinationAliasBindingMetaData(String name)
+ private CoordinationAliasBindingMetaData(String name)
{
this.name = name;
}
- public Set<String> getQnames()
+ public Set<QName> getQnames()
{
return qnames;
}
- public void setQnames(Set<String> qnames)
+ public void setQnames(Set<QName> qnames)
{
this.qnames = qnames;
}
@@ -66,9 +67,9 @@
this.name = name;
}
- public void addQName(String qname)
+ private void addQName(String qname)
{
- qnames.add(qname);
+ qnames.add(QName.valueOf(qname));
}
public static CoordinationAliasBindingMetaData buildMetaData(Element bindingElement)
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationEventWiringMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationEventWiringMetaData.java 2008-09-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationEventWiringMetaData.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -39,9 +39,9 @@
private String name;
- private List<CoordinationWindowMetaData> sources = new LinkedList<CoordinationWindowMetaData>();
+ private List<CoordinationWindowSimpleQNameMetaData> sources = new LinkedList<CoordinationWindowSimpleQNameMetaData>();
- private List<CoordinationWindowMetaData> destinations = new LinkedList<CoordinationWindowMetaData>();
+ private List<CoordinationWindowSimpleQNameMetaData> destinations = new LinkedList<CoordinationWindowSimpleQNameMetaData>();
public CoordinationEventWiringMetaData(String name)
{
@@ -58,33 +58,23 @@
this.name = name;
}
- public List<CoordinationWindowMetaData> getSources()
+ public List<CoordinationWindowSimpleQNameMetaData> getSources()
{
return sources;
}
- public void setSources(List<CoordinationWindowMetaData> sources)
+ private void addSource(CoordinationWindowSimpleQNameMetaData window)
{
- this.sources = sources;
- }
-
- public void addSource(CoordinationWindowMetaData window)
- {
this.sources.add(window);
}
- public List<CoordinationWindowMetaData> getDestinations()
+ public List<CoordinationWindowSimpleQNameMetaData> getDestinations()
{
return destinations;
}
- public void setDestinations(List<CoordinationWindowMetaData> destinations)
+ private void addDestination(CoordinationWindowSimpleQNameMetaData window)
{
- this.destinations = destinations;
- }
-
- public void addDestination(CoordinationWindowMetaData window)
- {
this.destinations.add(window);
}
@@ -102,7 +92,7 @@
{
Element element = (Element)windowIter.next();
- wiringMD.addSource(CoordinationWindowMetaData.buildMetaData(element));
+ wiringMD.addSource(CoordinationWindowSimpleQNameMetaData.buildMetaData(element));
}
Element destinationsElt = XMLTools.getUniqueChild(wiringElement, "destinations", true);
@@ -113,7 +103,7 @@
{
Element element = (Element)windowIter.next();
- wiringMD.addDestination(CoordinationWindowMetaData.buildMetaData(element));
+ wiringMD.addDestination(CoordinationWindowSimpleQNameMetaData.buildMetaData(element));
}
return wiringMD;
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationMetaData.java 2008-09-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationMetaData.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -38,7 +38,6 @@
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
-import java.util.HashSet;
/**
* @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
@@ -81,7 +80,6 @@
}
-
Element bindingsElement = XMLTools.getUniqueChild(coordinationElt, "bindings", false);
if (bindingsElement != null)
@@ -153,29 +151,34 @@
for (CoordinationWindowBindingMetaData windowBinding : windowBindings)
{
- Map<Window, QName> bindings = new HashMap<Window, QName>();
+ Map<Window, Set<QName>> bindings = new HashMap<Window, Set<QName>>();
- populateWindows(bindings, windowBinding.getWindows(), page);
+ for (CoordinationWindowMultiQNameMetaData windowMD : windowBinding.getWindows())
+ {
+ String windowName = windowMD.getWindowName();
+ Window window = page.getWindow(windowName);
+ if (window == null)
+ {
+ throw new IllegalCoordinationException("Cannot obtain window: \"" + windowName + "\" on page: "
+ + page.getName());
+ }
+
+ bindings.put(window, windowMD.getNames());
+ }
+
buildContext.getCoordinationConfigurator().setWindowBinding(windowBinding.getName(), bindings);
}
for (CoordinationAliasBindingMetaData windowBinding : aliasBindings)
{
- Set<QName> qnames = new HashSet<QName>();
-
- for (String name : windowBinding.getQnames())
- {
- qnames.add(QName.valueOf(name));
- }
-
- buildContext.getCoordinationConfigurator().setAliasBinding(page, windowBinding.getName(), qnames);
+ buildContext.getCoordinationConfigurator().setAliasBinding(page, windowBinding.getName(), windowBinding.getQnames());
}
for (CoordinationEventWiringMetaData wiring : wirings)
{
- Map<Window, QName> sources = new HashMap<Window,QName>();
- Map<Window, QName> destinations = new HashMap<Window,QName>();
+ Map<Window, QName> sources = new HashMap<Window, QName>();
+ Map<Window, QName> destinations = new HashMap<Window, QName>();
populateWindows(sources, wiring.getSources(), page);
populateWindows(destinations, wiring.getDestinations(), page);
@@ -188,17 +191,17 @@
}
- private static void populateWindows(Map<Window, QName> map, List<CoordinationWindowMetaData> windows, Page page) throws IllegalCoordinationException
+ private static void populateWindows(Map<Window, QName> map, List<CoordinationWindowSimpleQNameMetaData> windows, Page page) throws IllegalCoordinationException
{
- for (CoordinationWindowMetaData windowMD : windows)
+ for (CoordinationWindowSimpleQNameMetaData windowMD : windows)
{
- QName name = QName.valueOf(windowMD.getQname());
+ QName name = windowMD.getQname();
Window window = page.getWindow(windowMD.getWindowName());
if (window == null)
{
throw new IllegalCoordinationException("Cannot obtain window: \"" + windowMD.getWindowName() + "\" on page: "
- + page.getName());
+ + page.getName());
}
map.put(window, name);
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowBindingMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowBindingMetaData.java 2008-09-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowBindingMetaData.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -37,23 +37,18 @@
{
private String name;
- List<CoordinationWindowMetaData> windows = new LinkedList<CoordinationWindowMetaData>();
+ List<CoordinationWindowMultiQNameMetaData> windows = new LinkedList<CoordinationWindowMultiQNameMetaData>();
public CoordinationWindowBindingMetaData(String name)
{
this.name = name;
}
- public List<CoordinationWindowMetaData> getWindows()
+ public List<CoordinationWindowMultiQNameMetaData> getWindows()
{
return windows;
}
- public void setWindows(List<CoordinationWindowMetaData> windows)
- {
- this.windows = windows;
- }
-
public String getName()
{
return name;
@@ -64,7 +59,7 @@
this.name = name;
}
- public void addWindow(CoordinationWindowMetaData window)
+ private void addWindow(CoordinationWindowMultiQNameMetaData window)
{
windows.add(window);
}
@@ -80,7 +75,7 @@
{
Element element = (Element)windowIter.next();
- paramMetaData.addWindow(CoordinationWindowMetaData.buildMetaData(element));
+ paramMetaData.addWindow(CoordinationWindowMultiQNameMetaData.buildMetaData(element));
}
return paramMetaData;
Modified: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowMetaData.java 2008-09-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowMetaData.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -31,17 +31,13 @@
* @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
* @version : 0.1 $
*/
-public class CoordinationWindowMetaData
+public abstract class CoordinationWindowMetaData
{
-
private String windowName;
- private String qname;
-
- public CoordinationWindowMetaData(String windowName, String qname)
+ protected CoordinationWindowMetaData(String windowName)
{
this.windowName = windowName;
- this.qname = qname;
}
public String getWindowName()
@@ -54,21 +50,4 @@
this.windowName = windowName;
}
- public String getQname()
- {
- return qname;
- }
-
- public void setQname(String qname)
- {
- this.qname = qname;
- }
-
- public static CoordinationWindowMetaData buildMetaData(Element element)
- {
- Element name = XMLTools.getUniqueChild(element, "window-name", true);
- Element qname = XMLTools.getUniqueChild(element, "qname", true);
-
- return new CoordinationWindowMetaData(XMLTools.asString(name), XMLTools.asString(qname));
- }
}
\ No newline at end of file
Added: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowMultiQNameMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowMultiQNameMetaData.java (rev 0)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowMultiQNameMetaData.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -0,0 +1,72 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2008, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.core.model.portal.metadata.coordination;
+
+import org.jboss.portal.common.xml.XMLTools;
+import org.w3c.dom.Element;
+
+import javax.xml.namespace.QName;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.HashSet;
+
+/**
+ * @author <a href="mailto:chris.laprun at jboss.com">Chris Laprun</a>
+ * @version $Revision$
+ */
+public class CoordinationWindowMultiQNameMetaData extends CoordinationWindowMetaData
+{
+ private Set<QName> names = new HashSet<QName>();
+
+ private CoordinationWindowMultiQNameMetaData(String name)
+ {
+ super(name);
+ }
+
+ public Set<QName> getNames()
+ {
+ return names;
+ }
+
+ private void addQName(String qname)
+ {
+ names.add(QName.valueOf(qname));
+ }
+
+ public static CoordinationWindowMultiQNameMetaData buildMetaData(Element element)
+ {
+ Element name = XMLTools.getUniqueChild(element, "window-name", true);
+ CoordinationWindowMultiQNameMetaData metaData = new CoordinationWindowMultiQNameMetaData(XMLTools.asString(name));
+
+ Iterator qnameIter = XMLTools.getChildrenIterator(element, "qname");
+
+ while (qnameIter.hasNext())
+ {
+ Element qName = (Element)qnameIter.next();
+
+ metaData.addQName(XMLTools.asString(qName));
+ }
+
+ return metaData;
+ }
+}
Added: branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowSimpleQNameMetaData.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowSimpleQNameMetaData.java (rev 0)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/metadata/coordination/CoordinationWindowSimpleQNameMetaData.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -0,0 +1,61 @@
+/*
+* JBoss, a division of Red Hat
+* Copyright 2008, Red Hat Middleware, LLC, and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+
+package org.jboss.portal.core.model.portal.metadata.coordination;
+
+import org.w3c.dom.Element;
+import org.jboss.portal.common.xml.XMLTools;
+
+import javax.xml.namespace.QName;
+
+/**
+ * @author <a href="mailto:chris.laprun at jboss.com">Chris Laprun</a>
+ * @version $Revision$
+ */
+public class CoordinationWindowSimpleQNameMetaData extends CoordinationWindowMetaData
+{
+ private QName qname;
+
+ private CoordinationWindowSimpleQNameMetaData(String windowName, QName qname)
+ {
+ super(windowName);
+ this.qname = qname;
+ }
+
+ public QName getQname()
+ {
+ return qname;
+ }
+
+ public void setQname(QName qname)
+ {
+ this.qname = qname;
+ }
+
+ public static CoordinationWindowSimpleQNameMetaData buildMetaData(Element element)
+ {
+ Element name = XMLTools.getUniqueChild(element, "window-name", true);
+ Element qname = XMLTools.getUniqueChild(element, "qname", true);
+
+ return new CoordinationWindowSimpleQNameMetaData(XMLTools.asString(name), QName.valueOf(XMLTools.asString(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-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/test/core/model/portal/coordination/CoordinationServiceTestCase.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -49,6 +49,7 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import java.util.Collections;
/**
* @author <a href="mailto:boleslaw dot dawidowicz at redhat anotherdot com">Boleslaw Dawidowicz</a>
@@ -271,10 +272,10 @@
Window w4 = page1.getWindow("Window_4");
- Map<Window, QName> ws = new HashMap<Window, QName>();
- ws.put(w1, new QName("juju", "foo"));
- ws.put(w2, new QName("juju", "foo1"));
- ws.put(w4, new QName("juju", "foo3"));
+ Map<Window, Set<QName>> ws = new HashMap<Window, Set<QName>>();
+ ws.put(w1, Collections.singleton(new QName("juju", "foo")));
+ ws.put(w2, Collections.singleton(new QName("juju", "foo1")));
+ ws.put(w4, Collections.singleton(new QName("juju", "foo3")));
cos.setWindowBinding("binding1", ws);
@@ -282,13 +283,13 @@
assertEquals(1, bindings.size());
- Map<Window, QName> windows = bindings.iterator().next().getWindows();
+ Map<Window, Set<QName>> mappings = bindings.iterator().next().getMappings();
- assertEquals(3, windows.size());
+ assertEquals(3, mappings.size());
- assertTrue(windows.containsKey(w1));
- assertTrue(windows.containsKey(w2));
- assertTrue(windows.containsKey(w4));
+ assertTrue(mappings.containsKey(w1));
+ assertTrue(mappings.containsKey(w2));
+ assertTrue(mappings.containsKey(w4));
cos.removeWindowBinding(bindings.iterator().next());
@@ -311,39 +312,39 @@
Window w4 = page1.getWindow("Window_4");
- Map<Window, QName> ws = new HashMap<Window, QName>();
+ Map<Window, Set<QName>> ws = new HashMap<Window, Set<QName>>();
QName qName11 = new QName("ns1", "1");
QName qName12 = new QName("ns1", "2");
- ws.put(w1, qName11);
- ws.put(w2, qName12);
+ ws.put(w1, Collections.singleton(qName11));
+ ws.put(w2, Collections.singleton(qName12));
cos.setWindowBinding("binding1", ws);
QName qName21 = new QName("ns2", "foo3");
ws.clear();
- ws.put(w4, qName21);
+ ws.put(w4, Collections.singleton(qName21));
cos.setWindowBinding("binding2", ws);
WindowBindingInfo info = cos.getWindowBinding(page1, "binding1");
assertNotNull(info);
assertEquals("binding1", info.getName());
assertEquals(page1, info.getPage());
- Map<Window, QName> windows = info.getWindows();
+ Map<Window, Set<QName>> windows = info.getMappings();
assertNotNull(windows);
assertEquals(2, windows.size());
assertTrue(windows.containsKey(w1));
assertTrue(windows.containsKey(w2));
- assertEquals(qName11, windows.get(w1));
- assertEquals(qName12, windows.get(w2));
+ assertEquals(Collections.singleton(qName11), windows.get(w1));
+ assertEquals(Collections.singleton(qName12), windows.get(w2));
info = cos.getWindowBinding(page1, "binding2");
assertNotNull(info);
assertEquals("binding2", info.getName());
assertEquals(page1, info.getPage());
- windows = info.getWindows();
+ windows = info.getMappings();
assertNotNull(windows);
assertEquals(1, windows.size());
assertTrue(windows.containsKey(w4));
- assertEquals(qName21, windows.get(w4));
+ assertEquals(Collections.singleton(qName21), windows.get(w4));
TransactionAssert.commitTransaction();
}
@@ -358,16 +359,16 @@
Window w2 = page1.getWindow("Window_2");
Window w4 = page1.getWindow("Window_4");
- Map<Window, QName> ws = new HashMap<Window, QName>();
+ Map<Window, Set<QName>> ws = new HashMap<Window, Set<QName>>();
QName qName11 = new QName("ns1", "1");
QName qName12 = new QName("ns1", "2");
- ws.put(w1, qName11);
- ws.put(w2, qName12);
+ ws.put(w1, Collections.singleton(qName11));
+ ws.put(w2, Collections.singleton(qName12));
cos.setWindowBinding("binding1", ws);
QName qName21 = new QName("ns2", "foo3");
ws.clear();
- ws.put(w4, qName21);
+ ws.put(w4, Collections.singleton(qName21));
cos.setWindowBinding("binding2", ws);
Collection<? extends WindowBindingInfo> infos = cos.getWindowBindings(page1);
@@ -732,9 +733,9 @@
Window w1 = page1.getWindow("Window_1");
Window w2 = 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"));
+ Map<Window, Set<QName>> ws = new HashMap<Window, Set<QName>>();
+ ws.put(w1, Collections.singleton(new QName("juju", "foo")));
+ ws.put(w2, Collections.singleton(new QName("juju", "foo1")));
cos.setWindowBinding("binding1", ws);
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-09-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-09-08 21:45:10 UTC (rev 11834)
@@ -24,6 +24,7 @@
import org.jboss.portal.core.controller.coordination.IllegalCoordinationException;
import org.jboss.portal.core.controller.coordination.WindowBindingInfo;
+import org.jboss.portal.core.controller.coordination.Utils;
import org.jboss.portal.core.model.portal.Page;
import org.jboss.portal.core.model.portal.PortalObject;
import org.jboss.portal.core.model.portal.Window;
@@ -155,14 +156,14 @@
{
if (windowBindingName != null)
{
- Map<Window, QName> windowBinding = new HashMap<Window, QName>();
+ Map<Window, Set<QName>> windowBinding = new HashMap<Window, Set<QName>>();
for (String pairAsString : selectedParameterWindowPairs)
{
// get ParameterWindowPair from String
String[] names = ParameterWindowPair.resolveFrom(pairAsString);
Window window = (Window)managerBean.getSelectedPage().getChild(names[ParameterWindowPair.WINDOW_NAME]);
- windowBinding.put(window, QName.valueOf(names[ParameterWindowPair.PARAM_NAME]));
+ Utils.addToMultiMap(windowBinding, window, QName.valueOf(names[ParameterWindowPair.PARAM_NAME]));
}
managerBean.getCoordinationService().setWindowBinding(windowBindingName, windowBinding);
@@ -212,11 +213,15 @@
public DisplayParameterBinding(WindowBindingInfo bindingInfo)
{
this.bindingInfo = bindingInfo;
- Set<Map.Entry<Window, QName>> entries = bindingInfo.getWindows().entrySet();
+ Set<Map.Entry<Window, Set<QName>>> entries = bindingInfo.getMappings().entrySet();
parameterWindowPairs = new LinkedList<ParameterWindowPair>();
- for (Map.Entry<Window, QName> entry : entries)
+ for (Map.Entry<Window, Set<QName>> entry : entries)
{
- parameterWindowPairs.add(new ParameterWindowPair(entry.getValue(), entry.getKey()));
+ Window window = entry.getKey();
+ for (QName qName : entry.getValue())
+ {
+ parameterWindowPairs.add(new ParameterWindowPair(qName, window));
+ }
}
}
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/WEB-INF/classes/Resource.properties
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/WEB-INF/classes/Resource.properties 2008-09-08 14:31:05 UTC (rev 11833)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/resources/portal-admin-war/WEB-INF/classes/Resource.properties 2008-09-08 21:45:10 UTC (rev 11834)
@@ -274,7 +274,7 @@
COORDINATION_PARAMETER_MANAGE_EXISTING=Manage existing parameter bindings:
COORDINATION_PARAMETER_EXISTING_NONE=No existing parameter bindings.
COORDINATION_PARAMETER_EXISTING_NAME=Name
-COORDINATION_PARAMETER_EXISTING_PAIRS=Parameter <-> window pairs
+COORDINATION_PARAMETER_EXISTING_PAIRS=Window <-> parameter pairs
COORDINATION_PARAMETER_EXISTING_ACTIONS=Actions
COORDINATION_PARAMETER_CREATE=Create new parameter binding:
COORDINATION_PARAMETER_CREATE_NO_PAIRS=No available public render parameters. Cannot create new parameter bindings.
More information about the portal-commits
mailing list