You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2009/01/05 07:04:18 UTC
svn commit: r731466 [9/12] - in
/portals/jetspeed-2/portal/branches/JPA_BRANCH: ./
components/jetspeed-cm/src/main/java/org/apache/jetspeed/components/
components/jetspeed-cm/src/main/java/org/apache/jetspeed/test/
components/jetspeed-page-manager/ com...
Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/document/jpa/NodeSetImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/document/jpa/NodeSetImpl.java?rev=731466&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/document/jpa/NodeSetImpl.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/document/jpa/NodeSetImpl.java Sun Jan 4 22:04:13 2009
@@ -0,0 +1,232 @@
+/*
+ * 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.jetspeed.page.document.jpa;
+
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.regex.Pattern;
+
+import org.apache.commons.collections.map.LRUMap;
+import org.apache.jetspeed.page.document.Node;
+import org.apache.jetspeed.page.document.NodeSet;
+
+/**
+ * NodeSetImpl
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public class NodeSetImpl implements NodeSet
+{
+ public static final NodeSetImpl EMPTY_NODE_SET = new NodeSetImpl();
+
+ private static final Map patternCache = new LRUMap(128);
+
+ private Map nodes;
+ private Comparator comparator;
+
+ public NodeSetImpl(List nodes, Comparator comparator)
+ {
+ this.nodes = new TreeMap(comparator);
+ Iterator nodesIter = nodes.iterator();
+ while (nodesIter.hasNext())
+ {
+ Node node = (Node)nodesIter.next();
+ if (!this.nodes.containsKey(node.getName()))
+ {
+ this.nodes.put(node.getName(), node);
+ }
+ }
+ this.comparator = comparator;
+ }
+
+ public NodeSetImpl(List nodes)
+ {
+ this(nodes, null);
+ }
+
+ public NodeSetImpl(Comparator comparator)
+ {
+ this.comparator = comparator;
+ }
+
+ public NodeSetImpl(NodeSet nodeSet)
+ {
+ this((nodeSet instanceof NodeSetImpl) ? ((NodeSetImpl)nodeSet).comparator : (Comparator)null);
+ }
+
+ public NodeSetImpl()
+ {
+ }
+
+ /**
+ * getCachedPattern
+ *
+ * @param regex pattern
+ * @return cached pattern
+ */
+ private Pattern getCachedPattern(String regex)
+ {
+ synchronized (patternCache)
+ {
+ if (patternCache.containsKey(regex))
+ {
+ return (Pattern)patternCache.get(regex);
+ }
+ else
+ {
+ Pattern pattern = Pattern.compile(regex);
+ patternCache.put(regex, pattern);
+ return pattern;
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.NodeSet#add(org.apache.jetspeed.page.document.Node)
+ */
+ public void add(Node node)
+ {
+ if (nodes == null)
+ {
+ nodes = new TreeMap(comparator);
+ }
+ if (!nodes.containsKey(node.getName()))
+ {
+ nodes.put(node.getName(), node);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.NodeSet#get(java.lang.String)
+ */
+ public Node get(String name)
+ {
+ if (nodes != null)
+ {
+ return (Node)nodes.get(name);
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.NodeSet#iterator()
+ */
+ public Iterator iterator()
+ {
+ if (nodes == null)
+ {
+ nodes = new TreeMap(comparator);
+ }
+ return nodes.values().iterator();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.NodeSet#subset(java.lang.String)
+ */
+ public NodeSet subset(String type)
+ {
+ NodeSetImpl subset = new NodeSetImpl(comparator);
+ Iterator nodeItr = iterator();
+ while (nodeItr.hasNext())
+ {
+ Node node = (Node) nodeItr.next();
+ if (node.getType().equals(type))
+ {
+ subset.add(node);
+ }
+ }
+ return subset;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.NodeSet#inclusiveSubset(java.lang.String)
+ */
+ public NodeSet inclusiveSubset(String regex)
+ {
+ Pattern pattern = getCachedPattern(regex);
+ NodeSetImpl subset = new NodeSetImpl(comparator);
+ Iterator nodeItr = iterator();
+ while (nodeItr.hasNext())
+ {
+ Node node = (Node) nodeItr.next();
+ if (pattern.matcher(node.getName()).matches())
+ {
+ subset.add(node);
+ }
+ }
+ return subset;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.NodeSet#exclusiveSubset(java.lang.String)
+ */
+ public NodeSet exclusiveSubset(String regex)
+ {
+ Pattern pattern = getCachedPattern(regex);
+ NodeSetImpl subset = new NodeSetImpl(comparator);
+ Iterator nodeItr = iterator();
+ while (nodeItr.hasNext())
+ {
+ Node node = (Node) nodeItr.next();
+ if (!pattern.matcher(node.getName()).matches())
+ {
+ subset.add(node);
+ }
+ }
+ return subset;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.NodeSet#size()
+ */
+ public int size()
+ {
+ if (nodes != null)
+ {
+ return nodes.size();
+ }
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.NodeSet#contains(org.apache.jetspeed.page.document.Node)
+ */
+ public boolean contains(Node node)
+ {
+ if (nodes != null)
+ {
+ return nodes.containsValue(node);
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.NodeSet#isEmpty()
+ */
+ public boolean isEmpty()
+ {
+ if (nodes != null)
+ {
+ return nodes.isEmpty();
+ }
+ return true;
+ }
+}
Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/document/psml/AbstractNode.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/document/psml/AbstractNode.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/document/psml/AbstractNode.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/document/psml/AbstractNode.java Sun Jan 4 22:04:13 2009
@@ -21,11 +21,12 @@
import java.util.Locale;
import org.apache.jetspeed.JetspeedActions;
-import org.apache.jetspeed.om.common.SecurityConstraints;
+import org.apache.jetspeed.om.common.SecurityConstraintsContext;
+import org.apache.jetspeed.om.page.PageLocalizedFieldImpl;
import org.apache.jetspeed.om.page.PageMetadataImpl;
import org.apache.jetspeed.om.page.PageSecurity;
import org.apache.jetspeed.om.page.psml.AbstractBaseElement;
-import org.apache.jetspeed.om.page.psml.SecurityConstraintsImpl;
+import org.apache.jetspeed.om.page.psml.SecurityConstraintsContextImpl;
import org.apache.jetspeed.om.portlet.GenericMetadata;
import org.apache.jetspeed.page.document.Node;
@@ -111,7 +112,7 @@
{
if (metadata == null)
{
- metadata = new PageMetadataImpl();
+ metadata = new PageMetadataImpl(PageLocalizedFieldImpl.class);
}
return metadata;
}
@@ -400,10 +401,10 @@
// check node constraints if available; otherwise,
// recursively check parent constraints until
// default constraints for node are checked
- SecurityConstraints constraints = getSecurityConstraints();
- if ((constraints != null) && !constraints.isEmpty())
+ SecurityConstraintsContext constraintsContext = getSecurityConstraintsContext();
+ if ((constraintsContext != null) && !constraintsContext.isEmpty())
{
- ((SecurityConstraintsImpl)constraints).checkConstraints(actions, userPrincipals, rolePrincipals, groupPrincipals, getEffectivePageSecurity());
+ ((SecurityConstraintsContextImpl)constraintsContext).checkConstraints(actions, userPrincipals, rolePrincipals, groupPrincipals, getEffectivePageSecurity());
}
else if (parent != null)
{
@@ -416,10 +417,10 @@
// to be skipped due to explicity granted access
if (!checkParentsOnly)
{
- SecurityConstraints constraints = getSecurityConstraints();
- if ((constraints != null) && !constraints.isEmpty())
+ SecurityConstraintsContext constraintsContext = getSecurityConstraintsContext();
+ if ((constraintsContext != null) && !constraintsContext.isEmpty())
{
- ((SecurityConstraintsImpl)constraints).checkConstraints(actions, userPrincipals, rolePrincipals, groupPrincipals, getEffectivePageSecurity());
+ ((SecurityConstraintsContextImpl)constraintsContext).checkConstraints(actions, userPrincipals, rolePrincipals, groupPrincipals, getEffectivePageSecurity());
}
}
Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManager.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManager.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManager.java Sun Jan 4 22:04:13 2009
@@ -16,6 +16,7 @@
*/
package org.apache.jetspeed.page.impl;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@@ -28,7 +29,7 @@
import org.apache.jetspeed.cache.JetspeedCache;
import org.apache.jetspeed.components.dao.InitablePersistenceBrokerDaoSupport;
import org.apache.jetspeed.om.common.SecurityConstraint;
-import org.apache.jetspeed.om.common.SecurityConstraints;
+import org.apache.jetspeed.om.common.SecurityConstraintsContext;
import org.apache.jetspeed.om.folder.Folder;
import org.apache.jetspeed.om.folder.FolderNotFoundException;
import org.apache.jetspeed.om.folder.InvalidFolderException;
@@ -66,7 +67,7 @@
import org.apache.jetspeed.om.page.impl.PageSecurityImpl;
import org.apache.jetspeed.om.page.impl.PageSecuritySecurityConstraintImpl;
import org.apache.jetspeed.om.page.impl.SecurityConstraintsDefImpl;
-import org.apache.jetspeed.om.page.impl.SecurityConstraintsImpl;
+import org.apache.jetspeed.om.page.impl.SecurityConstraintsContextImpl;
import org.apache.jetspeed.om.preference.FragmentPreference;
import org.apache.jetspeed.page.DelegatingPageManager;
import org.apache.jetspeed.page.FolderNotRemovedException;
@@ -120,7 +121,7 @@
modelClasses.put("PageMenuIncludeDefinitionImpl", PageMenuIncludeDefinitionImpl.class);
modelClasses.put("PageMenuOptionsDefinitionImpl", PageMenuOptionsDefinitionImpl.class);
modelClasses.put("PageMenuSeparatorDefinitionImpl", PageMenuSeparatorDefinitionImpl.class);
- modelClasses.put("SecurityConstraintsImpl", SecurityConstraintsImpl.class);
+ modelClasses.put("SecurityConstraintsContextImpl", SecurityConstraintsContextImpl.class);
modelClasses.put("FolderSecurityConstraintImpl", FolderSecurityConstraintImpl.class);
modelClasses.put("PageSecurityConstraintImpl", PageSecurityConstraintImpl.class);
modelClasses.put("FragmentSecurityConstraintImpl", FragmentSecurityConstraintImpl.class);
@@ -187,6 +188,30 @@
}
/* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#registerContext(java.lang.Object)
+ */
+ public void registerContext(Object context)
+ {
+ delegator.registerContext(context);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getContext()
+ */
+ public Object getContext()
+ {
+ return delegator.getContext();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#unregisterContext(java.lang.Object)
+ */
+ public void unregisterContext(Object context)
+ {
+ delegator.unregisterContext(context);
+ }
+
+ /* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#newPage(java.lang.String)
*/
public Page newPage(String path)
@@ -315,11 +340,11 @@
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.page.PageManager#newSecurityConstraints()
+ * @see org.apache.jetspeed.page.PageManager#newSecurityConstraintsContext()
*/
- public SecurityConstraints newSecurityConstraints()
+ public SecurityConstraintsContext newSecurityConstraintsContext()
{
- return delegator.newSecurityConstraints();
+ return delegator.newSecurityConstraintsContext();
}
/* (non-Javadoc)
@@ -402,7 +427,7 @@
// propagate to delegator
delegator.reset();
- // clear cache to force subsequent refreshs from persistent store
+ // clear cache to force subsequent refreshes from persistent store
DatabasePageManagerCache.cacheClear();
}
@@ -667,17 +692,23 @@
Collection folders = getPersistenceBrokerTemplate().getCollectionByQuery(query);
// cache folders in folder
- folderImpl.accessFolders().clear();
- if (folders != null)
+ synchronized (folderImpl.accessCacheLock())
{
- folderImpl.accessFolders().addAll(folders);
+ folderImpl.accessFolders().clear();
+ if (folders != null)
+ {
+ folderImpl.accessFolders().addAll(folders);
+ }
+ folderImpl.resetFolders(true);
}
- folderImpl.resetFolders(true);
}
catch (Exception e)
{
// reset cache in folder
- folderImpl.resetFolders(false);
+ synchronized (folderImpl.accessCacheLock())
+ {
+ folderImpl.resetFolders(false);
+ }
throw new DocumentException("Unable to access folders for folder " + folder.getPath() + ".");
}
@@ -724,17 +755,23 @@
Collection pages = getPersistenceBrokerTemplate().getCollectionByQuery(query);
// cache pages in folder
- folderImpl.accessPages().clear();
- if (pages != null)
+ synchronized (folderImpl.accessCacheLock())
{
- folderImpl.accessPages().addAll(pages);
+ folderImpl.accessPages().clear();
+ if (pages != null)
+ {
+ folderImpl.accessPages().addAll(pages);
+ }
+ folderImpl.resetPages(true);
}
- folderImpl.resetPages(true);
}
catch (Exception e)
{
// reset cache in folder
- folderImpl.resetPages(false);
+ synchronized (folderImpl.accessCacheLock())
+ {
+ folderImpl.resetPages(false);
+ }
throw new NodeException("Unable to access pages for folder " + folder.getPath() + ".");
}
@@ -781,17 +818,23 @@
Collection links = getPersistenceBrokerTemplate().getCollectionByQuery(query);
// cache links in folder
- folderImpl.accessLinks().clear();
- if (links != null)
+ synchronized (folderImpl.accessCacheLock())
{
- folderImpl.accessLinks().addAll(links);
+ folderImpl.accessLinks().clear();
+ if (links != null)
+ {
+ folderImpl.accessLinks().addAll(links);
+ }
+ folderImpl.resetLinks(true);
}
- folderImpl.resetLinks(true);
}
catch (Exception e)
{
// reset cache in folder
- folderImpl.resetLinks(false);
+ synchronized (folderImpl.accessCacheLock())
+ {
+ folderImpl.resetLinks(false);
+ }
throw new NodeException("Unable to access links for folder " + folder.getPath() + ".");
}
@@ -874,7 +917,7 @@
try
{
// query for all nodes
- List all = DatabasePageManagerUtils.createList();
+ List all = new ArrayList();
Criteria filter = new Criteria();
filter.addEqualTo("parent", Integer.valueOf(folderImpl.getId()));
QueryByCriteria query = QueryFactory.newQuery(FolderImpl.class, filter);
@@ -903,14 +946,20 @@
}
// cache links in folder
- folderImpl.accessAll().clear();
- folderImpl.accessAll().addAll(all);
- folderImpl.resetAll(true);
+ synchronized (folderImpl.accessCacheLock())
+ {
+ folderImpl.accessAll().clear();
+ folderImpl.accessAll().addAll(all);
+ folderImpl.resetAll(true);
+ }
}
catch (Exception e)
{
// reset cache in folder
- folderImpl.resetAll(false);
+ synchronized (folderImpl.accessCacheLock())
+ {
+ folderImpl.resetAll(false);
+ }
throw new DocumentException("Unable to access all nodes for folder " + folder.getPath() + ".");
}
@@ -1855,17 +1904,13 @@
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#addPages(org.apache.jetspeed.om.page.Page[])
*/
- public int addPages(Page[] pages)
- throws NodeException
+ public int addPages(Page[] pages) throws NodeException
{
if (pages.length > 0 && pages[0].getPath().equals("/tx__test1.psml"))
{
// for tx testing
- System.out.println("Adding first page");
this.updatePage(pages[0]);
- System.out.println("Adding second page");
this.updatePage(pages[1]);
- System.out.println("About to throw ex");
throw new NodeException("Its gonna blow captain!");
}
for (int ix = 0; ix < pages.length; ix++)
Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManagerCache.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManagerCache.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManagerCache.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/impl/DatabasePageManagerCache.java Sun Jan 4 22:04:13 2009
@@ -189,19 +189,18 @@
final String path = cacheObject.getPath();
if ((oid != null) || (path != null))
{
+ NodeImpl node = null;
synchronized (DatabasePageManagerCache.class)
{
if (oid != null)
{
// get object cached by oid
- final NodeImpl node = (NodeImpl)cacheLookup(oid);
+ node = (NodeImpl)cacheLookup(oid);
// reset internal FolderImpl caches
if (node instanceof FolderImpl)
{
((FolderImpl)node).resetAll(false);
}
- // notify page manager of update
- pageManager.notifyUpdatedNode(node);
// remove from cache
oidCache.removeQuiet(oid);
}
@@ -211,6 +210,10 @@
final int pathLastSeparatorIndex = path.lastIndexOf(Folder.PATH_SEPARATOR);
final String parentPath = ((pathLastSeparatorIndex > 0) ? path.substring(0, pathLastSeparatorIndex) : Folder.PATH_SEPARATOR);
final NodeImpl parentNode = cacheLookup(parentPath);
+ if (node == null)
+ {
+ node = parentNode;
+ }
// reset internal FolderImpl caches in case element removed
if (parentNode instanceof FolderImpl)
{
@@ -219,7 +222,9 @@
// ensure removed from cache
pathCache.removeQuiet(path);
}
- }
+ }
+ // notify page manager of update
+ pageManager.notifyUpdatedNode(node);
}
}
}
@@ -503,6 +508,16 @@
{
return pathCache.isDistributed();
}
+
+ /**
+ * Returns page manager proxy configured with this node.
+ *
+ * @return configured page manager
+ */
+ public static PageManager getPageManager()
+ {
+ return pageManager;
+ }
// OJB Constructor
Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/DatabasePageManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/DatabasePageManager.java?rev=731466&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/DatabasePageManager.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/DatabasePageManager.java Sun Jan 4 22:04:13 2009
@@ -0,0 +1,45 @@
+/*
+ * 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.jetspeed.page.jpa;
+
+import org.apache.jetspeed.page.PageManager;
+
+/**
+ * DatabasePageManager
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id: $
+ */
+public interface DatabasePageManager extends PageManager
+{
+ /**
+ * Inject proxied page manager interface used to
+ * inject into Folder instances to provide
+ * transaction/interception.
+ *
+ * @param proxy proxied page manager interface.
+ */
+ public void setDatabasePageManagerProxy(DatabasePageManager proxy);
+
+ /**
+ * Return global cached constraints version used to validate cached
+ * constraints in base elements managed by this page manager.
+ *
+ * @return global cached constraints version
+ */
+ public long getCachedConstraintsVersion();
+}
Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/DatabasePageManagerContext.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/DatabasePageManagerContext.java?rev=731466&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/DatabasePageManagerContext.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/DatabasePageManagerContext.java Sun Jan 4 22:04:13 2009
@@ -0,0 +1,83 @@
+/*
+ * 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.jetspeed.page.jpa;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+
+/**
+ * DatabasePageManagerContext
+ *
+ * Stateful object uses to hold JPA extended entity manager.
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id: $
+ */
+public class DatabasePageManagerContext
+{
+ private EntityManager extendedEntityManager;
+ private DatabasePageManager databasePageManager;
+
+ /**
+ * Set extended conversational entity manager instance for context.
+ *
+ * @param entityManager injected entity manager.
+ */
+ @PersistenceContext (type=PersistenceContextType.EXTENDED, unitName="jetspeed-page-manager")
+ public void setExtendedEntityManager(EntityManager entityManager)
+ {
+ extendedEntityManager = entityManager;
+ }
+
+ /**
+ * Get extended conversational entity manager instance for context.
+ *
+ * @return entity manager.
+ */
+ public EntityManager getExtendedEntityManager()
+ {
+ return extendedEntityManager;
+ }
+
+ /**
+ * Set database page manager associated with context.
+ *
+ * @param databasePageManager
+ */
+ public void setDatabasePageManager(DatabasePageManager databasePageManager)
+ {
+ this.databasePageManager = databasePageManager;
+ }
+
+ /**
+ * Initialize context by registering with page manager on creating thread.
+ */
+ public void initialize()
+ {
+ databasePageManager.registerContext(this);
+ }
+
+ /**
+ * Terminate context by unregistering with page manager on creating thread.
+ */
+ public void terminate()
+ {
+ databasePageManager.unregisterContext(this);
+ extendedEntityManager.close();
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org