cziegeler 2003/05/27 02:15:07
Modified: src/blocks/portal/java/org/apache/cocoon/portal/layout/impl
DefaultLayoutFactory.java
src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl
DefaultCopletFactory.java
src/blocks/portal/java/org/apache/cocoon/portal/profile
ProfileManager.java
src/blocks/portal/java/org/apache/cocoon/portal/profile/impl
SimpleProfileManager.java
Log:
Registering/inregistering
Revision Changes Path
1.9 +20 -3
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java
Index: DefaultLayoutFactory.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DefaultLayoutFactory.java 26 May 2003 14:03:48 -0000 1.8
+++ DefaultLayoutFactory.java 27 May 2003 09:15:07 -0000 1.9
@@ -85,6 +85,7 @@
import org.apache.cocoon.portal.layout.Item;
import org.apache.cocoon.portal.layout.Layout;
import org.apache.cocoon.portal.layout.LayoutFactory;
+import org.apache.cocoon.portal.profile.ProfileManager;
import org.apache.cocoon.util.ClassUtils;
/**
@@ -205,7 +206,15 @@
layout.setDescription( layoutDescription );
layout.setAspectDataHandler((AspectDataHandler)o[1]);
- // TODO - register this at the profile manager
+ ProfileManager profileManager = null;
+ try {
+ profileManager =
(ProfileManager)this.manager.lookup(ProfileManager.ROLE);
+ profileManager.register(layout);
+ } catch (ComponentException ce) {
+ throw new ProcessingException("Unable to lookup profile
manager.", ce);
+ } finally {
+ this.manager.release( profileManager );
+ }
return layout;
}
@@ -288,7 +297,6 @@
public void remove(Layout layout)
throws ProcessingException {
if ( layout != null ) {
- // TODO - unregister
if ( layout instanceof CompositeLayout ) {
Iterator itemIterator =
((CompositeLayout)layout).getItems().iterator();
while ( itemIterator.hasNext() ) {
@@ -310,6 +318,15 @@
} finally {
this.manager.release( (Component)factory );
}
+ }
+ ProfileManager profileManager = null;
+ try {
+ profileManager =
(ProfileManager)this.manager.lookup(ProfileManager.ROLE);
+ profileManager.unregister(layout);
+ } catch (ComponentException ce) {
+ throw new ProcessingException("Unable to lookup profile
manager.", ce);
+ } finally {
+ this.manager.release( profileManager );
}
}
}
1.4 +21 -3
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java
Index: DefaultCopletFactory.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DefaultCopletFactory.java 26 May 2003 14:03:49 -0000 1.3
+++ DefaultCopletFactory.java 27 May 2003 09:15:07 -0000 1.4
@@ -75,6 +75,7 @@
import org.apache.cocoon.portal.coplet.CopletFactory;
import org.apache.cocoon.portal.coplet.CopletInstanceData;
import org.apache.cocoon.portal.coplet.adapter.CopletAdapter;
+import org.apache.cocoon.portal.profile.ProfileManager;
/**
* This factory is for creating and managing coplet objects
@@ -175,7 +176,15 @@
this.manager.release( adapterSelector );
}
- // TODO - register
+ ProfileManager profileManager = null;
+ try {
+ profileManager =
(ProfileManager)this.manager.lookup(ProfileManager.ROLE);
+ profileManager.register(instance);
+ } catch (ComponentException ce) {
+ throw new ProcessingException("Unable to lookup profile
manager.", ce);
+ } finally {
+ this.manager.release( profileManager );
+ }
return instance;
}
@@ -260,7 +269,6 @@
*/
public void remove(CopletInstanceData copletInstanceData)
throws ProcessingException {
- // TODO - unregister
if ( copletInstanceData != null ) {
// now lookup the adapter
final String adapterName =
copletInstanceData.getCopletData().getCopletBaseData().getCopletAdapterName();
@@ -278,6 +286,16 @@
adapterSelector.release( adapter );
}
this.manager.release( adapterSelector );
+ }
+
+ ProfileManager profileManager = null;
+ try {
+ profileManager =
(ProfileManager)this.manager.lookup(ProfileManager.ROLE);
+ profileManager.unregister(copletInstanceData);
+ } catch (ComponentException ce) {
+ throw new ProcessingException("Unable to lookup profile
manager.", ce);
+ } finally {
+ this.manager.release( profileManager );
}
}
}
1.4 +21 -2
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java
Index: ProfileManager.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ProfileManager.java 23 May 2003 09:42:50 -0000 1.3
+++ ProfileManager.java 27 May 2003 09:15:07 -0000 1.4
@@ -50,12 +50,18 @@
*/
package org.apache.cocoon.portal.profile;
+import java.util.List;
+
import org.apache.avalon.framework.component.Component;
+import org.apache.cocoon.portal.coplet.CopletData;
import org.apache.cocoon.portal.coplet.CopletInstanceData;
import org.apache.cocoon.portal.layout.Layout;
/**
- *
+ * The profile manager.
+ * Via this component you can get the profile (or parts of it) of the
+ * current 'user'.
+ *
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a>
*
@@ -71,6 +77,19 @@
CopletInstanceData getCopletInstanceData(String copletID);
+ List getCopletInstanceData(CopletData data);
+
+ void register(CopletInstanceData coplet);
+
+ void unregister(CopletInstanceData coplet);
+
+ void register(Layout layout);
+
+ void unregister(Layout layout);
+
+ /**
+ * Save the profile
+ */
void saveUserProfiles();
}
1.13 +115 -4
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/SimpleProfileManager.java
Index: SimpleProfileManager.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/SimpleProfileManager.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- SimpleProfileManager.java 27 May 2003 07:38:33 -0000 1.12
+++ SimpleProfileManager.java 27 May 2003 09:15:07 -0000 1.13
@@ -50,9 +50,11 @@
*/
package org.apache.cocoon.portal.profile.impl;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import org.apache.avalon.framework.CascadingRuntimeException;
@@ -81,7 +83,10 @@
import org.exolab.castor.mapping.Mapping;
/**
- *
+ * The profile manager using the authentication framework
+ *
+ * FIXME - create abstract base class
+ *
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Bj�rn L�tkemeier</a>
@@ -506,8 +511,114 @@
return copletInstanceDataManager.getCopletInstanceData(copletID);
} catch (ComponentException e) {
- // TODO
- throw new CascadingRuntimeException("Arg", e);
+ throw new CascadingRuntimeException("Unable to lookup portal
service.", e);
+ } finally {
+ this.manager.release(service);
+ }
+ }
+
+ public List getCopletInstanceData(CopletData data) {
+ List coplets = new ArrayList();
+ PortalService service = null;
+ String attribute = null;
+ try {
+ service = (PortalService)
this.manager.lookup(PortalService.ROLE);
+
+ attribute =
SimpleProfileManager.class.getName()+"/"+service.getPortalName()+"/CopletInstanceData";
+ CopletInstanceDataManager copletInstanceDataManager =
(CopletInstanceDataManager)service.getAttribute(attribute);
+
+ Iterator iter =
copletInstanceDataManager.getCopletInstanceData().values().iterator();
+ while ( iter.hasNext() ) {
+ CopletInstanceData current = (CopletInstanceData)iter.next();
+ if ( current.getCopletData().equals(data) ) {
+ coplets.add( current );
+ }
+ }
+ return coplets;
+ } catch (ComponentException e) {
+ throw new CascadingRuntimeException("Unable to lookup portal
service.", e);
+ } finally {
+ this.manager.release(service);
+ }
+ }
+
+ public void register(CopletInstanceData coplet) {
+ PortalService service = null;
+ String attribute = null;
+ try {
+ service = (PortalService)
this.manager.lookup(PortalService.ROLE);
+
+ attribute =
SimpleProfileManager.class.getName()+"/"+service.getPortalName()+"/CopletInstanceData";
+ CopletInstanceDataManager copletInstanceDataManager =
(CopletInstanceDataManager)service.getAttribute(attribute);
+
+ copletInstanceDataManager.putCopletInstanceData( coplet );
+
+ } catch (ComponentException e) {
+ throw new CascadingRuntimeException("Unable to lookup portal
service.", e);
+ } finally {
+ this.manager.release(service);
+ }
+ }
+
+ public void unregister(CopletInstanceData coplet) {
+ PortalService service = null;
+ String attribute = null;
+ try {
+ service = (PortalService)
this.manager.lookup(PortalService.ROLE);
+
+ attribute =
SimpleProfileManager.class.getName()+"/"+service.getPortalName()+"/CopletInstanceData";
+ CopletInstanceDataManager copletInstanceDataManager =
(CopletInstanceDataManager)service.getAttribute(attribute);
+
+
copletInstanceDataManager.getCopletInstanceData().remove(coplet.getId());
+
+ } catch (ComponentException e) {
+ throw new CascadingRuntimeException("Unable to lookup portal
service.", e);
+ } finally {
+ this.manager.release(service);
+ }
+ }
+
+ public void register(Layout layout) {
+ PortalService service = null;
+ try {
+ service = (PortalService)
this.manager.lookup(PortalService.ROLE);
+ String portalPrefix =
SimpleProfileManager.class.getName()+"/"+service.getPortalName();
+
+ Map layoutMap = (Map)service.getAttribute("layout-map");
+ if ( layoutMap == null ) {
+ layout =
(Layout)service.getAttribute(portalPrefix+"/Layout");
+ if (layout != null) {
+ layoutMap = new HashMap();
+ this.cacheLayouts(layoutMap, layout);
+ service.setAttribute("layout-map", layoutMap);
+ }
+ }
+
+ if ( layoutMap != null) {
+ layoutMap.put(layout.getId(), layout);
+ }
+
+ } catch (ComponentException e) {
+ throw new CascadingRuntimeException("Unable to lookup portal
service.", e);
+ } finally {
+ this.manager.release(service);
+ }
+ }
+
+ public void unregister(Layout layout) {
+ PortalService service = null;
+ try {
+ service = (PortalService)
this.manager.lookup(PortalService.ROLE);
+ String portalPrefix =
SimpleProfileManager.class.getName()+"/"+service.getPortalName();
+
+ Map layoutMap = (Map)service.getAttribute("layout-map");
+
+ if ( layoutMap != null) {
+ layoutMap.remove(layout.getId());
+ }
+
+ } catch (ComponentException e) {
+ throw new CascadingRuntimeException("Unable to lookup portal
service.", e);
} finally {
this.manager.release(service);
}