You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2007/12/10 20:55:57 UTC

svn commit: r603019 - in /cocoon/trunk/blocks/cocoon-portal: cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/ cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/ cocoon-portal-impl/src/main/java/org/apach...

Author: cziegeler
Date: Mon Dec 10 11:55:55 2007
New Revision: 603019

URL: http://svn.apache.org/viewvc?rev=603019&view=rev
Log:
Refactor profile loading and object conversion.

Added:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/Converter.java
      - copied, changed from r602917, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/Converter.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ConverterException.java
      - copied, changed from r602917, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/ConverterException.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PersistenceType.java   (with props)
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileStore.java
      - copied, changed from r602917, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileLS.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/MapBasedProfileStore.java
      - copied, changed from r602917, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java
Removed:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/Converter.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/ConverterException.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileLS.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java
Modified:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/CastorSourceConverter.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/ReferenceFieldHandler.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileException.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/cocoon-portal-components.xml
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/persistence/castor/portal-castor.roles
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/portal.roles
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/cocoon-portal-sample-components.xml

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/CastorSourceConverter.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/CastorSourceConverter.java?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/CastorSourceConverter.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/CastorSourceConverter.java Mon Dec 10 11:55:55 2007
@@ -36,9 +36,10 @@
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.avalon.framework.thread.ThreadSafe;
 import org.apache.cocoon.components.source.SourceUtil;
-import org.apache.cocoon.portal.persistence.Converter;
-import org.apache.cocoon.portal.persistence.ConverterException;
-import org.apache.cocoon.portal.profile.ProfileLS;
+import org.apache.cocoon.portal.profile.Converter;
+import org.apache.cocoon.portal.profile.ConverterException;
+import org.apache.cocoon.portal.profile.PersistenceType;
+import org.apache.cocoon.portal.profile.ProfileStore;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.cocoon.util.ClassUtils;
 import org.apache.excalibur.source.Source;
@@ -82,21 +83,20 @@
     protected ReferenceResolver idResolver = new ReferenceResolver();
 
     /**
-     * @see org.apache.cocoon.portal.persistence.Converter#getObject(java.io.InputStream, java.lang.String, java.util.Map, java.util.Map)
+     * @see org.apache.cocoon.portal.profile.Converter#getObject(java.io.InputStream, org.apache.cocoon.portal.profile.PersistenceType, java.util.Map)
      */
     public Object getObject(InputStream stream,
-                            String      mappingName,
-                            Map         references,
+                            PersistenceType type,
                             Map         parameters)
     throws ConverterException {
         try {
-            threadLocalMap.set(references);
-            final Unmarshaller unmarshaller = (Unmarshaller)((Object[])this.mappings.get(mappingName))[1];
+            threadLocalMap.set(type);
+            final Unmarshaller unmarshaller = (Unmarshaller)((Object[])this.mappings.get(type.getType()))[1];
             final Object result = unmarshaller.unmarshal(new InputSource(stream));
             stream.close();
             return result;
         } catch (IllegalStateException ise) {
-            throw new ConverterException("Unable to unmarshal objects for mapping " + mappingName, ise);
+            throw new ConverterException("Unable to unmarshal objects for mapping " + type.getType(), ise);
         } catch (Exception e) {
             throw new ConverterException(e.getMessage(), e);
         } finally {
@@ -105,21 +105,22 @@
     }
 
 	/**
-	 * @see org.apache.cocoon.portal.persistence.Converter#storeObject(java.io.OutputStream, java.lang.String, java.lang.Object, java.util.Map)
+	 * @see org.apache.cocoon.portal.profile.Converter#storeObject(java.io.OutputStream, java.lang.Object, org.apache.cocoon.portal.profile.PersistenceType, java.util.Map)
 	 */
 	public void storeObject(OutputStream stream,
-                            String       mappingName,
-                            Object       referenceObject,
+	                        Object       object,
+                            PersistenceType type,
                             Map          parameters)
     throws ConverterException {
-        Object references = referenceObject;
-        if ( referenceObject instanceof Collection && !(referenceObject instanceof CollectionWrapper) ) {
-            references = new CollectionWrapper((Collection)referenceObject);
+        Object references = object;
+        if ( object instanceof Collection && !(object instanceof CollectionWrapper) ) {
+            references = new CollectionWrapper((Collection)object);
         }
         Writer writer = new OutputStreamWriter(stream);
 		try {
+            threadLocalMap.set(type);
 			Marshaller marshaller = new Marshaller( writer );
-			marshaller.setMapping((Mapping)((Object[])this.mappings.get(mappingName))[0]);
+			marshaller.setMapping((Mapping)((Object[])this.mappings.get(type.getType()))[0]);
             boolean suppressXSIType = this.defaultSuppressXSIType;
             if ( parameters != null ) {
                 Boolean value = (Boolean)parameters.get("suppressXSIType");
@@ -134,6 +135,8 @@
 			throw new ConverterException("Can't create Unmarshaller", e);
 		} catch (Exception e) {
 			throw new ConverterException(e.getMessage(), e);
+        } finally {
+            threadLocalMap.set(null);
 		}
 	}
 
@@ -160,9 +163,9 @@
 
         // default configuration
         final String prefix = "resource://org/apache/cocoon/portal/persistence/castor/";
-        this.mappingSources.put(ProfileLS.PROFILETYPE_LAYOUT, prefix + ProfileLS.PROFILETYPE_LAYOUT +".xml");
-        this.mappingSources.put(ProfileLS.PROFILETYPE_COPLETDEFINITION, prefix + ProfileLS.PROFILETYPE_COPLETDEFINITION + ".xml");
-        this.mappingSources.put(ProfileLS.PROFILETYPE_COPLETINSTANCE, prefix + ProfileLS.PROFILETYPE_COPLETINSTANCE + ".xml");
+        this.mappingSources.put(ProfileStore.PROFILETYPE_LAYOUT, prefix + ProfileStore.PROFILETYPE_LAYOUT +".xml");
+        this.mappingSources.put(ProfileStore.PROFILETYPE_COPLETDEFINITION, prefix + ProfileStore.PROFILETYPE_COPLETDEFINITION + ".xml");
+        this.mappingSources.put(ProfileStore.PROFILETYPE_COPLETINSTANCE, prefix + ProfileStore.PROFILETYPE_COPLETINSTANCE + ".xml");
         boolean plutoAvailable = false;
         try {
             ClassUtils.loadClass("org.apache.cocoon.portal.pluto.adapter.PortletAdapter");

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/ReferenceFieldHandler.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/ReferenceFieldHandler.java?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/ReferenceFieldHandler.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/castor/ReferenceFieldHandler.java Mon Dec 10 11:55:55 2007
@@ -16,6 +16,7 @@
  */
 package org.apache.cocoon.portal.persistence.castor;
 
+import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.cocoon.portal.om.CopletDefinition;
@@ -23,6 +24,7 @@
 import org.apache.cocoon.portal.om.CopletType;
 import org.apache.cocoon.portal.om.Layout;
 import org.apache.cocoon.portal.om.LayoutType;
+import org.apache.cocoon.portal.profile.PersistenceType;
 import org.exolab.castor.mapping.AbstractFieldHandler;
 
 /**
@@ -36,13 +38,25 @@
      * @see org.exolab.castor.mapping.FieldHandler#getValue(java.lang.Object)
      */
     public Object getValue(Object object) {
-        if ( object instanceof CopletDefinition ) {
+        if ( this.getFieldDescriptor().getFieldName().equals("copletType") ) {
             return ((CopletDefinition)object).getCopletType().getId();
         }
-        if ( object instanceof CopletInstance ) {
+        if ( this.getFieldDescriptor().getFieldName().equals("copletDefinition") ) {
             return ((CopletInstance)object).getCopletDefinition().getId();
         }
-        if ( object instanceof Layout ) {
+        if ( this.getFieldDescriptor().getFieldName().equals("customRenderer") ) {
+            final Object renderer = ((Layout)object).getCustomRenderer();
+            final PersistenceType type = (PersistenceType)CastorSourceConverter.threadLocalMap.get();
+            final Map references = type.getReferences(this.getFieldDescriptor().getFieldName());
+            final Iterator i = references.entrySet().iterator();
+            while ( i.hasNext() ) {
+                final Map.Entry current = (Map.Entry)i.next();
+                if ( current.getValue() == renderer ) {
+                    return current.getKey();
+                }
+            }
+        }
+        if ( this.getFieldDescriptor().getFieldName().equals("layoutType") ) {
             return ((Layout)object).getLayoutType().getId();
         }
         return null;
@@ -66,13 +80,13 @@
      * @see org.exolab.castor.mapping.FieldHandler#resetValue(java.lang.Object)
      */
     public void resetValue(Object object) {
-        if ( object instanceof CopletDefinition ) {
+        if ( this.getFieldDescriptor().getFieldName().equals("copletType") ) {
             ((CopletDefinition)object).setCopletType(null);
         }
-        if ( object instanceof CopletInstance ) {
+        if ( this.getFieldDescriptor().getFieldName().equals("copletDefinition") ) {
             ((CopletInstance)object).setCopletDefinition(null);
         }
-        if ( object instanceof Layout ) {
+        if ( this.getFieldDescriptor().getFieldName().equals("layoutType") ) {
             ((Layout)object).setLayoutType(null);
         }
     }
@@ -81,15 +95,16 @@
      * @see org.exolab.castor.mapping.FieldHandler#setValue(java.lang.Object, java.lang.Object)
      */
     public void setValue(Object object, Object value) {
-        final Map references = (Map)CastorSourceConverter.threadLocalMap.get();
+        final PersistenceType type = (PersistenceType)CastorSourceConverter.threadLocalMap.get();
+        final Map references = type.getReferences(this.getFieldDescriptor().getFieldName());
         final Object reference = (references != null ? references.get(value) : null);
-        if ( object instanceof CopletDefinition ) {
+        if ( this.getFieldDescriptor().getFieldName().equals("copletType") ) {
             ((CopletDefinition)object).setCopletType((CopletType)reference);
         }
-        if ( object instanceof CopletInstance ) {
+        if ( this.getFieldDescriptor().getFieldName().equals("copletDefinition") ) {
             ((CopletInstance)object).setCopletDefinition((CopletDefinition)reference);
         }
-        if ( object instanceof Layout ) {
+        if ( this.getFieldDescriptor().getFieldName().equals("layoutType") ) {
             ((Layout)object).setLayoutType((LayoutType)reference);
         }
     }

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/Converter.java (from r602917, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/Converter.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/Converter.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/Converter.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/Converter.java&r1=602917&r2=603019&rev=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/Converter.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/Converter.java Mon Dec 10 11:55:55 2007
@@ -14,12 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.cocoon.portal.persistence;
+package org.apache.cocoon.portal.profile;
 
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.Map;
 
+
 /**
  * This is a component that converts a profile (= object tree) to a persistence
  * format.
@@ -28,35 +29,31 @@
  */
 public interface Converter {
 
-    /** The role to lookup this component. */
-    public static final String ROLE = Converter.class.getName();
-
     /**
-     * Load an object from the given input stream. 
+     * Load an object from the given input stream.
      * @param stream      The input stream with the data.
-     * @param profileType {@link org.apache.cocoon.portal.profile.ProfileLS}
+     * @param profileType {@link org.apache.cocoon.portal.profile.ProfileStore}
      * @param references  A map of references referenced from the profile.
      * @param parameters  An optional map of parameters for the conversion.
      * @return The loaded object.
      * @throws ConverterException
      */
     Object getObject(InputStream stream,
-                     String      profileType,
-                     Map         references,
+                     PersistenceType type,
                      Map         parameters)
     throws ConverterException;
 
     /**
      * Save an object to a given stream.
      * @param stream The output stream.
-     * @param profileType {@link org.apache.cocoon.portal.profile.ProfileLS}
+     * @param profileType {@link org.apache.cocoon.portal.profile.ProfileStore}
      * @param object The object to save.
      * @param parameters  An optional map of parameters for the conversion.
      * @throws ConverterException
      */
     void storeObject(OutputStream stream,
-                     String       profileType,
                      Object       object,
+                     PersistenceType type,
                      Map          parameters)
     throws ConverterException;
 }

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ConverterException.java (from r602917, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/ConverterException.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ConverterException.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ConverterException.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/ConverterException.java&r1=602917&r2=603019&rev=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/persistence/ConverterException.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ConverterException.java Mon Dec 10 11:55:55 2007
@@ -14,14 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.cocoon.portal.persistence;
-
-import org.apache.avalon.framework.CascadingException;
+package org.apache.cocoon.portal.profile;
 
 /**
  * @version $Id$
  */
-public class ConverterException extends CascadingException {
+public class ConverterException extends Exception {
 
     public ConverterException(String message) {
         super(message);

Added: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PersistenceType.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PersistenceType.java?rev=603019&view=auto
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PersistenceType.java (added)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PersistenceType.java Mon Dec 10 11:55:55 2007
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.profile;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * This component is used for loading/saving of a profile.
+ *
+ * The load/save method is able to load/save the various parts of the profile.
+ * The correct profile type is specified by a constant. For resolving
+ * references during loading an object map is passsed to the loadProfile method.
+ * This object map varies depending on the profile type:
+ * PROFILETYPE_LAYOUT: A map with layout types.
+ * PROFILETYPE_LAYOUTINSTANCE: -
+ * PROFILETYPE_COPLETDEFINITION: A map with coplet types.
+ * PROFILETYPE_COPLETINSTANCE: A map with coplet definitions
+ *
+ * @version $Id$
+ */
+public class PersistenceType {
+
+    public static final String PERSISTENCETYPE_LAYOUT = "layout";
+    public static final String PPERSISTENCETYPE_LAYOUTINSTANCE = "layoutinstance";
+    public static final String PERSISTENCETYPE_COPLETDEFINITION = "copletdefinition";
+    public static final String PERSISTENCETYPE_COPLETINSTANCE = "copletinstance";
+
+    protected final String type;
+
+    protected final Map references = new HashMap();
+
+    public PersistenceType(final String t) {
+        this.type = t;
+    }
+
+    public String getType() {
+        return this.type;
+    }
+
+    public void setReferences(final String fieldKey, final Map objects) {
+        // TODO - check the fieldKey for the type
+        this.references.put(fieldKey, objects);
+    }
+
+    public Map getReferences(final String fieldKey) {
+        return (Map) this.references.get(fieldKey);
+    }
+
+    public Object getReference(final String fieldKey, final String key) {
+        final Map objects = (Map)this.references.get(fieldKey);
+        if ( objects != null ) {
+            return objects.get(key);
+        }
+        return null;
+    }
+
+    public Collection getReferenceFieldKeys() {
+        return this.references.keySet();
+    }
+}

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PersistenceType.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/PersistenceType.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision url

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileException.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileException.java?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileException.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileException.java Mon Dec 10 11:55:55 2007
@@ -23,6 +23,7 @@
  * @version $Id$
  */
 public class ProfileException extends PortalRuntimeException {
+
     public ProfileException() {
         super();
     }

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileStore.java (from r602917, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileLS.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileStore.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileStore.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileLS.java&r1=602917&r2=603019&rev=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileLS.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileStore.java Mon Dec 10 11:55:55 2007
@@ -16,8 +16,6 @@
  */
 package org.apache.cocoon.portal.profile;
 
-import java.util.Map;
-
 import org.apache.excalibur.source.SourceValidity;
 
 /**
@@ -34,10 +32,10 @@
  *
  * @version $Id$
  */
-public interface ProfileLS {
+public interface ProfileStore {
 
     /** Component role */
-    String ROLE = ProfileLS.class.getName();
+    String ROLE = ProfileStore.class.getName();
 
     String PROFILETYPE_LAYOUT = "layout";
     String PROFILETYPE_LAYOUTINSTANCE = "layoutinstance";
@@ -51,7 +49,7 @@
      * @param profileType The type of the profile (instances, types, layouts etc. )
      * @param objectMap Map with objects which might be references by the profile.
      */
-    Object loadProfile(Object key, String profileType, Map objectMap)
+    Object loadProfile(Object key, PersistenceType type)
     throws Exception;
 
     /**
@@ -61,7 +59,7 @@
      * @param profileType The type of the profile (instances, types, layouts etc. )
      * @param profile The profile itself.
      */
-    void saveProfile(Object key, String profileType, Object profile) throws Exception;
+    void saveProfile(Object key, PersistenceType type, Object profile) throws Exception;
 
     /**
      * Get the validity of a profile.
@@ -69,5 +67,5 @@
      *            like user etc.
      * @param profileType The type of the profile (instances, types, layouts etc. )
      */
-    SourceValidity getValidity(Object key, String profileType);
+    SourceValidity getValidity(Object key, String type);
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java Mon Dec 10 11:55:55 2007
@@ -56,8 +56,15 @@
     /** The map of coplet types. */
     protected Map copletTypesMap = Collections.EMPTY_MAP;
 
+    /** The map of renderers. */
+    protected Map rendererMap = Collections.EMPTY_MAP;
+
     public void setCopletTypesMap(final Map m) {
         this.copletTypesMap = (m != null ? m : Collections.EMPTY_MAP);
+    }
+
+    public void setRendererMap(final Map m) {
+        this.rendererMap = (m != null ? m : Collections.EMPTY_MAP);
     }
 
     /**

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java Mon Dec 10 11:55:55 2007
@@ -40,8 +40,9 @@
 import org.apache.cocoon.portal.om.LayoutException;
 import org.apache.cocoon.portal.om.LayoutInstance;
 import org.apache.cocoon.portal.om.PortalUser;
+import org.apache.cocoon.portal.profile.PersistenceType;
 import org.apache.cocoon.portal.profile.ProfileException;
-import org.apache.cocoon.portal.profile.ProfileLS;
+import org.apache.cocoon.portal.profile.ProfileStore;
 import org.apache.commons.collections.map.LinkedMap;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.excalibur.source.SourceNotFoundException;
@@ -89,12 +90,12 @@
     protected boolean checkForChanges = true;
 
     /** The profiler loader/saver. */
-    protected ProfileLS loader;
+    protected ProfileStore loader;
 
     /** The configuration for loading/saving the profile. */
     protected Properties configuration;
 
-    public void setProfileLS(ProfileLS loader) {
+    public void setProfileLS(ProfileStore loader) {
         this.loader = loader;
     }
 
@@ -339,7 +340,7 @@
         }
 
         final Map key = this.buildKey(CATEGORY_GLOBAL,
-                ProfileLS.PROFILETYPE_COPLETDEFINITION,
+                ProfileStore.PROFILETYPE_COPLETDEFINITION,
                 info,
                 true,
                 null);
@@ -351,7 +352,7 @@
             if ( validity == SourceValidity.VALID) {
                 return this.copletDefinitions.objects;
             } else if ( validity == SourceValidity.UNKNOWN ) {
-                newValidity = loader.getValidity(key, ProfileLS.PROFILETYPE_COPLETDEFINITION);
+                newValidity = loader.getValidity(key, ProfileStore.PROFILETYPE_COPLETDEFINITION);
                 if ( newValidity != null
                      && this.copletDefinitions.validity.isValid(newValidity) == SourceValidity.VALID) {
                     return this.copletDefinitions.objects;
@@ -360,7 +361,10 @@
         }
 
         synchronized ( this ) {
-            Collection collection = (Collection)loader.loadProfile(key, ProfileLS.PROFILETYPE_COPLETDEFINITION, this.copletTypesMap);
+            final PersistenceType persType = new PersistenceType(ProfileStore.PROFILETYPE_COPLETDEFINITION);
+            persType.setReferences("copletType", this.copletTypesMap);
+
+            Collection collection = (Collection)loader.loadProfile(key, persType);
             collection = this.processCopletDefinitions(collection);
             final Iterator i = collection.iterator();
             final Map objects = new HashMap();
@@ -377,7 +381,7 @@
             // now add deployed coplets
             this.copletDefinitions.objects.putAll(this.deployedCopletDefinitions);
             if ( newValidity == null ) {
-                newValidity = loader.getValidity(key, ProfileLS.PROFILETYPE_COPLETDEFINITION);
+                newValidity = loader.getValidity(key, ProfileStore.PROFILETYPE_COPLETDEFINITION);
             }
             this.copletDefinitions.validity = newValidity;
 
@@ -402,12 +406,15 @@
                                          final String      layoutKey)
     throws Exception {
         Map key = this.buildKey(category,
-                                ProfileLS.PROFILETYPE_COPLETINSTANCE,
+                                ProfileStore.PROFILETYPE_COPLETINSTANCE,
                                 info,
                                 true,
                                 layoutKey);
         try {
-            Collection cidm = (Collection)loader.loadProfile(key, ProfileLS.PROFILETYPE_COPLETINSTANCE, profile.getCopletDefinitionsMap());
+            final PersistenceType persType = new PersistenceType(ProfileStore.PROFILETYPE_COPLETINSTANCE);
+            persType.setReferences("copletDefinition", profile.getCopletDefinitionsMap());
+
+            Collection cidm = (Collection)loader.loadProfile(key, persType);
             cidm = this.processCopletInstances(profile, cidm);
             profile.setCopletInstances(cidm);
 
@@ -426,12 +433,16 @@
                                 final String      layoutKey)
     throws Exception {
         final Map key = this.buildKey(category,
-                                      ProfileLS.PROFILETYPE_LAYOUT,
+                                      ProfileStore.PROFILETYPE_LAYOUT,
                                       info,
                                       true,
                                       layoutKey);
         try {
-            Layout l = (Layout)loader.loadProfile(key, ProfileLS.PROFILETYPE_LAYOUT, profile.getLayoutTypesMap());
+            final PersistenceType persType = new PersistenceType(ProfileStore.PROFILETYPE_LAYOUT);
+            persType.setReferences("layoutType", profile.getLayoutTypesMap());
+            persType.setReferences("customRenderer", this.rendererMap);
+
+            Layout l = (Layout)loader.loadProfile(key, persType);
             l = this.processLayout(profile, l);
             profile.setRootLayout(l);
 
@@ -495,11 +506,14 @@
         try {
             final ProfileHolder profile = this.getUserProfile();
             final Map key = this.buildKey(CATEGORY_USER,
-                                          ProfileLS.PROFILETYPE_COPLETINSTANCE,
+                                          ProfileStore.PROFILETYPE_COPLETINSTANCE,
                                           this.portalService.getUserService().getUser(),
                                           false,
                                           null);
-            this.loader.saveProfile(key, ProfileLS.PROFILETYPE_COPLETINSTANCE, profile.getCopletInstances());
+            final PersistenceType persType = new PersistenceType(ProfileStore.PROFILETYPE_COPLETINSTANCE);
+            persType.setReferences("copletDefinition", profile.getCopletDefinitionsMap());
+
+            this.loader.saveProfile(key, persType, profile.getCopletInstances());
         } catch (Exception e) {
             // TODO
             throw new ProfileException("Exception during save profile", e);
@@ -510,11 +524,14 @@
         try {
             final ProfileHolder profile = this.getUserProfile();
             final Map key = this.buildKey(CATEGORY_USER,
-                                          ProfileLS.PROFILETYPE_LAYOUTINSTANCE,
+                                          ProfileStore.PROFILETYPE_LAYOUTINSTANCE,
                                           this.portalService.getUserService().getUser(),
                                           false,
                                           null);
-            this.loader.saveProfile(key, ProfileLS.PROFILETYPE_LAYOUTINSTANCE, profile.getRootLayout());
+            final PersistenceType persType = new PersistenceType(ProfileStore.PROFILETYPE_LAYOUTINSTANCE);
+            persType.setReferences("layout", profile.keyedLayouts);
+
+            this.loader.saveProfile(key, persType, profile.getRootLayout());
         } catch (Exception e) {
             // TODO
             throw new ProfileException("Exception during save profile", e);

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/MapBasedProfileStore.java (from r602917, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/MapBasedProfileStore.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/MapBasedProfileStore.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java&r1=602917&r2=603019&rev=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/MapBasedProfileStore.java Mon Dec 10 11:55:55 2007
@@ -17,30 +17,20 @@
 package org.apache.cocoon.portal.profile.impl;
 
 import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.portal.persistence.Converter;
-import org.apache.cocoon.portal.profile.ProfileLS;
-import org.apache.cocoon.util.AbstractLogEnabled;
+import org.apache.cocoon.portal.profile.Converter;
+import org.apache.cocoon.portal.profile.PersistenceType;
+import org.apache.cocoon.portal.profile.ProfileStore;
+import org.apache.cocoon.portal.util.AbstractBean;
 import org.apache.cocoon.util.NetUtils;
-import org.apache.cocoon.xml.dom.DOMUtil;
 import org.apache.excalibur.source.ModifiableSource;
 import org.apache.excalibur.source.Source;
 import org.apache.excalibur.source.SourceResolver;
 import org.apache.excalibur.source.SourceValidity;
-import org.apache.excalibur.xml.sax.SAXParser;
-import org.apache.excalibur.xml.xpath.XPathProcessor;
-import org.w3c.dom.Element;
 
 /**
  * This implementation uses a {@link Converter} component to load/save
@@ -48,15 +38,9 @@
  *
  * @version $Id$
  */
-public class MapProfileLS
-    extends AbstractLogEnabled
-    implements Serviceable, ProfileLS, ThreadSafe, Disposable {
-
-    /** The service manager. */
-    protected ServiceManager manager;
-
-    /** The XPath Processor. */
-    protected XPathProcessor xpathProcessor;
+public class MapBasedProfileStore
+    extends AbstractBean
+    implements ProfileStore {
 
     /** The converter component. */
     protected Converter converter;
@@ -64,32 +48,15 @@
     /** The source resolver. */
     protected SourceResolver resolver;
 
-    /**
-     * @see org.apache.avalon.framework.activity.Disposable#dispose()
-     */
-    public void dispose() {
-        if ( this.manager != null ) {
-            this.manager.release( this.xpathProcessor );
-            this.xpathProcessor = null;
-            this.manager.release( this.converter );
-            this.converter = null;
-            this.manager.release( this.resolver );
-            this.resolver = null;
-            this.manager = null;
-        }
+    public void setSourceResolver(SourceResolver sr) {
+        this.resolver = sr;
     }
 
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager aManager) throws ServiceException {
-        this.manager = aManager;
-        this.xpathProcessor = (XPathProcessor)this.manager.lookup(XPathProcessor.ROLE);
-        this.converter = (Converter)this.manager.lookup(Converter.ROLE);
-        this.resolver = (SourceResolver)this.manager.lookup(SourceResolver.ROLE);
+    public void setConverter(Converter c) {
+        this.converter = c;
     }
 
-    protected String getURI(Map keyMap) 
+    protected String getURI(Map keyMap)
     throws Exception {
         final StringBuffer buffer = new StringBuffer();
         Iterator iter = keyMap.entrySet().iterator();
@@ -124,14 +91,14 @@
                 buffer.append(append);
             }
         }
-        
+
         return buffer.toString();
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.ProfileLS#loadProfile(java.lang.Object, java.lang.String, java.util.Map)
+     * @see org.apache.cocoon.portal.profile.ProfileStore#loadProfile(java.lang.Object, org.apache.cocoon.portal.profile.PersistenceType)
      */
-    public Object loadProfile(Object key, String profileType, Map objectMap)
+    public Object loadProfile(Object key, PersistenceType type)
     throws Exception {
 		final Map keyMap = (Map) key;
 
@@ -142,8 +109,7 @@
 			source = this.resolver.resolveURI(uri);
 
 			return this.converter.getObject(source.getInputStream(),
-                                       profileType,
-                                       objectMap,
+                                       type,
                                        null);
 		} finally {
             this.resolver.release(source);
@@ -151,9 +117,9 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.ProfileLS#saveProfile(java.lang.Object, java.lang.String, java.lang.Object)
+     * @see org.apache.cocoon.portal.profile.ProfileStore#saveProfile(java.lang.Object, org.apache.cocoon.portal.profile.PersistenceType, java.lang.Object)
      */
-    public void saveProfile(Object key, String profileType, Object profile)
+    public void saveProfile(Object key, PersistenceType type, Object profile)
     throws Exception {
         final Map keyMap = (Map) key;
 
@@ -165,8 +131,8 @@
             source = this.resolver.resolveURI(uri);
             if ( source instanceof ModifiableSource ) {
                 this.converter.storeObject( ((ModifiableSource)source).getOutputStream(),
-                                        profileType,
                                         profile,
+                                        type,
                                         null);
                 return;
             }
@@ -176,39 +142,26 @@
         }
 
         final StringBuffer buffer = new StringBuffer(uri);
-		SAXParser parser = null;
-		try {
-            ByteArrayOutputStream writer = new ByteArrayOutputStream();
-            this.converter.storeObject(writer,
-                                  profileType,
-                                  profile,
-                                  null);
-
-            buffer.append("&content=");
-            try {
-                buffer.append(NetUtils.encode(writer.toString(), "utf-8"));
-            } catch (UnsupportedEncodingException uee) {
-                // ignore this as utf-8 is always supported
-            }
-
-            source = this.resolver.resolveURI(buffer.toString());
+        ByteArrayOutputStream writer = new ByteArrayOutputStream();
+        this.converter.storeObject(writer,
+                              profile,
+                              type,
+                              null);
 
-            parser = (SAXParser)this.manager.lookup(SAXParser.ROLE);
-            Element element = DOMUtil.getDocumentFragment(parser, new InputStreamReader(source.getInputStream())).getOwnerDocument().getDocumentElement();
-            if (!DOMUtil.getValueOf(element, "descendant::sourceResult/execution", this.xpathProcessor).trim().equals("success")) {
-                throw new IOException("Could not save profile: "+DOMUtil.getValueOf(element, "descendant::sourceResult/message", this.xpathProcessor));
-            }
+        buffer.append("&content=");
+        try {
+            buffer.append(NetUtils.encode(writer.toString(), "utf-8"));
+        } catch (UnsupportedEncodingException uee) {
+            // ignore this as utf-8 is always supported
+        }
 
-		} finally {
-            this.resolver.release(source);
-			this.manager.release(parser);
-		}
+        source = this.resolver.resolveURI(buffer.toString());
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.ProfileLS#getValidity(java.lang.Object, java.lang.String)
+     * @see org.apache.cocoon.portal.profile.ProfileStore#getValidity(java.lang.Object, java.lang.String)
      */
-    public SourceValidity getValidity(Object key, String profileType) {
+    public SourceValidity getValidity(Object key, String type) {
 		Source source = null;
 		try {
             final Map keyMap = (Map) key;

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java Mon Dec 10 11:55:55 2007
@@ -30,8 +30,9 @@
 import org.apache.cocoon.portal.om.Item;
 import org.apache.cocoon.portal.om.Layout;
 import org.apache.cocoon.portal.om.LayoutInstance;
+import org.apache.cocoon.portal.profile.PersistenceType;
 import org.apache.cocoon.portal.profile.ProfileException;
-import org.apache.cocoon.portal.profile.ProfileLS;
+import org.apache.cocoon.portal.profile.ProfileStore;
 import org.apache.commons.collections.map.LinkedMap;
 import org.apache.commons.collections.map.StaticBucketMap;
 import org.apache.excalibur.source.SourceValidity;
@@ -53,9 +54,9 @@
     protected static final String LAYOUTKEY_PREFIX = StaticProfileManager.class.getName() + "/Layout/";
 
     /** The profiler loader/saver. */
-    protected ProfileLS loader;
+    protected ProfileStore loader;
 
-    public void setProfileLS(ProfileLS loader) {
+    public void setProfileLS(ProfileStore loader) {
         this.loader = loader;
     }
 
@@ -89,7 +90,7 @@
             map.put("profile", "layout");
             map.put("groupKey", layoutKey);
 
-            SourceValidity newValidity = this.loader.getValidity(map, ProfileLS.PROFILETYPE_LAYOUT);
+            SourceValidity newValidity = this.loader.getValidity(map, ProfileStore.PROFILETYPE_LAYOUT);
             if (valid == SourceValidity.UNKNOWN) {
                 if (sourceValidity.isValid(newValidity) == SourceValidity.VALID) {
                     return (Layout) ((Map) objects[0]).get(layoutID);
@@ -97,7 +98,11 @@
             }
 
             // get Layout specified in the map
-            Layout layout = (Layout) this.loader.loadProfile(map, ProfileLS.PROFILETYPE_LAYOUT, null);
+            final PersistenceType lType = new PersistenceType(ProfileStore.PROFILETYPE_LAYOUT);
+            lType.setReferences("layoutType", this.copletTypesMap);
+            lType.setReferences("customRenderer", this.rendererMap);
+
+            Layout layout = (Layout) this.loader.loadProfile(map, lType);
             layout = this.processLayout(null, layout);
 
             final Map layouts = new HashMap();
@@ -161,7 +166,10 @@
         map.put("portalname", this.portalService.getPortalName());
         map.put("profile", "coplet");
         map.put("name", "data");
-        Collection c = (Collection) this.loader.loadProfile(map, ProfileLS.PROFILETYPE_COPLETDEFINITION, this.copletTypesMap);
+        final PersistenceType cdType = new PersistenceType(ProfileStore.PROFILETYPE_COPLETDEFINITION);
+        cdType.setReferences("copletType", this.copletTypesMap);
+
+        Collection c = (Collection) this.loader.loadProfile(map, cdType);
         c = this.processCopletDefinitions(c);
         final Map definitions = new HashMap();
         final Iterator i = c.iterator();
@@ -177,7 +185,10 @@
         map.put("portalname", this.portalService.getPortalName());
         map.put("profile", "coplet");
         map.put("name", "instancedata");
-        instances = (Collection) this.loader.loadProfile(map, ProfileLS.PROFILETYPE_COPLETINSTANCE, definitions);
+        final PersistenceType ciType = new PersistenceType(ProfileStore.PROFILETYPE_COPLETINSTANCE);
+        ciType.setReferences("copletDefinition", definitions);
+
+        instances = (Collection) this.loader.loadProfile(map, ciType);
         instances = this.processCopletInstances(null, instances);
 
         // store managers

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/cocoon-portal-components.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/cocoon-portal-components.xml?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/cocoon-portal-components.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/cocoon-portal-components.xml Mon Dec 10 11:55:55 2007
@@ -238,6 +238,19 @@
       +-->
 
   <!--+
+      | Profile Store
+      |
+      +-->
+    <bean name="org.apache.cocoon.portal.profile.ProfileStore"
+          class="org.apache.cocoon.portal.profile.impl.MapBasedProfileStore"
+          parent="org.apache.cocoon.portal.util.AbstractBean"
+          scope="singleton">
+        <property name="converter" ref="org.apache.cocoon.portal.profile.Converter"/>
+        <property name="sourceResolver" ref="org.apache.excalibur.source.SourceResolver"/>
+    </bean>
+
+
+  <!--+
       | Profile Manager Aspects.
       |
       +-->

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/persistence/castor/portal-castor.roles
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/persistence/castor/portal-castor.roles?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/persistence/castor/portal-castor.roles (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/persistence/castor/portal-castor.roles Mon Dec 10 11:55:55 2007
@@ -22,7 +22,7 @@
       | Castor Converter
       |
       +-->
-    <role name="org.apache.cocoon.portal.persistence.Converter"
+    <role name="org.apache.cocoon.portal.profile.Converter"
           default-class="org.apache.cocoon.portal.persistence.castor.CastorSourceConverter"
           shorthand="castor-converter"/>
 

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/portal.roles
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/portal.roles?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/portal.roles (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/portal.roles Mon Dec 10 11:55:55 2007
@@ -26,14 +26,6 @@
           default-class="org.apache.cocoon.portal.spring.RegistrationBeanPostProcessor"/>
 
   <!--+
-      | Components.
-      |
-      +-->
-    <role name="org.apache.cocoon.portal.profile.ProfileLS"
-          default-class="org.apache.cocoon.portal.profile.impl.MapProfileLS"/>
-
-
-  <!--+
       | Coplet and Layout Source.
       |
       +-->

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java Mon Dec 10 11:55:55 2007
@@ -25,7 +25,8 @@
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.portal.om.CopletInstance;
 import org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl;
-import org.apache.cocoon.portal.profile.ProfileLS;
+import org.apache.cocoon.portal.profile.PersistenceType;
+import org.apache.cocoon.portal.profile.ProfileStore;
 import org.apache.cocoon.portal.util.AbstractComponent;
 import org.apache.commons.collections.map.LinkedMap;
 import org.apache.pluto.om.common.PreferenceSet;
@@ -45,10 +46,10 @@
     extends AbstractComponent
     implements Parameterizable, PortletPreferencesProvider {
 
-    protected static final String PROFILETYPE_PREFERENCES = "portletpreferences";
+    protected static final String PERSISTENCETYPE_PREFERENCES = "portletpreferences";
 
     /** The component for loading/saving the profiles. */
-    protected ProfileLS loader;
+    protected ProfileStore loader;
 
     /** The configuration for this component. */
     protected Parameters configuration;
@@ -76,19 +77,19 @@
      */
     public void service(ServiceManager serviceManager) throws ServiceException {
         super.service(serviceManager);
-        this.loader = (ProfileLS)this.manager.lookup(ProfileLS.ROLE);
+        this.loader = (ProfileStore)this.manager.lookup(ProfileStore.ROLE);
     }
 
     protected Map buildKey(boolean load, String copletId)
     throws ParameterException {
-        final StringBuffer config = new StringBuffer(PROFILETYPE_PREFERENCES);
+        final StringBuffer config = new StringBuffer(PERSISTENCETYPE_PREFERENCES);
         config.append('-');
         config.append("user");
         config.append('-');
         if ( load ) {
             config.append("load");
         } else {
-            config.append("save");            
+            config.append("save");
         }
         final String uri = this.configuration.getParameter(config.toString());
 
@@ -108,7 +109,9 @@
      */
     public PreferenceSet getPreferenceSet(CopletInstance cid) {
         try {
-            return (PreferenceSet)this.loader.loadProfile(this.buildKey(true, cid.getId()), PROFILETYPE_PREFERENCES, null);
+            final PersistenceType persType = new PersistenceType(PERSISTENCETYPE_PREFERENCES);
+
+            return (PreferenceSet)this.loader.loadProfile(this.buildKey(true, cid.getId()), persType);
         } catch (Exception ignore) {
             // we ignore all exceptions for now (TODO)
         }
@@ -120,7 +123,9 @@
      */
     public void storePreferenceSet(CopletInstance cid, PreferenceSet prefs) {
         try {
-             this.loader.saveProfile(this.buildKey(false, cid.getId()), PROFILETYPE_PREFERENCES, prefs);
+            final PersistenceType persType = new PersistenceType(PERSISTENCETYPE_PREFERENCES);
+
+            this.loader.saveProfile(this.buildKey(false, cid.getId()), persType, prefs);
         } catch (Exception ignore) {
              // we ignore all exceptions for now (TODO)
         }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/cocoon-portal-sample-components.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/cocoon-portal-sample-components.xml?rev=603019&r1=603018&r2=603019&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/cocoon-portal-sample-components.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/spring/cocoon-portal-sample-components.xml Mon Dec 10 11:55:55 2007
@@ -70,6 +70,8 @@
         layout-user-save=cocoon:raw:/save-user-profile?profile=layout
       </value>
     </property>
+    <property name="copletTypesMap" ref="org.apache.cocoon.portal.om.CopletTypeMap"/>
+    <property name="rendererMap" ref="org.apache.cocoon.portal.layout.renderer.RendererMap"/>
   </bean>
 
   <!--+