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 2005/10/06 11:53:48 UTC

svn commit: r306567 - in /cocoon/blocks/portal/trunk/java/org/apache/cocoon: components/persistence/ portal/profile/impl/

Author: cziegeler
Date: Thu Oct  6 02:53:42 2005
New Revision: 306567

URL: http://svn.apache.org/viewcvs?rev=306567&view=rev
Log:
Fix profile saving and improve castor usage

Modified:
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/components/persistence/ConverterException.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/profile/impl/CopletInstanceDataManager.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java?rev=306567&r1=306566&r2=306567&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java Thu Oct  6 02:53:42 2005
@@ -1,12 +1,12 @@
 /*
- * Copyright 1999-2004 The Apache Software Foundation.
- * 
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
  * Licensed 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.
@@ -45,7 +45,7 @@
 import org.xml.sax.InputSource;
 
 /**
- * This is a component that converts the profiles (= object tree) to XML and vice-versa
+ * This is a component converting the profiles (= object tree) to XML and vice-versa
  * using Castor. It could be used to persist objects as a XML representation.
  * 
  * In order to work properly the methods provided by this interface require some 
@@ -58,28 +58,27 @@
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
  * @author <a href="mailto:bluetkemeier@s-und-n.de">Bj&ouml;rn L&uuml;tkemeier</a>
  * 
- * @version CVS $Id$
+ * @version $Id$
  */
 public class CastorSourceConverter
     extends AbstractLogEnabled
     implements Serviceable, Configurable, Initializable, ThreadSafe {
-        
+
     public static final String ROLE = CastorSourceConverter.class.getName();
 
     private Map mappingSources = new HashMap();
     private ServiceManager manager;
     private Map mappings = new HashMap();
     private boolean defaultSuppressXSIType;
-    
+    private boolean defaultValidateUnmarshalling;
+
     public Object getObject(InputStream stream, Map parameters) throws ConverterException {
         try {
             ReferenceFieldHandler.setObjectMap((Map)parameters.get(ProfileLS.PARAMETER_OBJECTMAP));
-            Unmarshaller unmarshaller = new Unmarshaller((Mapping)this.mappings.get(parameters.get(ProfileLS.PARAMETER_PROFILETYPE)));
+            Unmarshaller unmarshaller = (Unmarshaller)((Object[])this.mappings.get(parameters.get(ProfileLS.PARAMETER_PROFILETYPE)))[1];
             Object result = unmarshaller.unmarshal(new InputSource(stream));
             stream.close();
             return result;
-        } catch (MappingException e) {
-            throw new ConverterException("Can't create Unmarshaller", e);
         } catch (Exception e) {
             throw new ConverterException(e.getMessage(), e);
         }
@@ -89,7 +88,7 @@
         Writer writer = new OutputStreamWriter(stream);
 		try {
 			Marshaller marshaller = new Marshaller( writer );
-			marshaller.setMapping((Mapping)this.mappings.get(parameters.get(ProfileLS.PARAMETER_PROFILETYPE)));
+			marshaller.setMapping((Mapping)((Object[])this.mappings.get(parameters.get(ProfileLS.PARAMETER_PROFILETYPE)))[0]);
             boolean suppressXSIType = this.defaultSuppressXSIType;
             Boolean value = (Boolean)parameters.get("suppressXSIType");
             if (value != null) {
@@ -130,6 +129,7 @@
 	        this.mappingSources.put(mappingSource.getAttribute("source"), mappingSource.getValue());
 	    }
         this.defaultSuppressXSIType = config.getChild("suppressXSIType").getValueAsBoolean(false);
+        this.defaultValidateUnmarshalling = config.getChild("validate-on-unmarshalling").getValueAsBoolean(false);
     }
 
     /**
@@ -152,7 +152,11 @@
 				source = resolver.resolveURI(mappingSource);
 				mapping = new Mapping();
 				mapping.loadMapping(SourceUtil.getInputSource(source));
-				this.mappings.put(name, mapping);
+
+                // create unmarshaller
+                final Unmarshaller unmarshaller = new Unmarshaller(mapping);
+                unmarshaller.setValidation(this.defaultValidateUnmarshalling);
+                this.mappings.put(name, new Object[] {mapping, unmarshaller});
         	}
         } finally {
             if (source != null) {

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/components/persistence/ConverterException.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/components/persistence/ConverterException.java?rev=306567&r1=306566&r2=306567&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/components/persistence/ConverterException.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/components/persistence/ConverterException.java Thu Oct  6 02:53:42 2005
@@ -1,12 +1,12 @@
 /*
- * Copyright 1999-2004 The Apache Software Foundation.
- * 
+ * Copyright 1999-2005 The Apache Software Foundation.
+ *
  * Licensed 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.
@@ -21,8 +21,8 @@
  *
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
- * 
- * @version CVS $Id: ConverterException.java,v 1.2 2004/03/05 13:02:07 bdelacretaz Exp $
+ *
+ * @version $Id$
  */
 public class ConverterException extends CascadingException {
 

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/profile/impl/CopletInstanceDataManager.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/profile/impl/CopletInstanceDataManager.java?rev=306567&r1=306566&r2=306567&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/profile/impl/CopletInstanceDataManager.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/profile/impl/CopletInstanceDataManager.java Thu Oct  6 02:53:42 2005
@@ -32,7 +32,15 @@
 	/**
 	 * The coplet instance data instances.
 	 */
-	private Map copletInstanceData = new HashMap();
+	private final Map copletInstanceData;
+
+    public CopletInstanceDataManager() {
+        this.copletInstanceData = new HashMap();
+    }
+
+    public CopletInstanceDataManager(Map instances) {
+        this.copletInstanceData = instances;
+    }
 
 	/**
 	 * Gets all coplet instance data.

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java?rev=306567&r1=306566&r2=306567&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java Thu Oct  6 02:53:42 2005
@@ -613,7 +613,9 @@
                                           this.getUser(), 
                                           false,
                                           layoutKey);
-            adapter.saveProfile(key, parameters, profile.getCopletInstanceDatas());
+            // FIXME - we should be able to save without creating a CopletInstanceDataManager
+            CopletInstanceDataManager cidm = new CopletInstanceDataManager(profile.getCopletInstanceDatas());
+            adapter.saveProfile(key, parameters, cidm);
         } catch (Exception e) {
             // TODO
             throw new CascadingRuntimeException("Exception during save profile", e);
@@ -651,6 +653,4 @@
             this.manager.release(adapter);
         }
     }
-
-
 }