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 12:07:07 UTC
svn commit: r306572 - in
/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon:
components/persistence/CastorSourceConverter.java
portal/profile/impl/CopletInstanceDataManager.java
portal/profile/impl/GroupBasedProfileManager.java
Author: cziegeler
Date: Thu Oct 6 03:06:57 2005
New Revision: 306572
URL: http://svn.apache.org/viewcvs?rev=306572&view=rev
Log:
Fix profile saving and improve castor usage
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/CopletInstanceDataManager.java
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java?rev=306572&r1=306571&r2=306572&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java Thu Oct 6 03:06:57 2005
@@ -46,7 +46,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
@@ -71,16 +71,15 @@
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);
}
@@ -90,7 +89,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) {
@@ -106,14 +105,14 @@
}
}
- /* (non-Javadoc)
+ /**
* @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
*/
public void service(ServiceManager manager) throws ServiceException {
this.manager = manager;
}
- /* (non-Javadoc)
+ /**
* @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
*/
public void configure(Configuration config) throws ConfigurationException {
@@ -123,9 +122,10 @@
this.mappingSources.put(mappingSource.getAttribute("source"), mappingSource.getValue());
}
this.defaultSuppressXSIType = config.getChild("suppressXSIType").getValueAsBoolean(false);
+ this.defaultValidateUnmarshalling = config.getChild("validate-on-unmarshalling").getValueAsBoolean(false);
}
- /* (non-Javadoc)
+ /**
* @see org.apache.avalon.framework.activity.Initializable#initialize()
*/
public void initialize() throws Exception {
@@ -145,7 +145,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/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/CopletInstanceDataManager.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/CopletInstanceDataManager.java?rev=306572&r1=306571&r2=306572&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/CopletInstanceDataManager.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/CopletInstanceDataManager.java Thu Oct 6 03:06:57 2005
@@ -25,15 +25,23 @@
*
* @author <a href="mailto:bluetkemeier@s-und-n.de">Björn Lütkemeier</a>
*
- * @version CVS $Id: CopletInstanceDataManager.java,v 1.5 2004/03/05 13:02:16 bdelacretaz Exp $
+ * @version CVS $Id$
*/
public class CopletInstanceDataManager {
/**
* 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/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java?rev=306572&r1=306571&r2=306572&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java Thu Oct 6 03:06:57 2005
@@ -1,12 +1,12 @@
/*
- * Copyright 1999-2002,2004 The Apache Software Foundation.
- *
+ * Copyright 1999-2002,2004-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.
@@ -639,5 +639,73 @@
} finally {
this.manager.release(service);
}
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.profile.ProfileManager#saveUserCopletInstanceDatas(java.lang.String)
+ */
+ public void saveUserCopletInstanceDatas(String layoutKey) {
+ ProfileLS adapter = null;
+ PortalService service = null;
+ try {
+ service = (PortalService) this.manager.lookup(PortalService.ROLE);
+ adapter = (ProfileLS) this.manager.lookup(ProfileLS.ROLE);
+ if (layoutKey == null) {
+ layoutKey = service.getDefaultLayoutKey();
+ }
+ final UserProfile profile = this.getUserProfile(layoutKey);
+
+ final Map parameters = new HashMap();
+ parameters.put(ProfileLS.PARAMETER_PROFILETYPE,
+ ProfileLS.PROFILETYPE_COPLETINSTANCEDATA);
+
+ final UserInfo info = this.provider.getUserInfo(service.getPortalName(), layoutKey);
+ final Map key = this.buildKey(CATEGORY_USER,
+ ProfileLS.PROFILETYPE_COPLETINSTANCEDATA,
+ info,
+ false);
+ // 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);
+ } finally {
+ this.manager.release(service);
+ this.manager.release(adapter);
+ }
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.profile.ProfileManager#saveUserLayout(java.lang.String)
+ */
+ public void saveUserLayout(String layoutKey) {
+ ProfileLS adapter = null;
+ PortalService service = null;
+ try {
+ service = (PortalService) this.manager.lookup(PortalService.ROLE);
+ adapter = (ProfileLS) this.manager.lookup(ProfileLS.ROLE);
+ if (layoutKey == null) {
+ layoutKey = service.getDefaultLayoutKey();
+ }
+ final UserProfile profile = this.getUserProfile(layoutKey);
+
+ final Map parameters = new HashMap();
+ parameters.put(ProfileLS.PARAMETER_PROFILETYPE,
+ ProfileLS.PROFILETYPE_LAYOUT);
+
+ final UserInfo info = this.provider.getUserInfo(service.getPortalName(), layoutKey);
+ final Map key = this.buildKey(CATEGORY_USER,
+ ProfileLS.PROFILETYPE_LAYOUT,
+ info,
+ false);
+ adapter.saveProfile(key, parameters, profile.getRootLayout());
+ } catch (Exception e) {
+ // TODO
+ throw new CascadingRuntimeException("Exception during save profile", e);
+ } finally {
+ this.manager.release(service);
+ this.manager.release(adapter);
+ }
}
}