Author: cziegeler
Date: Tue Aug 31 04:29:10 2004
New Revision: 37251
Modified:
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileLS.java
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/UserProfile.java
Log:
Improving group based profile manager
Modified:
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
==============================================================================
---
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
(original)
+++
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
Tue Aug 31 04:29:10 2004
@@ -51,13 +51,13 @@
* In order to work properly the methods provided by this interface require
some
* parameters:
* objectmap : containing a map of objects for resolving references during load
- * profiletype: specifying the mapping (this is one of layout,
copletinstancedata, copletdata or copletbasedate
+ * profiletype: specifying the mapping (this is one of layout,
copletinstancedata, copletdata or copletbasedata
*
* @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>
*
- * @version CVS $Id: CastorSourceConverter.java,v 1.4 2004/03/05 13:02:07
bdelacretaz Exp $
+ * @version CVS $Id$
*/
public class CastorSourceConverter
extends AbstractLogEnabled
@@ -65,19 +65,22 @@
public static final String ROLE = CastorSourceConverter.class.getName();
+ public static final String PARAMETER_OBJECTMAP = "objectmap";
+ public static final String PARAMETER_PROFILETYPE = "profiletype";
+
private Map mappingSources = new HashMap();
private ServiceManager manager;
private Map mappings = new HashMap();
public Object getObject(InputStream stream, Map parameters) throws
ConverterException {
try {
-
ReferenceFieldHandler.setObjectMap((Map)parameters.get("objectmap"));
- Unmarshaller unmarshaller = new
Unmarshaller((Mapping)this.mappings.get(parameters.get("profiletype")));
+
ReferenceFieldHandler.setObjectMap((Map)parameters.get(PARAMETER_OBJECTMAP));
+ Unmarshaller unmarshaller = new
Unmarshaller((Mapping)this.mappings.get(parameters.get(PARAMETER_PROFILETYPE)));
Object result = unmarshaller.unmarshal(new InputSource(stream));
stream.close();
return result;
} catch (MappingException e) {
- throw new ConverterException("can't create Unmarshaller", e);
+ throw new ConverterException("Can't create Unmarshaller", e);
} catch (Exception e) {
throw new ConverterException(e.getMessage(), e);
}
@@ -87,11 +90,11 @@
Writer writer = new OutputStreamWriter(stream);
try {
Marshaller marshaller = new Marshaller( writer );
-
marshaller.setMapping((Mapping)this.mappings.get(parameters.get("profiletype")));
+
marshaller.setMapping((Mapping)this.mappings.get(parameters.get(PARAMETER_PROFILETYPE)));
marshaller.marshal(object);
writer.close();
} catch (MappingException e) {
- throw new ConverterException("can't create
Unmarshaller", e);
+ throw new ConverterException("Can't create
Unmarshaller", e);
} catch (Exception e) {
throw new ConverterException(e.getMessage(), e);
}
Modified:
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileLS.java
==============================================================================
---
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileLS.java
(original)
+++
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileLS.java
Tue Aug 31 04:29:10 2004
@@ -20,21 +20,20 @@
import org.apache.excalibur.source.SourceValidity;
/**
- *
+ * This component is used for loading/saving of a profile.
+ *
* @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>
*
- * @version CVS $Id: ProfileLS.java,v 1.5 2004/03/05 13:02:16 bdelacretaz Exp $
+ * @version CVS $Id$
*/
public interface ProfileLS {
String ROLE = ProfileLS.class.getName();
- // TODO define ExceptionType later
Object loadProfile(Object key, Map parameters) throws Exception;
- //TODO define ExceptionType later
void saveProfile(Object key, Map parameters, Object profile) throws
Exception;
SourceValidity getValidity(Object key, Map parameters);
Modified:
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
==============================================================================
---
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
(original)
+++
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
Tue Aug 31 04:29:10 2004
@@ -197,7 +197,7 @@
/* (non-Javadoc)
* @see
org.apache.cocoon.portal.profile.ProfileManager#getPortalLayout(java.lang.String,
java.lang.String)
*/
- public Layout getPortalLayout(String layoutKey, String layoutID) {
+ public Layout getPortalLayout(String layoutKey, String layoutId) {
PortalService service = null;
try {
@@ -210,8 +210,18 @@
if ( null != l) {
return l;
}
- final UserProfile profile = this.getUserProfile(layoutKey);
- return (Layout)profile.getLayouts().get(layoutID);
+
+ UserProfile profile = this.getUserProfile(layoutKey);
+ if ( profile == null ) {
+ profile = this.loadProfile(layoutKey, service);
+ }
+ if ( profile == null ) {
+ throw new RuntimeException("Unable to load profile: " +
layoutKey);
+ }
+ if ( layoutId != null ) {
+ return (Layout)profile.getLayouts().get(layoutId);
+ }
+ return profile.getRootLayout();
} catch (Exception ce) {
throw new CascadingRuntimeException("Exception during loading of
profile.", ce);
} finally {
@@ -267,5 +277,12 @@
}
}
-
+ /**
+ * Load the profile
+ */
+ protected UserProfile loadProfile(final String layoutKey, final
PortalService service) {
+ final UserProfile profile = new UserProfile();
+
+ return profile;
+ }
}
Modified:
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java
==============================================================================
---
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java
(original)
+++
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java
Tue Aug 31 04:29:10 2004
@@ -42,9 +42,11 @@
import org.w3c.dom.Element;
/**
+ * This implementation uses Castor to load/save the profiles.
+ *
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
*
- * @version CVS $Id: MapProfileLS.java,v 1.7 2004/03/05 13:02:16 bdelacretaz
Exp $
+ * @version CVS $Id$
*/
public class MapProfileLS
extends AbstractLogEnabled
Modified:
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/UserProfile.java
==============================================================================
---
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/UserProfile.java
(original)
+++
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/UserProfile.java
Tue Aug 31 04:29:10 2004
@@ -17,6 +17,8 @@
import java.util.Map;
+import org.apache.cocoon.portal.layout.Layout;
+
/**
* This data object holds all information about the current user:
* - references to the configuration
@@ -36,6 +38,8 @@
protected Map layouts;
+ protected Layout rootLayout;
+
/**
* @return Returns the copletBaseDatas.
*/
@@ -90,5 +94,19 @@
*/
public void setLayouts(Map layouts) {
this.layouts = layouts;
+ }
+
+ /**
+ * @return Returns the rootLayout.
+ */
+ public Layout getRootLayout() {
+ return rootLayout;
+ }
+
+ /**
+ * @param rootLayout The rootLayout to set.
+ */
+ public void setRootLayout(Layout rootLayout) {
+ this.rootLayout = rootLayout;
}
}