Author: julien_viet
Date: 2009-09-09 19:49:09 -0400 (Wed, 09 Sep 2009)
New Revision: 168
Modified:
components/mop/trunk/core/pom.xml
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/MOPService.java
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/ModelImpl.java
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/UIComponentImpl.java
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/UIContainerImpl.java
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/WorkspaceObjectImpl.java
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/content/ContextSpecialization.java
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/composer/StructureIteratorTestCase.java
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/POMTestCase.java
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/WorkspaceTestCase.java
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/content/CustomizationTestCase.java
Log:
use java.util.List mapping for UIContainer children
Modified: components/mop/trunk/core/pom.xml
===================================================================
--- components/mop/trunk/core/pom.xml 2009-09-08 16:34:13 UTC (rev 167)
+++ components/mop/trunk/core/pom.xml 2009-09-09 23:49:09 UTC (rev 168)
@@ -69,25 +69,25 @@
<dependency>
<groupId>org.chromattic</groupId>
<artifactId>chromattic.api</artifactId>
- <version>1.0.0-beta1</version>
+ <version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.chromattic</groupId>
<artifactId>chromattic.core</artifactId>
- <version>1.0.0-beta1</version>
+ <version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.chromattic</groupId>
<artifactId>chromattic.apt</artifactId>
- <version>1.0.0-beta1</version>
+ <version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.chromattic</groupId>
<artifactId>chromattic.exo</artifactId>
- <version>1.0.0-beta1</version>
+ <version>1.0.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
Modified: components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/MOPService.java
===================================================================
---
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/MOPService.java 2009-09-08
16:34:13 UTC (rev 167)
+++
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/MOPService.java 2009-09-09
23:49:09 UTC (rev 168)
@@ -70,7 +70,7 @@
ChromatticBuilder builder = ChromatticBuilder.create();
// builder.setOption(ChromatticBuilder.INSTRUMENTOR_CLASSNAME,
"org.chromattic.cglib.CGLibInstrumentor");
builder.setOption(ChromatticBuilder.INSTRUMENTOR_CLASSNAME,
"org.chromattic.apt.InstrumentorImpl");
- builder.setOption(ChromatticBuilder.OBJECT_NAME_FORMATTER_CLASSNAME,
MOPFormatter.class.getName());
+ builder.setOption(ChromatticBuilder.OBJECT_FORMATTER_CLASSNAME,
MOPFormatter.class.getName());
//
this.builder = builder;
Modified: components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/ModelImpl.java
===================================================================
---
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/ModelImpl.java 2009-09-08
16:34:13 UTC (rev 167)
+++
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/ModelImpl.java 2009-09-09
23:49:09 UTC (rev 168)
@@ -33,10 +33,12 @@
import org.gatein.mop.api.workspace.ObjectType;
import org.gatein.mop.api.workspace.WorkspaceObject;
import org.gatein.mop.api.Model;
-import org.chromattic.api.LifeCycleListener;
import org.chromattic.api.ChromatticSession;
import org.chromattic.api.query.QueryLanguage;
import org.chromattic.api.query.Query;
+import org.chromattic.api.query.ObjectQueryBuilder;
+import org.chromattic.api.query.ObjectQuery;
+import org.chromattic.api.event.LifeCycleListener;
import java.util.Iterator;
@@ -81,7 +83,7 @@
this.contentManager = new ContentManagerImpl(contentManagers,
customizationContextResolvers, session);
//
- session.addLifeCycleListener(contextualizer);
+ session.addEventListener(contextualizer);
}
public Workspace getWorkspace() {
@@ -110,7 +112,7 @@
session.close();
}
- private final LifeCycleListener<Object> contextualizer = new
LifeCycleListener<Object>() {
+ private final LifeCycleListener contextualizer = new LifeCycleListener() {
public void created(Object o) {
inject(o, false);
}
@@ -125,8 +127,7 @@
};
public <O extends WorkspaceObject> Iterator<O>
findObject(ObjectType<O> type, String statement) {
- Query q = session.createQuery(QueryLanguage.SQL, statement);
- return q.execute(type.getJavaType());
+ return
session.createQueryBuilder().from(type.getJavaType()).<O>where(statement).get().iterator();
}
public String getPath(WorkspaceObject o) {
Modified:
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/UIComponentImpl.java
===================================================================
---
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/UIComponentImpl.java 2009-09-08
16:34:13 UTC (rev 167)
+++
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/UIComponentImpl.java 2009-09-09
23:49:09 UTC (rev 168)
@@ -21,6 +21,7 @@
import org.gatein.mop.api.workspace.ui.UIComponent;
import org.gatein.mop.api.workspace.ObjectType;
import org.chromattic.api.annotations.ManyToOne;
+import org.chromattic.api.annotations.Name;
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
Modified:
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/UIContainerImpl.java
===================================================================
---
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/UIContainerImpl.java 2009-09-08
16:34:13 UTC (rev 167)
+++
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/UIContainerImpl.java 2009-09-09
23:49:09 UTC (rev 168)
@@ -21,12 +21,16 @@
import org.chromattic.api.annotations.NodeMapping;
import org.chromattic.api.annotations.OneToMany;
import org.chromattic.api.annotations.Create;
+import org.chromattic.api.annotations.Name;
import org.gatein.mop.api.workspace.ui.UIContainer;
import org.gatein.mop.api.workspace.ui.UIComponent;
import org.gatein.mop.api.workspace.ObjectType;
import java.util.Map;
+import java.util.List;
+import java.util.Iterator;
import java.util.Collection;
+import java.util.ListIterator;
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
@@ -45,18 +49,21 @@
public abstract UIWindowImpl createWindow();
@OneToMany
- public abstract Map<String, UIComponentImpl> getComponents();
+ public abstract Map<String, UIComponentImpl> getComponentMap();
+
+ @OneToMany
+ public abstract List<UIComponent> getComponentList();
public ObjectType<? extends UIContainer> getObjectType() {
return ObjectType.CONTAINER;
}
- public UIComponent getChild(String componentName) {
- Map<String, UIComponentImpl> children = getComponents();
+ public UIComponent get(String componentName) {
+ Map<String, UIComponentImpl> children = getComponentMap();
return children.get(componentName);
}
- public <T extends UIComponent> T addChild(ObjectType<T> componentType,
String name) {
+ public <T extends UIComponent> T add(ObjectType<T> componentType, String
name) {
UIComponentImpl child;
if (componentType == ObjectType.WINDOW) {
child = createWindow();
@@ -67,12 +74,119 @@
} else {
throw new UnsupportedOperationException();
}
- Map<String, UIComponentImpl> children = getComponents();
+ Map<String, UIComponentImpl> children = getComponentMap();
children.put(name, child);
return componentType.cast(child);
}
- public Collection<? extends UIComponent> getChildren() {
- return getComponents().values();
+ public <T extends UIComponent> T add(int index, ObjectType<T>
componentType, String name) {
+ UIComponentImpl child;
+ if (componentType == ObjectType.WINDOW) {
+ child = createWindow();
+ } else if (componentType == ObjectType.CONTAINER) {
+ child = createContainer();
+ } else if (componentType == ObjectType.BODY) {
+ child = createInsertion();
+ } else {
+ throw new UnsupportedOperationException();
+ }
+ child.setName(name);
+ List<UIComponent> children = getComponentList();
+ children.add(index, child);
+ return componentType.cast(child);
}
+
+ // List<UIComponent> implementation
**********************************************************************************
+
+ public int size() {
+ return getComponentList().size();
+ }
+
+ public boolean isEmpty() {
+ return getComponentList().isEmpty();
+ }
+
+ public boolean contains(Object o) {
+ return getComponentList().contains(o);
+ }
+
+ public Iterator<UIComponent> iterator() {
+ return getComponentList().iterator();
+ }
+
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ public <T> T[] toArray(T[] a) {
+ return getComponentList().toArray(a);
+ }
+
+ public boolean add(UIComponent uiComponent) {
+ return getComponentList().add(uiComponent);
+ }
+
+ public boolean remove(Object o) {
+ return getComponentList().remove(o);
+ }
+
+ public boolean containsAll(Collection<?> c) {
+ return getComponentList().containsAll(c);
+ }
+
+ public boolean addAll(Collection<? extends UIComponent> c) {
+ return getComponentList().addAll(c);
+ }
+
+ public boolean addAll(int index, Collection<? extends UIComponent> c) {
+ return getComponentList().addAll(index, c);
+ }
+
+ public boolean removeAll(Collection<?> c) {
+ return getComponentList().removeAll(c);
+ }
+
+ public boolean retainAll(Collection<?> c) {
+ return getComponentList().retainAll(c);
+ }
+
+ public void clear() {
+ getComponentList().clear();
+ }
+
+ public UIComponent get(int index) {
+ return getComponentList().get(index);
+ }
+
+ public UIComponent set(int index, UIComponent element) {
+ return getComponentList().set(index, element);
+ }
+
+ public void add(int index, UIComponent element) {
+ getComponentList().add(index, element);
+ }
+
+ public UIComponent remove(int index) {
+ return getComponentList().remove(index);
+ }
+
+ public int indexOf(Object o) {
+ return getComponentList().indexOf(o);
+ }
+
+ public int lastIndexOf(Object o) {
+ return getComponentList().lastIndexOf(o);
+ }
+
+ public ListIterator<UIComponent> listIterator() {
+ return getComponentList().listIterator();
+ }
+
+ public ListIterator<UIComponent> listIterator(int index) {
+ return getComponentList().listIterator(index);
+ }
+
+ public List<UIComponent> subList(int fromIndex, int toIndex) {
+ return getComponentList().subList(fromIndex, toIndex);
+ }
}
Modified:
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/WorkspaceObjectImpl.java
===================================================================
---
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/WorkspaceObjectImpl.java 2009-09-08
16:34:13 UTC (rev 167)
+++
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/WorkspaceObjectImpl.java 2009-09-09
23:49:09 UTC (rev 168)
@@ -92,6 +92,8 @@
@Name
public abstract String getName();
+ public abstract void setName(String name);
+
@Id
public abstract String getObjectId();
Modified:
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/content/ContextSpecialization.java
===================================================================
---
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/content/ContextSpecialization.java 2009-09-08
16:34:13 UTC (rev 167)
+++
components/mop/trunk/core/src/main/java/org/gatein/mop/core/api/workspace/content/ContextSpecialization.java 2009-09-09
23:49:09 UTC (rev 168)
@@ -22,6 +22,7 @@
import org.chromattic.api.annotations.ManyToOne;
import org.chromattic.api.annotations.NodeMapping;
import org.gatein.mop.api.content.CustomizationContext;
+import org.gatein.mop.api.content.ContentType;
import org.gatein.mop.core.api.content.CustomizationContextResolver;
/**
@@ -48,6 +49,14 @@
@ManyToOne
public abstract ContextType getContextType();
+ public ContentType<Object> getType() {
+ throw new UnsupportedOperationException();
+ }
+
+ public String getContentId() {
+ throw new UnsupportedOperationException();
+ }
+
public String getName() {
return getParentCustomization().getName();
}
Modified:
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/composer/StructureIteratorTestCase.java
===================================================================
---
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/composer/StructureIteratorTestCase.java 2009-09-08
16:34:13 UTC (rev 167)
+++
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/composer/StructureIteratorTestCase.java 2009-09-09
23:49:09 UTC (rev 168)
@@ -45,22 +45,22 @@
//
Page t = root.addChild("t");
UIContainer t0 = t.getRootComponent();
- UIComponent t1 = t0.addChild(ObjectType.WINDOW, "t1");
- UIComponent t2 = t0.addChild(ObjectType.BODY, "t2");
- UIComponent t3 = t0.addChild(ObjectType.WINDOW, "t3");
+ UIComponent t1 = t0.add(ObjectType.WINDOW, "t1");
+ UIComponent t2 = t0.add(ObjectType.BODY, "t2");
+ UIComponent t3 = t0.add(ObjectType.WINDOW, "t3");
//
Page u = root.addChild("u");
UIContainer u0 = u.getRootComponent();
- UIComponent u1 = u0.addChild(ObjectType.WINDOW, "u1");
- UIComponent u2 = u0.addChild(ObjectType.BODY, "u2");
+ UIComponent u1 = u0.add(ObjectType.WINDOW, "u1");
+ UIComponent u2 = u0.add(ObjectType.BODY, "u2");
//
Page a = root.addChild("a");
a.setTemplate(t);
UIContainer a0 = a.getRootComponent();
- UIComponent a1 = a0.addChild(ObjectType.WINDOW, "a1");
- UIComponent a2 = a0.addChild(ObjectType.WINDOW, "a2");
+ UIComponent a1 = a0.add(ObjectType.WINDOW, "a1");
+ UIComponent a2 = a0.add(ObjectType.WINDOW, "a2");
PageIterator ia = new PageIterator(a, PageIteratorStrategies.PAGE_TEMPLATE);
assertStart(ia, t0);
assertStart(ia, t1);
@@ -79,8 +79,8 @@
//
Page b = root.addChild("b");
UIContainer b0 = b.getRootComponent();
- UIComponent b1 = b0.addChild(ObjectType.WINDOW, "b1");
- UIComponent b2 = b0.addChild(ObjectType.WINDOW, "b2");
+ UIComponent b1 = b0.add(ObjectType.WINDOW, "b1");
+ UIComponent b2 = b0.add(ObjectType.WINDOW, "b2");
//
Page c = root.addChild("c");
@@ -115,7 +115,7 @@
Site site = model.getWorkspace().addSite(ObjectType.PORTAL_SITE, "site");
Page root = site.getRootPage();
UIContainer c0 = root.getRootComponent();
- UIComponent c1 = c0.addChild(ObjectType.WINDOW, "c1");
+ UIComponent c1 = c0.add(ObjectType.WINDOW, "c1");
//
PageIterator i = new PageIterator(root, PageIteratorStrategies.PAGE_TEMPLATE);
@@ -131,11 +131,11 @@
Site site = model.getWorkspace().addSite(ObjectType.PORTAL_SITE, "site");
Page root = site.getRootPage();
UIContainer c0 = root.getRootComponent();
- UIComponent c1 = c0.addChild(ObjectType.WINDOW, "c1");
- UIContainer c2 = c0.addChild(ObjectType.CONTAINER, "c2");
- UIComponent c3 = c2.addChild(ObjectType.WINDOW, "c3");
- UIComponent c4 = c2.addChild(ObjectType.WINDOW, "c4");
- UIComponent c5 = c0.addChild(ObjectType.WINDOW, "c5");
+ UIComponent c1 = c0.add(ObjectType.WINDOW, "c1");
+ UIContainer c2 = c0.add(ObjectType.CONTAINER, "c2");
+ UIComponent c3 = c2.add(ObjectType.WINDOW, "c3");
+ UIComponent c4 = c2.add(ObjectType.WINDOW, "c4");
+ UIComponent c5 = c0.add(ObjectType.WINDOW, "c5");
//
ComponentIterator i0 = new ComponentIterator(c1);
Modified:
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/POMTestCase.java
===================================================================
---
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/POMTestCase.java 2009-09-08
16:34:13 UTC (rev 167)
+++
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/POMTestCase.java 2009-09-09
23:49:09 UTC (rev 168)
@@ -68,7 +68,7 @@
UIContainer container = template.getRootComponent();
assertNotNull(container);
- container.addChild(ObjectType.WINDOW, "window");
+ container.add(ObjectType.WINDOW, "window");
//
Page page = root.addChild("page");
Modified:
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/WorkspaceTestCase.java
===================================================================
---
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/WorkspaceTestCase.java 2009-09-08
16:34:13 UTC (rev 167)
+++
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/WorkspaceTestCase.java 2009-09-09
23:49:09 UTC (rev 168)
@@ -24,6 +24,7 @@
import org.gatein.mop.api.workspace.Page;
import org.gatein.mop.api.workspace.Workspace;
import org.gatein.mop.api.workspace.Navigation;
+import org.gatein.mop.api.workspace.ui.UIContainer;
import org.gatein.mop.api.workspace.link.PageLink;
import org.gatein.mop.core.api.AbstractPOMTestCase;
import org.gatein.mop.core.api.ModelImpl;
@@ -201,4 +202,34 @@
workspace.addSite(ObjectType.PORTAL_SITE, "portal");
}
+
+ public void testComponentOrder() {
+ ModelImpl pom = pomService.getModel();
+ Workspace workspace = pom.getWorkspace();
+ Site portal = workspace.addSite(ObjectType.PORTAL_SITE, "portal");
+ Page root = portal.getRootPage();
+
+ UIContainer container = root.getRootComponent();
+
+ container.add(ObjectType.WINDOW, "2");
+ container.add(0, ObjectType.WINDOW, "0");
+
+ assertEquals("0", container.get(0).getName());
+ assertEquals("2", container.get(1).getName());
+ assertEquals(2, container.size());
+
+ container.add(1, ObjectType.WINDOW, "1");
+
+ assertEquals("0", container.get(0).getName());
+ assertEquals("1", container.get(1).getName());
+ assertEquals("2", container.get(2).getName());
+ assertEquals(3, container.size());
+
+ container.add(0, container.get(2));
+
+ assertEquals("2", container.get(0).getName());
+ assertEquals("0", container.get(1).getName());
+ assertEquals("1", container.get(2).getName());
+ assertEquals(3, container.size());
+ }
}
\ No newline at end of file
Modified:
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/content/CustomizationTestCase.java
===================================================================
---
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/content/CustomizationTestCase.java 2009-09-08
16:34:13 UTC (rev 167)
+++
components/mop/trunk/core/src/test/java/org/gatein/mop/core/api/workspace/content/CustomizationTestCase.java 2009-09-09
23:49:09 UTC (rev 168)
@@ -64,7 +64,7 @@
Workspace workspace = pomService.getModel().getWorkspace();
Site portal = workspace.addSite(ObjectType.PORTAL_SITE, "portal");
UIContainer layout = portal.getRootPage().getRootComponent();
- UIWindow window = layout.addChild(ObjectType.WINDOW, "window");
+ UIWindow window = layout.add(ObjectType.WINDOW, "window");
Customization<Preferences> customization =
window.customize(Preferences.CONTENT_TYPE, "WeatherPortlet", prefs1);
assertSame(customization, window.getCustomization());
assertEquals(null, customization.getName());
@@ -75,7 +75,7 @@
Workspace workspace = pomService.getModel().getWorkspace();
Site portal = workspace.addSite(ObjectType.PORTAL_SITE, "portal");
UIContainer layout = portal.getRootPage().getRootComponent();
- UIWindow window = layout.addChild(ObjectType.WINDOW, "window");
+ UIWindow window = layout.add(ObjectType.WINDOW, "window");
Customization<Preferences> customization =
window.customize(Preferences.CONTENT_TYPE, "WeatherPortlet", null);
assertSame(customization, window.getCustomization());
assertEquals(null, customization.getName());
@@ -87,7 +87,7 @@
Site portal = workspace.addSite(ObjectType.PORTAL_SITE, "portal");
Customization<Preferences> workspaceCustomization =
portal.customize("marseille", Preferences.CONTENT_TYPE,
"WeatherPortlet", prefs1);
UIContainer layout = portal.getRootPage().getRootComponent();
- UIWindow window = layout.addChild(ObjectType.WINDOW, "window");
+ UIWindow window = layout.add(ObjectType.WINDOW, "window");
Customization<Preferences> windowCustomization =
window.customize(workspaceCustomization);
//
@@ -117,7 +117,7 @@
Site portal = workspace.addSite(ObjectType.PORTAL_SITE, "portal");
Customization<Preferences> workspaceCustomization =
portal.customize("marseille", Preferences.CONTENT_TYPE,
"WeatherPortlet", prefs1);
UIContainer layout = portal.getRootPage().getRootComponent();
- UIWindow window = layout.addChild(ObjectType.WINDOW, "window");
+ UIWindow window = layout.add(ObjectType.WINDOW, "window");
Customization<Preferences> windowCustomization =
window.customize(workspaceCustomization);
//