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örn Lü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);
}
}
-
-
}