weaver 2004/10/29 07:04:16 Modified: components/registry/src/java/org/apache/jetspeed/components/portletentity PortletEntityImpl.java PortletEntityAccessComponentImpl.java Added: components/registry/src/java/org/apache/jetspeed/components/portletentity PersistenceBrokerPortletEntityAccess.java Log: see: http://nagoya.apache.org/jira/browse/JS2-144 - refactor of registry and entity DAO Revision Changes Path 1.8 +30 -69 jakarta-jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java Index: PortletEntityImpl.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- PortletEntityImpl.java 9 Jul 2004 18:18:48 -0000 1.7 +++ PortletEntityImpl.java 29 Oct 2004 14:04:16 -0000 1.8 @@ -28,17 +28,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.jetspeed.components.persistence.Storeable; -import org.apache.jetspeed.components.persistence.store.Filter; import org.apache.jetspeed.components.persistence.store.PersistenceStore; import org.apache.jetspeed.components.persistence.store.PersistenceStoreRuntimeExcpetion; import org.apache.jetspeed.components.persistence.store.RemovalAware; -import org.apache.jetspeed.components.persistence.store.Transaction; import org.apache.jetspeed.om.common.portlet.MutablePortletApplication; import org.apache.jetspeed.om.common.portlet.MutablePortletEntity; import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite; import org.apache.jetspeed.om.common.portlet.PrincipalAware; -import org.apache.jetspeed.om.portlet.impl.PortletDefinitionImpl; import org.apache.jetspeed.om.preference.impl.PrefsPreference; import org.apache.jetspeed.om.preference.impl.PrefsPreferenceSetImpl; import org.apache.jetspeed.om.window.impl.PortletWindowListImpl; @@ -59,7 +55,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver </a> * @version $Id$ */ -public class PortletEntityImpl implements MutablePortletEntity, Storeable, PrincipalAware, RemovalAware +public class PortletEntityImpl implements MutablePortletEntity, PrincipalAware, RemovalAware { private long oid; @@ -68,7 +64,7 @@ private JetspeedObjectID id; - protected PersistenceStore store; + protected static PortletEntityAccessComponent pac; private static final Log log = LogFactory.getLog(PortletEntityImpl.class); @@ -98,19 +94,6 @@ public static final String NO_PRINCIPAL = "no-principal"; - /** - * <p> - * setPersistenceStore - * </p> - * - * @see org.apache.jetspeed.components.persistence.Storeable#setStore(Object) - * @param store - */ - public void setStore( Object store ) - { - this.store = (PersistenceStore) store; - } - public ObjectID getId() { return id; @@ -193,14 +176,14 @@ public PortletDefinition getPortletDefinition() { - if(portletDefinition == null) - { - Filter filter = store.newFilter(); - filter.addEqualTo("app.name", appName); - filter.addEqualTo("name", portletName); - Object query = store.newQuery(PortletDefinitionImpl.class, filter); - this.portletDefinition = (PortletDefinitionComposite) store.getObjectByQuery(query); - } +// if(portletDefinition == null) +// { +// Filter filter = store.newFilter(); +// filter.addEqualTo("app.name", appName); +// filter.addEqualTo("name", portletName); +// Object query = store.newQuery(PortletDefinitionImpl.class, filter); +// this.portletDefinition = (PortletDefinitionComposite) store.getObjectByQuery(query); +// } return this.portletDefinition; } @@ -223,37 +206,19 @@ */ public void store() throws IOException { - if (store == null) + if (pac == null) { - throw new IllegalStateException("You must call PortletEntityImpl.setStore() before " + throw new IllegalStateException("You must call PortletEntityImpl.setPorteltEntityDao() before " + "invoking PortletEntityImpl.store()."); } - PrefsPreferenceSetImpl preferenceSet = (PrefsPreferenceSetImpl) preferenceSetRef.get(); - try - { - prepareTransaction(store); - store.lockForWrite(this); - if (preferenceSet != null) - { - preferenceSet.flush(); - } - store.getTransaction().checkpoint(); - dirty = false; - if (preferenceSet != null) - { - backupValues(preferenceSet); - } - } - catch (Exception e) + PreferenceSet preferenceSet = (PreferenceSet)preferenceSetRef.get(); + pac.storePreferenceSet(preferenceSet, this); + dirty = false; + if (preferenceSet != null) { - String msg = "Failed to store portlet entity:" + e.toString(); - IOException ioe = new IOException(msg); - ioe.initCause(e); - store.getTransaction().rollback(); - throw ioe; + backupValues(preferenceSet); } - } /** @@ -331,7 +296,14 @@ buffer.append("'"); StringUtils.newLine(buffer, indent); buffer.append("definition-id='"); - buffer.append(portletDefinition.getId().toString()); + if(portletDefinition != null) + { + buffer.append(portletDefinition.getId().toString()); + } + else + { + buffer.append("null"); + } buffer.append("'"); StringUtils.newLine(buffer, indent); @@ -366,21 +338,6 @@ } /** - * Checks to see if the <code>store</code>'s current transaction needs to - * be started or not. - * - * @param store - */ - protected void prepareTransaction( PersistenceStore store ) - { - Transaction tx = store.getTransaction(); - if (!tx.isOpen()) - { - tx.begin(); - } - } - - /** * @return Returns the principal. */ public Principal getPrincipal() @@ -513,5 +470,9 @@ throw new PersistenceStoreRuntimeExcpetion(e.toString(), e); } + } + public String getPortletUniqueName() + { + return this.appName+"::"+this.portletName; } } 1.24 +39 -11 jakarta-jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity/PortletEntityAccessComponentImpl.java Index: PortletEntityAccessComponentImpl.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity/PortletEntityAccessComponentImpl.java,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- PortletEntityAccessComponentImpl.java 12 Oct 2004 19:56:20 -0000 1.23 +++ PortletEntityAccessComponentImpl.java 29 Oct 2004 14:04:16 -0000 1.24 @@ -15,6 +15,7 @@ */ package org.apache.jetspeed.components.portletentity; +import java.io.IOException; import java.security.Principal; import java.util.Collection; import java.util.HashMap; @@ -22,17 +23,19 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.jetspeed.components.persistence.Storeable; import org.apache.jetspeed.components.persistence.store.Filter; import org.apache.jetspeed.components.persistence.store.LockFailedException; import org.apache.jetspeed.components.persistence.store.PersistenceStore; import org.apache.jetspeed.components.persistence.store.Transaction; -import org.apache.jetspeed.components.portletregistry.PortletRegistryComponent; +import org.apache.jetspeed.components.portletregistry.PortletRegistry; import org.apache.jetspeed.om.common.portlet.MutablePortletApplication; import org.apache.jetspeed.om.common.portlet.MutablePortletEntity; +import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite; import org.apache.jetspeed.om.page.Fragment; +import org.apache.jetspeed.om.preference.impl.PrefsPreferenceSetImpl; import org.apache.jetspeed.util.JetspeedObjectID; import org.apache.pluto.om.common.ObjectID; +import org.apache.pluto.om.common.PreferenceSet; import org.apache.pluto.om.entity.PortletEntity; import org.apache.pluto.om.entity.PortletEntityCtrl; import org.apache.pluto.om.portlet.PortletDefinition; @@ -58,7 +61,7 @@ private PersistenceStore persistenceStore; - private PortletRegistryComponent registry; + private PortletRegistry registry; protected Principal principal; @@ -67,10 +70,11 @@ * @param persistenceStore * @param registry */ - public PortletEntityAccessComponentImpl( PersistenceStore persistenceStore, PortletRegistryComponent registry ) + public PortletEntityAccessComponentImpl( PersistenceStore persistenceStore, PortletRegistry registry ) { this.persistenceStore = persistenceStore; this.registry = registry; + PortletEntityImpl.pac = this; } @@ -190,8 +194,7 @@ { if (entityCache.get(entityId) != null) { - PortletEntityImpl entity = (PortletEntityImpl) entityCache.get(entityId); - entity.setStore(persistenceStore); + PortletEntityImpl entity = (PortletEntityImpl) entityCache.get(entityId); return entity; } else @@ -202,14 +205,18 @@ Filter filter = store.newFilter(); filter.addEqualTo("id", entityId.toString()); Object q = store.newQuery(PortletEntityImpl.class, filter); - PortletEntity portletEntity = (PortletEntity) store.getObjectByQuery(q); + MutablePortletEntity portletEntity = (MutablePortletEntity) store.getObjectByQuery(q); if (portletEntity == null) { return null; } else { - ((Storeable) portletEntity).setStore(persistenceStore); + + String portletUniqueName = portletEntity.getPortletUniqueName(); + PortletDefinitionComposite parentPortletDef = registry + .getPortletDefinitionByUniqueName(portletUniqueName); + ((PortletEntityCtrl) portletEntity).setPortletDefinition(parentPortletDef); entityCache.put(entityId, portletEntity); return (PortletEntityImpl) portletEntity; } @@ -225,10 +232,7 @@ portletEntity.setPortletDefinition(portletDefinition); - portletEntity.setStore(persistenceStore); - return (PortletEntityImpl) portletEntity; - } /** @@ -352,4 +356,28 @@ return persistenceStore; } + public void storePreferenceSet( PreferenceSet prefSet, PortletEntity entity ) throws IOException + { + PrefsPreferenceSetImpl preferenceSet = (PrefsPreferenceSetImpl) prefSet; + try + { + prepareTransaction(persistenceStore); + persistenceStore.lockForWrite(entity); + if (preferenceSet != null) + { + preferenceSet.flush(); + } + persistenceStore.getTransaction().checkpoint(); + + } + catch (Exception e) + { + String msg = "Failed to store portlet entity:" + e.toString(); + IOException ioe = new IOException(msg); + ioe.initCause(e); + persistenceStore.getTransaction().rollback(); + throw ioe; + } + + } } 1.1 jakarta-jetspeed-2/components/registry/src/java/org/apache/jetspeed/components/portletentity/PersistenceBrokerPortletEntityAccess.java Index: PersistenceBrokerPortletEntityAccess.java =================================================================== /* * Copyright 2000-2001,2004 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. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.components.portletentity; import java.io.IOException; import java.util.Collection; import java.util.Iterator; import java.util.prefs.BackingStoreException; import org.apache.jetspeed.components.portletregistry.PortletRegistry; import org.apache.jetspeed.om.common.portlet.MutablePortletApplication; import org.apache.jetspeed.om.common.portlet.MutablePortletEntity; import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite; import org.apache.jetspeed.om.page.Fragment; import org.apache.jetspeed.om.preference.impl.PrefsPreferenceSetImpl; import org.apache.jetspeed.util.JetspeedObjectID; import org.apache.ojb.broker.query.Criteria; import org.apache.ojb.broker.query.Query; import org.apache.ojb.broker.query.QueryFactory; import org.apache.pluto.om.common.ObjectID; import org.apache.pluto.om.common.PreferenceSet; import org.apache.pluto.om.entity.PortletEntity; import org.apache.pluto.om.entity.PortletEntityCtrl; import org.apache.pluto.om.portlet.PortletDefinition; import org.springframework.orm.ojb.support.PersistenceBrokerDaoSupport; /** * <p> * PersistenceStorePortletEntityAccess * </p> * <p> * * </p> * * @author <a href="mailto:[EMAIL PROTECTED]">Scott T. Weaver </a> * @version $Id: PersistenceBrokerPortletEntityAccess.java,v 1.1 2004/10/29 14:04:16 weaver Exp $ * */ public class PersistenceBrokerPortletEntityAccess extends PersistenceBrokerDaoSupport implements PortletEntityAccessComponent { private PortletRegistry registry; /** * * @param registry */ public PersistenceBrokerPortletEntityAccess( PortletRegistry registry ) { super(); this.registry = registry; PortletEntityImpl.pac = this; } /** * * <p> * generateEntityFromFragment * </p> * * @see org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent#generateEntityFromFragment(org.apache.jetspeed.om.page.Fragment, * java.lang.String) * @param fragment * @param principal * @return @throws * PortletEntityNotGeneratedException */ public MutablePortletEntity generateEntityFromFragment( Fragment fragment, String principal ) throws PortletEntityNotGeneratedException { PortletDefinition pd = registry.getPortletDefinitionByUniqueName(fragment.getName()); ObjectID entityKey = generateEntityKey(fragment, principal); if (pd == null) { throw new PortletEntityNotGeneratedException("Failed to retrieve Portlet Definition for " + fragment.getName()); } MutablePortletEntity portletEntity = newPortletEntityInstance(pd); if (portletEntity == null) { throw new PortletEntityNotGeneratedException("Failed to create Portlet Entity for " + fragment.getName()); } portletEntity.setId(entityKey.toString()); return portletEntity; } /** * * <p> * generateEntityFromFragment * </p> * * @see org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent#generateEntityFromFragment(org.apache.jetspeed.om.page.Fragment) * @param fragment * @return @throws * PortletEntityNotGeneratedException */ public MutablePortletEntity generateEntityFromFragment( Fragment fragment ) throws PortletEntityNotGeneratedException { return generateEntityFromFragment(fragment, null); } /** * * <p> * generateEntityKey * </p> * * @see org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent#generateEntityKey(org.apache.jetspeed.om.page.Fragment, * java.lang.String) * @param fragment * @param principal * @return */ public ObjectID generateEntityKey( Fragment fragment, String principal ) { StringBuffer key = new StringBuffer(); if (principal != null && principal.length() > 0) { key.append(principal); key.append("/"); } key.append(fragment.getId()); return JetspeedObjectID.createFromString(key.toString()); } /** * * <p> * getPortletEntities * </p> * * @see org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent#getPortletEntities(org.apache.pluto.om.portlet.PortletDefinition) * @param portletDefinition * @return */ public Collection getPortletEntities( PortletDefinition portletDefinition ) { Criteria c = new Criteria(); String appName = ((MutablePortletApplication) portletDefinition.getPortletApplicationDefinition()).getName(); String portletName = portletDefinition.getName(); c.addEqualTo("appName", appName); c.addEqualTo("portletName", portletName); return getPersistenceBrokerTemplate().getCollectionByQuery(QueryFactory.newQuery(PortletEntityImpl.class, c)); } public MutablePortletEntity getPortletEntity( ObjectID id ) { Criteria c = new Criteria(); c.addEqualTo("id", id.toString()); Query q = QueryFactory.newQuery(PortletEntityImpl.class, c); MutablePortletEntity portletEntity = (MutablePortletEntity) getPersistenceBrokerTemplate().getObjectByQuery(q); if (portletEntity == null) { return null; } else { String portletUniqueName = portletEntity.getPortletUniqueName(); PortletDefinitionComposite parentPortletDef = registry.getPortletDefinitionByUniqueName(portletUniqueName); if(parentPortletDef != null) { ((PortletEntityCtrl) portletEntity).setPortletDefinition(parentPortletDef); return (MutablePortletEntity) portletEntity; } else { logger.warn("No parent portlet definition could be located using unique name: "+portletUniqueName+ ". Unless you plan on redploying this portlet definition, it is highly recommended "+ "that you delete the orphaned portlet entity with the id: "+portletEntity.getId()); return (MutablePortletEntity) portletEntity; } } } public MutablePortletEntity getPortletEntity( String id ) { ObjectID oid = JetspeedObjectID.createFromString(id); return getPortletEntity(oid); } public MutablePortletEntity getPortletEntityForFragment( Fragment fragment, String principal ) { return getPortletEntity(generateEntityKey(fragment, principal)); } public MutablePortletEntity getPortletEntityForFragment( Fragment fragment ) { return getPortletEntity(generateEntityKey(fragment, null)); } public MutablePortletEntity newPortletEntityInstance( PortletDefinition portletDefinition ) { PortletEntityImpl portletEntity = new PortletEntityImpl(); portletEntity.setPortletDefinition(portletDefinition); return (PortletEntityImpl) portletEntity; } public void removeFromCache( PortletEntity entity ) { // TODO Auto-generated method stub } public void removePortletEntities( PortletDefinition portletDefinition ) throws PortletEntityNotDeletedException { Iterator entities = getPortletEntities(portletDefinition).iterator(); while (entities.hasNext()) { PortletEntity entity = (PortletEntity) entities.next(); removePortletEntity(entity); } } public void removePortletEntity( PortletEntity portletEntity ) throws PortletEntityNotDeletedException { PrefsPreferenceSetImpl prefsSet = (PrefsPreferenceSetImpl) portletEntity.getPreferenceSet(); getPersistenceBrokerTemplate().delete(portletEntity); try { prefsSet.clear(); } catch (BackingStoreException e) { throw new PortletEntityNotDeletedException("Failed to remove preferences for portlet entity "+portletEntity.getId()+". "+e.getMessage(), e); } } public void storePortletEntity( PortletEntity portletEntity ) throws PortletEntityNotStoredException { try { ((PortletEntityCtrl) portletEntity).store(); } catch (Exception e) { throw new PortletEntityNotStoredException(e.toString(), e); } } /** * <p> * storePreferenceSet * </p> * * @see org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent#storePreferenceSet(org.apache.pluto.om.common.PreferenceSet) * @param prefSet * @throws IOException */ public void storePreferenceSet( PreferenceSet prefSet, PortletEntity entity ) throws IOException { PrefsPreferenceSetImpl preferenceSet = (PrefsPreferenceSetImpl) prefSet; try { getPersistenceBrokerTemplate().store(entity); if (preferenceSet != null) { preferenceSet.flush(); } } catch (Exception e) { String msg = "Failed to store portlet entity:" + e.toString(); IOException ioe = new IOException(msg); ioe.initCause(e); throw ioe; } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]