Author: julien(a)jboss.com
Date: 2007-05-10 11:28:52 -0400 (Thu, 10 May 2007)
New Revision: 7239
Added:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerContext.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/JBossInstanceContainerContext.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContainerContext.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceCustomization.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceDefinition.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentRoleSecurityBinding.java
Removed:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/ContainerContext.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceSecurityBinding.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/InstanceCustomizationImpl.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/InstanceDefinitionImpl.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContext.java
Modified:
trunk/core/build.xml
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstance.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstanceCustomization.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstanceDefinition.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerImpl.java
trunk/core/src/main/org/jboss/portal/test/core/model/instance/InstanceContainerTestCase.java
trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml
trunk/core/src/resources/portal-core-sar/conf/hibernate/instance/domain.hbm.xml
trunk/core/src/resources/portal-core-test-jar/org/jboss/portal/test/core/model/instance/persistent-jboss-beans.xml
trunk/security/src/main/org/jboss/portal/security/RoleSecurityBinding.java
Log:
- better split between instance container logic and persistence
- set persistent classes as package protected so it cannot leak out of the package
Modified: trunk/core/build.xml
===================================================================
--- trunk/core/build.xml 2007-05-10 15:04:30 UTC (rev 7238)
+++ trunk/core/build.xml 2007-05-10 15:28:52 UTC (rev 7239)
@@ -593,7 +593,7 @@
<parameter name="CacheNaturalId" value="true"/>
<parameter name="Config"
value="persistent-jboss-beans.xml"/>
</zest>
-<!--
+
<zest todir="${test.reports}"
name="org.jboss.portal.test.core.model.instance.InstanceContainerTestCase"
outfile="TEST-PersistedLocally-ClonedOnCreate-InstanceContainerTestCase">
<parameter name="PersistLocally" value="true"/>
@@ -601,7 +601,6 @@
<parameter name="CacheNaturalId" value="true"/>
<parameter name="Config"
value="transient-jboss-beans.xml"/>
</zest>
--->
<zest todir="${test.reports}"
name="org.jboss.portal.test.core.state.ProducerTestCase"
outfile="TEST-ProducerTestCase-WithoutRegistration">
<parameter name="UseRegistration"
value="false"/>
Modified:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstance.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstance.java 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstance.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -102,13 +102,6 @@
return portletContext;
}
- public final void setPortletContext(PortletContext portletContext)
- {
- this.portletRef = portletContext.getId();
- this.state = portletContext.getState();
- this.portletContext = portletContext;
- }
-
public final boolean isModifiable()
{
return isMutable();
@@ -120,18 +113,21 @@
protected abstract Logger getLogger();
- protected abstract String getInstanceId();
-
protected abstract AccessMode getAccessMode();
protected abstract void cloned(PortletContext portletContext);
- protected abstract void modified(PortletContext portletContext);
-
protected abstract AbstractInstanceDefinition getOwner();
- protected abstract ContainerContext getContainerContext();
+ protected abstract InstanceContainerContext getContainerContext();
+ protected abstract String getInstanceId();
+
+ protected final void modified(PortletContext portletContext)
+ {
+ getContainerContext().updateInstance(this, portletContext);
+ }
+
public final InstanceDefinition getDefinition()
{
return getOwner();
@@ -146,7 +142,7 @@
public final InstanceContainer getContainer()
{
- return getContainerContext().getContainer();
+ return ((JBossInstanceContainerContext)getContainerContext()).getContainer();
}
public final void setProperties(PropertyChange[] changes) throws
PortletInvokerException
@@ -178,11 +174,7 @@
}
// Update the state
- setPortletContext(portletContext);
- setMutable(true);
-
- //
- getContainerContext().updateInstance(this);
+ getContainerContext().updateInstance(this, portletContext, true);
}
//
@@ -195,10 +187,9 @@
{
getLogger().debug("Received updated portlet context " + portletContext
+ " for instance " + /*instanceId +*/ " after setting properties");
}
- setPortletContext(portletContext);
- //
- getContainerContext().updateInstance(this);
+ // Update state
+ getContainerContext().updateInstance(this, portletContext);
}
public final PropertyMap getProperties() throws PortletInvokerException
@@ -218,7 +209,6 @@
public final PortletInvocationResponse invoke(PortletInvocation invocation) throws
PortletInvokerException
{
boolean debug = getLogger().isDebugEnabled();
- InstanceContainerImpl container = getContainerContext().getContainer();
//
AbstractInstance instance = this;
@@ -237,6 +227,7 @@
invocation.setInstanceContext(instanceContext);
// Perform invocation
+ InstanceContainerImpl container = (InstanceContainerImpl)getContainer();
PortletInvocationResponse response = container.invoke(invocation);
// Create user instance if a clone operation occured
Modified:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstanceCustomization.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstanceCustomization.java 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstanceCustomization.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -44,12 +44,12 @@
return isPersistent() ? AccessMode.READ_WRITE : AccessMode.CLONE_BEFORE_WRITE;
}
- protected boolean isMutable()
+ protected final boolean isMutable()
{
return false;
}
- protected void setMutable(boolean modifiable)
+ protected final void setMutable(boolean modifiable)
{
throw new IllegalStateException("Modifiable field is immutable");
}
@@ -61,22 +61,16 @@
protected final void cloned(PortletContext portletContext)
{
- setPortletContext(portletContext);
-
- //
+ // Make it persistent
getContainerContext().createInstanceCustomizaton(this);
- }
- protected final void modified(PortletContext portletContext)
- {
- setPortletContext(portletContext);
-
- //
- getContainerContext().updateInstance(this);
+ // Update state
+ getContainerContext().updateInstance(this, portletContext);
}
protected final String getInstanceId()
{
return getOwner().getInstanceId();
}
+
}
Modified:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstanceDefinition.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstanceDefinition.java 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstanceDefinition.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -27,8 +27,8 @@
import org.jboss.portal.portlet.PortletContext;
import org.apache.log4j.Logger;
-import java.util.Map;
import java.util.Collection;
+import java.util.Set;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -40,9 +40,13 @@
/** The logger. */
protected static final Logger log =
Logger.getLogger(AbstractInstanceDefinition.class);
+ public abstract Collection getCustomizations();
+
+ public abstract Set getSecurityBindings();
+
// AbstractInstance implementation
**********************************************************************************
- protected AccessMode getAccessMode()
+ protected final AccessMode getAccessMode()
{
/*
if (Mode.EDIT_DEFAULTS.equals(ctxabc.getMode()))
@@ -56,27 +60,18 @@
return AccessMode.READ_ONLY;
}
- protected Logger getLogger()
+ protected final Logger getLogger()
{
return log;
}
- protected void cloned(PortletContext portletContext)
+ protected final void cloned(PortletContext portletContext)
{
throw new IllegalStateException();
}
- protected void modified(PortletContext portletContext)
+ protected final AbstractInstanceDefinition getOwner()
{
- getContainerContext().updateInstance(this);
- }
-
- protected AbstractInstanceDefinition getOwner()
- {
return this;
}
-
- protected abstract Collection getCustomizations();
-
- public abstract Map getSecurityBindings();
}
Deleted:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/ContainerContext.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/ContainerContext.java 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/ContainerContext.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -1,67 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * This is free software; you can redistribute it and/or modify it *
- * under the terms of the GNU Lesser General Public License as *
- * published by the Free Software Foundation; either version 2.1 of *
- * the License, or (at your option) any later version. *
- * *
- * This software is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with this software; if not, write to the Free *
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
- ******************************************************************************/
-package org.jboss.portal.core.impl.model.instance;
-
-import org.jboss.portal.core.model.instance.DuplicateInstanceException;
-import org.jboss.portal.portlet.PortletContext;
-
-import java.util.Collection;
-
-/**
- * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision$
- */
-public abstract class ContainerContext
-{
-
- /** . */
- private InstanceContainerImpl container;
-
- public InstanceContainerImpl getContainer()
- {
- return container;
- }
-
- public void setContainer(InstanceContainerImpl container)
- {
- this.container = container;
- }
-
- public abstract Collection getInstanceDefinitions();
-
- public abstract AbstractInstanceDefinition getInstanceDefinition(String id);
-
- public abstract AbstractInstanceDefinition newInstanceDefinition(String id, String
portletRef);
-
- public abstract void createInstanceDefinition(AbstractInstanceDefinition instanceDef)
throws DuplicateInstanceException;
-
- public abstract void destroyInstanceDefinition(AbstractInstanceDefinition
instanceDef);
-
- public abstract AbstractInstanceCustomization
getCustomization(AbstractInstanceDefinition instanceDef, String customizationId);
-
- public abstract AbstractInstanceCustomization
newInstanceCustomization(AbstractInstanceDefinition def, String id, PortletContext
portletContext);
-
- public abstract void createInstanceCustomizaton(AbstractInstanceCustomization
customization);
-
- public abstract void updateInstance(AbstractInstance instanceDef);
-}
Copied:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerContext.java
(from rev 7234,
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/ContainerContext.java)
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerContext.java
(rev 0)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerContext.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -0,0 +1,60 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.core.impl.model.instance;
+
+import org.jboss.portal.core.model.instance.DuplicateInstanceException;
+import org.jboss.portal.portlet.PortletContext;
+
+import java.util.Collection;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision$
+ */
+public interface InstanceContainerContext
+{
+
+ Collection getInstanceDefinitions();
+
+ AbstractInstanceDefinition getInstanceDefinition(String id);
+
+ AbstractInstanceDefinition newInstanceDefinition(String id, String portletRef);
+
+ void createInstanceDefinition(AbstractInstanceDefinition instanceDef) throws
DuplicateInstanceException;
+
+ void destroyInstanceDefinition(AbstractInstanceDefinition instanceDef);
+
+ AbstractInstanceCustomization getCustomization(AbstractInstanceDefinition instanceDef,
String customizationId);
+
+ AbstractInstanceCustomization newInstanceCustomization(AbstractInstanceDefinition def,
String id, PortletContext portletContext);
+
+ void createInstanceCustomizaton(AbstractInstanceCustomization customization);
+
+ void updateInstance(AbstractInstance instance, PortletContext portletContext, boolean
mutable);
+
+ void updateInstance(AbstractInstance instance, PortletContext portletContext);
+
+ void updateInstanceDefinition(AbstractInstanceDefinition def, Set securityBindings);
+
+}
Property changes on:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerContext.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerImpl.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerImpl.java 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceContainerImpl.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -32,7 +32,6 @@
import org.jboss.portal.core.model.instance.InstancePermission;
import org.jboss.portal.core.model.instance.NoSuchInstanceException;
import org.jboss.portal.core.model.instance.Instance;
-import org.jboss.portal.core.impl.model.instance.persistent.InstanceCustomizationImpl;
import org.jboss.portal.portlet.PortletContext;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.PortletInvoker;
@@ -55,7 +54,6 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -109,7 +107,7 @@
protected boolean cloneOnCreate;
/** The container context. */
- protected ContainerContext containerContext;
+ protected JBossInstanceContainerContext containerContext;
public InterceptorStackFactory getStackFactory()
{
@@ -205,12 +203,12 @@
this.cloneOnCreate = cloneOnCreate;
}
- public ContainerContext getContainerContext()
+ public JBossInstanceContainerContext getContainerContext()
{
return containerContext;
}
- public void setContainerContext(ContainerContext containerContext)
+ public void setContainerContext(JBossInstanceContainerContext containerContext)
{
this.containerContext = containerContext;
}
@@ -275,11 +273,7 @@
}
//
- instance.setPortletContext(portletContext);
- instance.setMutable(true);
-
- //
- containerContext.updateInstance(instance);
+ containerContext.updateInstance(instance, portletContext, true);
}
//
@@ -312,7 +306,7 @@
List toDestroy = new ArrayList(customizations.size());
for (Iterator i = customizations.iterator(); i.hasNext();)
{
- InstanceCustomizationImpl customization = (InstanceCustomizationImpl)i.next();
+ AbstractInstanceCustomization customization =
(AbstractInstanceCustomization)i.next();
// Get the user portlet context
PortletContext customizationPortletContext = customization.getPortletContext();
@@ -443,20 +437,16 @@
public Set getSecurityBindings(String uri)
{
- Set constraints = null;
AbstractInstanceDefinition instance = containerContext.getInstanceDefinition(uri);
+
+ //
if (instance != null)
{
- constraints = new HashSet();
- Collection onscs = instance.getSecurityBindings().values();
- for (Iterator i = onscs.iterator(); i.hasNext();)
- {
- InstanceSecurityBinding isc = (InstanceSecurityBinding)i.next();
- RoleSecurityBinding sc = new RoleSecurityBinding(isc.getActions(),
isc.getRole());
- constraints.add(sc);
- }
+ return instance.getSecurityBindings();
}
- return constraints;
+
+ //
+ return null;
}
public void setSecurityBindings(String uri, Set securityBindings) throws
SecurityConfigurationException
@@ -470,10 +460,7 @@
}
//
- instanceDef.getSecurityBindings().clear();
-
- //
- HashMap map = new HashMap();
+ Set tmp = new HashSet(securityBindings.size());
for (Iterator i = securityBindings.iterator(); i.hasNext();)
{
RoleSecurityBinding sc = (RoleSecurityBinding)i.next();
@@ -481,15 +468,12 @@
// Optimize
if (sc.getActions().size() > 0)
{
- InstanceSecurityBinding isc = new InstanceSecurityBinding(sc.getActions(),
sc.getRoleName());
- isc.setInstance(instanceDef);
- map.put(sc.getRoleName(), isc);
+ tmp.add(sc);
}
}
- instanceDef.getSecurityBindings().putAll(map);
//
- containerContext.updateInstance(instanceDef);
+ containerContext.updateInstanceDefinition(instanceDef, tmp);
}
public void removeSecurityBindings(String uri) throws SecurityConfigurationException
Deleted:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceSecurityBinding.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceSecurityBinding.java 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceSecurityBinding.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -1,256 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * This is free software; you can redistribute it and/or modify it *
- * under the terms of the GNU Lesser General Public License as *
- * published by the Free Software Foundation; either version 2.1 of *
- * the License, or (at your option) any later version. *
- * *
- * This software is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with this software; if not, write to the Free *
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
- ******************************************************************************/
-package org.jboss.portal.core.impl.model.instance;
-
-import org.jboss.portal.core.model.instance.Instance;
-
-import java.io.Serializable;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-/**
- * Security Constraint for an instance
- *
- * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision$
- */
-public final class InstanceSecurityBinding implements Serializable
-{
-
- /** The serialVersionUID */
- private static final long serialVersionUID = -2832148715381794267L;
-
- /** The primary key. */
- private Long key;
-
- /** The role of this contraint. */
- private String role;
-
- /** The set of actions of this constraint. */
- private Set actions;
-
- /** The cached toString value. */
- private transient String toString;
-
- /** The cached hash code. */
- private transient int hashCode;
-
- /** The cached actions as a string. */
- private transient String actionsAsString;
-
- private Instance instance;
-
- public InstanceSecurityBinding()
- {
- super();
- }
-
- /**
- * Create a new constraint with the provided actions for the specified role.
- *
- * @param actions a comma separated list of allowed actions
- * @param role the role name
- */
- public InstanceSecurityBinding(String actions, String role)
- {
- if (role == null)
- {
- throw new IllegalArgumentException("Role cannot be null");
- }
- if (actions == null)
- {
- throw new IllegalArgumentException("Actions cannot be null");
- }
-
- //
- StringTokenizer tokens = new StringTokenizer(actions, ",");
- Set set = new HashSet();
- while (tokens.hasMoreTokens())
- {
- set.add(tokens.nextToken().trim());
- }
-
- //
- this.role = role;
- this.actions = Collections.unmodifiableSet(set);
- }
-
- /**
- * Create a new constraint with the provided actions and the specified role.
- *
- * @param actions the set of actions
- * @param role the role name
- */
- public InstanceSecurityBinding(Set actions, String role)
- {
- if (role == null)
- {
- throw new IllegalArgumentException("Role cannot be null");
- }
- if (actions == null)
- {
- throw new IllegalArgumentException("Actions cannot be null");
- }
-
- //
- this.role = role;
- this.actions = Collections.unmodifiableSet(new HashSet(actions));
- }
-
- /** Copy constructor. */
- public InstanceSecurityBinding(InstanceSecurityBinding other)
- {
- if (other == null)
- {
- throw new IllegalArgumentException("The constraint to clone cannot be
null");
- }
-
- //
- this.role = other.role;
- this.actions = other.actions;
- }
-
- /**
- * Return a <code>java.util.Set<String></code> of allowed actions.
- *
- * @return the action set
- */
- public Set getActions()
- {
- return actions;
- }
-
- /**
- * Return the role of this constraint
- *
- * @return the role
- */
- public String getRole()
- {
- return role;
- }
-
- /**
- * Return a comma separated list of actions.
- *
- * @return the action string representation
- */
- public String getActionsAsString()
- {
- if (actionsAsString == null)
- {
- StringBuffer tmp = new StringBuffer();
- for (Iterator i = actions.iterator(); i.hasNext();)
- {
- String action = (String)i.next();
- if (i.hasNext())
- {
- tmp.append(", ");
- }
- tmp.append(action);
- }
- actionsAsString = tmp.toString();
- }
- return actionsAsString;
- }
-
- /** @see Object#toString */
- public String toString()
- {
- if (toString == null)
- {
- StringBuffer tmp = new StringBuffer("SecurityConstraint: actions [");
- for (Iterator i = actions.iterator(); i.hasNext();)
- {
- String action = (String)i.next();
- if (i.hasNext())
- {
- tmp.append(", ");
- }
- tmp.append(action);
- }
- tmp.append("] role [").append(role).append("]");
- toString = tmp.toString();
- }
- return toString;
- }
-
- public boolean equals(Object o)
- {
- if (this == o)
- {
- return true;
- }
- if (o instanceof InstanceSecurityBinding)
- {
- InstanceSecurityBinding that = (InstanceSecurityBinding)o;
- return actions.equals(that.actions) && role.equals(that.role);
- }
- return false;
- }
-
- public int hashCode()
- {
- if (hashCode == 0)
- {
- int hashCode;
- hashCode = actions.hashCode();
- hashCode = 29 * hashCode + role.hashCode();
- this.hashCode = hashCode;
- }
- return hashCode;
- }
-
- protected void setKey(Long k)
- {
- key = k;
- }
-
- protected Long getKey()
- {
- return key;
- }
-
- public void setActions(Set actions)
- {
- this.actions = actions;
- }
-
- public void setRole(String role)
- {
- this.role = role;
- }
-
- public Instance getInstance()
- {
- return instance;
- }
-
- public void setInstance(Instance instance)
- {
- this.instance = instance;
- }
-}
Added:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/JBossInstanceContainerContext.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/JBossInstanceContainerContext.java
(rev 0)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/JBossInstanceContainerContext.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -0,0 +1,36 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.core.impl.model.instance;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public interface JBossInstanceContainerContext extends InstanceContainerContext
+{
+
+ InstanceContainerImpl getContainer();
+
+ void setContainer(InstanceContainerImpl container);
+
+}
Deleted:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/InstanceCustomizationImpl.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/InstanceCustomizationImpl.java 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/InstanceCustomizationImpl.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -1,130 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * This is free software; you can redistribute it and/or modify it *
- * under the terms of the GNU Lesser General Public License as *
- * published by the Free Software Foundation; either version 2.1 of *
- * the License, or (at your option) any later version. *
- * *
- * This software is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with this software; if not, write to the Free *
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
- ******************************************************************************/
-package org.jboss.portal.core.impl.model.instance.persistent;
-
-import org.jboss.portal.core.impl.model.instance.AbstractInstanceCustomization;
-import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
-import org.jboss.portal.core.impl.model.instance.ContainerContext;
-import org.jboss.portal.portlet.PortletContext;
-
-/**
- * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision$
- */
-public class InstanceCustomizationImpl extends AbstractInstanceCustomization
-{
-
- // Persistent fields
-
- protected Long key;
- protected InstanceDefinitionImpl relatedDefinition;
- protected String customizationId;
-
- // Runtime fields
-
- protected InstanceDefinitionImpl owner;
- protected boolean persistent;
-
- /** Used to build transient instances. */
- public InstanceCustomizationImpl(InstanceDefinitionImpl owner, String customizationId,
PortletContext portletContext)
- {
- if (owner == null)
- {
- throw new IllegalArgumentException();
- }
- if (customizationId == null)
- {
- throw new IllegalArgumentException();
- }
- if (portletContext == null)
- {
- throw new IllegalArgumentException();
- }
-
- //
- this.owner = owner;
- this.persistent = false;
-
- //
- setCustomizationId(customizationId);
- setPortletContext(portletContext);
- }
-
- /** Used by hibernate. */
- public InstanceCustomizationImpl()
- {
- this.owner = null;
- this.persistent = true;
- }
-
- public Long getKey()
- {
- return key;
- }
-
- public void setKey(Long key)
- {
- this.key = key;
- }
-
- public String getId()
- {
- return customizationId;
- }
-
- public String getCustomizationId()
- {
- return customizationId;
- }
-
- public void setCustomizationId(String customizationId)
- {
- this.customizationId = customizationId;
- }
-
- public AbstractInstanceDefinition getOwner()
- {
- return owner;
- }
-
- public InstanceDefinitionImpl getRelatedDefinition()
- {
- return relatedDefinition;
- }
-
- public void setRelatedDefinition(InstanceDefinitionImpl relatedDefinition)
- {
- this.relatedDefinition = relatedDefinition;
- this.owner = relatedDefinition;
- }
-
- protected boolean isPersistent()
- {
- return persistent;
- }
-
- protected ContainerContext getContainerContext()
- {
- return owner.containerContext;
- }
-}
Deleted:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/InstanceDefinitionImpl.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/InstanceDefinitionImpl.java 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/InstanceDefinitionImpl.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -1,150 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * This is free software; you can redistribute it and/or modify it *
- * under the terms of the GNU Lesser General Public License as *
- * published by the Free Software Foundation; either version 2.1 of *
- * the License, or (at your option) any later version. *
- * *
- * This software is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with this software; if not, write to the Free *
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
- ******************************************************************************/
-package org.jboss.portal.core.impl.model.instance.persistent;
-
-import org.jboss.portal.core.impl.model.instance.ContainerContext;
-import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
-import org.jboss.portal.jems.hibernate.ContextObject;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Collection;
-
-/**
- * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision$
- */
-public class InstanceDefinitionImpl extends AbstractInstanceDefinition implements
ContextObject
-{
-
- // Persistent fields
-
- protected Long key;
- protected String instanceId;
- protected boolean mutable;
- protected Map securityBindings;
- protected Map customizationMap;
-
- // Runtime fields
-
- /** . */
- protected ContainerContext containerContext;
-
- public InstanceDefinitionImpl()
- {
- this.mutable = false;
- this.portletRef = null;
- this.instanceId = null;
- this.securityBindings = null;
- this.customizationMap = null;
- this.state = null;
- }
-
- public InstanceDefinitionImpl(String id, String portletRef)
- {
- this.mutable = false;
- this.portletRef = portletRef;
- this.instanceId = id;
- this.securityBindings = new HashMap();
- this.customizationMap = new HashMap();
- this.state = null;
- }
-
- // Hibernate
********************************************************************************************************
-
- public Long getKey()
- {
- return key;
- }
-
- public void setKey(Long key)
- {
- this.key = key;
- }
-
- public String getInstanceId()
- {
- return instanceId;
- }
-
- public void setInstanceId(String instanceId)
- {
- this.instanceId = instanceId;
- }
-
- public Map getSecurityBindings()
- {
- return securityBindings;
- }
-
- public void setSecurityBindings(Map securityBindings)
- {
- this.securityBindings = securityBindings;
- }
-
- public Map getCustomizationMap()
- {
- return customizationMap;
- }
-
- public void setCustomizationMap(Map customizationMap)
- {
- this.customizationMap = customizationMap;
- }
-
- public boolean isMutable()
- {
- return mutable;
- }
-
- public void setMutable(boolean mutable)
- {
- this.mutable = mutable;
- }
-
- // Instance implementation
******************************************************************************************
-
- public String getId()
- {
- return instanceId;
- }
-
- // AbstractInstanceDefinition implementation
************************************************************************
-
- protected Collection getCustomizations()
- {
- return customizationMap.values();
- }
-
- // ContextObject implementation
*************************************************************************************
-
- public void setContext(Object context)
- {
- this.containerContext = (ContainerContext)context;
- }
-
- protected ContainerContext getContainerContext()
- {
- return containerContext;
- }
-}
Copied:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContainerContext.java
(from rev 7234,
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContext.java)
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContainerContext.java
(rev 0)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContainerContext.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -0,0 +1,346 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.core.impl.model.instance.persistent;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.Session;
+import org.hibernate.Query;
+import org.hibernate.exception.ConstraintViolationException;
+import org.jboss.portal.jems.hibernate.ObjectContextualizer;
+import org.jboss.portal.core.model.instance.DuplicateInstanceException;
+import org.jboss.portal.core.impl.model.instance.AbstractInstance;
+import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
+import org.jboss.portal.core.impl.model.instance.AbstractInstanceCustomization;
+import org.jboss.portal.core.impl.model.instance.InstanceContainerImpl;
+import org.jboss.portal.core.impl.model.instance.JBossInstanceContainerContext;
+import org.jboss.portal.common.util.Tools;
+import org.jboss.portal.portlet.PortletContext;
+import org.jboss.portal.security.RoleSecurityBinding;
+import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
+
+import javax.naming.InitialContext;
+import java.util.Iterator;
+import java.util.Collection;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 1.1 $
+ */
+public class PersistentInstanceContainerContext implements JBossInstanceContainerContext
+{
+
+ /** . */
+ private static final String BY_INSTANCE_ID_QUERY = "from " +
Tools.getShortNameOf(PersistentInstanceDefinition.class) + " where
instanceId=:instanceId";
+
+ /** . */
+ private static final String FROM_INSTANCE_DEFINITION_IMPL = "from " +
Tools.getShortNameOf(PersistentInstanceDefinition.class);
+
+ /** . */
+ protected SessionFactory sessionFactory;
+
+ /** . */
+ protected String sessionFactoryJNDIName;
+
+ /** . */
+ protected ObjectContextualizer contextualizer;
+
+ /** . */
+ protected ConcurrentReaderHashMap cache;
+
+ /** . */
+ protected boolean cacheNaturalId;
+
+ /** . */
+ private InstanceContainerImpl container;
+
+ public PersistentInstanceContainerContext()
+ {
+ this.contextualizer = new ObjectContextualizer(this);
+ this.cache = new ConcurrentReaderHashMap();
+ }
+
+ public InstanceContainerImpl getContainer()
+ {
+ return container;
+ }
+
+ public void setContainer(InstanceContainerImpl container)
+ {
+ this.container = container;
+ }
+
+ public void flushNaturalIdCache()
+ {
+ cache.clear();
+ }
+
+ public int getNaturalIdCacheSize()
+ {
+ return cache.size();
+ }
+
+ public boolean getCacheNaturalId()
+ {
+ return cacheNaturalId;
+ }
+
+ public void setCacheNaturalId(boolean cacheNaturalId)
+ {
+ this.cacheNaturalId = cacheNaturalId;
+ }
+
+ public String getSessionFactoryJNDIName()
+ {
+ return sessionFactoryJNDIName;
+ }
+
+ public void setSessionFactoryJNDIName(String sessionFactoryJNDIName)
+ {
+ this.sessionFactoryJNDIName = sessionFactoryJNDIName;
+ }
+
+ public void start() throws Exception
+ {
+ sessionFactory = (SessionFactory)new
InitialContext().lookup(sessionFactoryJNDIName);
+
+ //
+ contextualizer.attach(sessionFactory);
+ }
+
+ public void stop() throws Exception
+ {
+ sessionFactory = null;
+ }
+
+ public Collection getInstanceDefinitions()
+ {
+ Session session = sessionFactory.getCurrentSession();
+
+ //
+ return session.createQuery(FROM_INSTANCE_DEFINITION_IMPL).list();
+ }
+
+ public AbstractInstanceCustomization
newInstanceCustomization(AbstractInstanceDefinition def, String id, PortletContext
portletContext)
+ {
+ return new PersistentInstanceCustomization((PersistentInstanceDefinition)def, id,
portletContext);
+ }
+
+ public AbstractInstanceDefinition newInstanceDefinition(String id, String portletRef)
+ {
+ return new PersistentInstanceDefinition(this, id, portletRef);
+ }
+
+ public AbstractInstanceDefinition getInstanceDefinition(String id)
+ {
+ // Get cached pk from natural id
+ Long pk = cacheNaturalId ? (Long)cache.get(id) : null;
+
+ //
+ PersistentInstanceDefinition instance;
+
+ //
+ Session session = sessionFactory.getCurrentSession();
+
+ //
+ if (pk == null)
+ {
+ // No pk
+ instance = lookupNoCache(session, id);
+ }
+ else
+ {
+ // Try lookup using the cached pk
+ instance =
(PersistentInstanceDefinition)session.get(PersistentInstanceDefinition.class, pk);
+
+ // The pk may be invalid if the instance has been recreted under the same path
with a different pk
+ if (instance == null)
+ {
+ // In that case we try a no cache
+ instance = lookupNoCache(session, id);
+ }
+ }
+
+ //
+ if (cacheNaturalId)
+ {
+ if (instance != null)
+ {
+ cache.put(id, instance.getKey());
+ }
+ else
+ {
+ cache.remove(id);
+ }
+ }
+
+ //
+ return instance;
+ }
+
+ public AbstractInstanceCustomization getCustomization(AbstractInstanceDefinition
instanceDef, String customizationId)
+ {
+ PersistentInstanceDefinition _instanceDef =
(PersistentInstanceDefinition)instanceDef;
+ return
(PersistentInstanceCustomization)_instanceDef.relatedCustomizations.get(customizationId);
+ }
+
+ private PersistentInstanceDefinition lookupNoCache(Session session, String id)
+ {
+ Query q = session.createQuery(BY_INSTANCE_ID_QUERY);
+ q.setString("instanceId", id);
+ return (PersistentInstanceDefinition)q.uniqueResult();
+ }
+
+ public void createInstanceDefinition(AbstractInstanceDefinition instanceDef) throws
DuplicateInstanceException
+ {
+ String id = instanceDef.getId();
+
+ //
+ if (getInstanceDefinition(id) != null)
+ {
+ throw new DuplicateInstanceException("An instance with id " + id +
" already exist");
+ }
+
+ //
+ try
+ {
+ Session session = sessionFactory.getCurrentSession();
+ session.persist(instanceDef);
+ }
+ catch (ConstraintViolationException e)
+ {
+ // May raise a constraint violation exception if it is has been inserted between
the lookup
+ // and the insert and the isolation level is not serializable
+ throw new DuplicateInstanceException("An instance with id " + id +
" already exist");
+ }
+ }
+
+ public void createInstanceCustomizaton(AbstractInstanceCustomization customization)
+ {
+ createInstanceCustomizaton((PersistentInstanceCustomization)customization);
+ }
+
+ private void createInstanceCustomizaton(PersistentInstanceCustomization
customization)
+ {
+ Session session = sessionFactory.getCurrentSession();
+
+ // Persist in db
+ session.persist(customization);
+
+ // Get owner that will become the related definition
+ PersistentInstanceDefinition relatedDefinition = customization.owner;
+
+ // Create one to many assoication
+ relatedDefinition.relatedCustomizations.put(customization.customizationId,
customization);
+ customization.relatedDefinition = relatedDefinition;
+
+ // Update state
+ session.update(customization.relatedDefinition);
+
+ // Mark state as persistent
+ customization.persistent = true;
+ }
+
+ private void updateInstance(AbstractInstance instanceDef)
+ {
+ Session session = sessionFactory.getCurrentSession();
+ session.update(instanceDef);
+ }
+
+ public void updateInstance(AbstractInstance instance, PortletContext portletContext,
boolean mutable)
+ {
+ PersistentInstanceDefinition _instance = (PersistentInstanceDefinition)instance;
+
+ //
+ _instance.setPortletRef(portletContext.getId());
+ _instance.setState(portletContext.getState());
+ _instance.setMutable(mutable);
+
+ //
+ updateInstance(_instance);
+ }
+
+
+ public void updateInstance(AbstractInstance instance, PortletContext portletContext)
+ {
+ instance.setPortletRef(portletContext.getId());
+ instance.setState(portletContext.getState());
+
+
+ //
+ updateInstance(instance);
+ }
+
+ public void updateInstanceDefinition(AbstractInstanceDefinition def, Set
securityBindings)
+ {
+ PersistentInstanceDefinition _def = (PersistentInstanceDefinition)def;
+
+ //
+ for (Iterator i =
_def.getRelatedSecurityBindings().values().iterator();i.hasNext();)
+ {
+ PersistentRoleSecurityBinding isc = (PersistentRoleSecurityBinding)i.next();
+
+ // Break association
+ i.remove();
+ isc.setInstance(null);
+ }
+
+ for (Iterator i = securityBindings.iterator(); i.hasNext();)
+ {
+ RoleSecurityBinding sc = (RoleSecurityBinding)i.next();
+
+ //
+ PersistentRoleSecurityBinding isc = new
PersistentRoleSecurityBinding(sc.getActions(), sc.getRoleName());
+
+ // Create association
+ isc.setInstance(_def);
+ _def.getRelatedSecurityBindings().put(sc.getRoleName(), isc);
+ }
+ }
+
+ public void destroyInstanceDefinition(AbstractInstanceDefinition instanceDef)
+ {
+ destroyInstanceDefinition((PersistentInstanceDefinition)instanceDef);
+ }
+
+ private void destroyInstanceDefinition(PersistentInstanceDefinition instanceDef)
+ {
+ Session session = sessionFactory.getCurrentSession();
+
+ // Destroy the user instances
+ Collection customizations = instanceDef.getRelatedCustomizations().values();
+ for (Iterator i = customizations.iterator(); i.hasNext();)
+ {
+ PersistentInstanceCustomization userInstance =
(PersistentInstanceCustomization)i.next();
+ i.remove();
+ userInstance.relatedDefinition = null;
+ session.delete(userInstance);
+ }
+
+ // Delete instance
+ session.delete(instanceDef);
+
+ //
+ session.flush();
+ }
+}
Deleted:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContext.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContext.java 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceContext.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -1,274 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2006, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * This is free software; you can redistribute it and/or modify it *
- * under the terms of the GNU Lesser General Public License as *
- * published by the Free Software Foundation; either version 2.1 of *
- * the License, or (at your option) any later version. *
- * *
- * This software is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with this software; if not, write to the Free *
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
- ******************************************************************************/
-package org.jboss.portal.core.impl.model.instance.persistent;
-
-import org.hibernate.SessionFactory;
-import org.hibernate.Session;
-import org.hibernate.Query;
-import org.hibernate.exception.ConstraintViolationException;
-import org.jboss.portal.jems.hibernate.ObjectContextualizer;
-import org.jboss.portal.core.model.instance.DuplicateInstanceException;
-import org.jboss.portal.core.impl.model.instance.ContainerContext;
-import org.jboss.portal.core.impl.model.instance.AbstractInstance;
-import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
-import org.jboss.portal.core.impl.model.instance.AbstractInstanceCustomization;
-import org.jboss.portal.common.util.Tools;
-import org.jboss.portal.portlet.PortletContext;
-import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
-
-import javax.naming.InitialContext;
-import java.util.Iterator;
-import java.util.Collection;
-
-/**
- * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision: 1.1 $
- */
-public class PersistentInstanceContext extends ContainerContext
-{
-
- /** . */
- private static final String BY_INSTANCE_ID_QUERY = "from " +
Tools.getShortNameOf(InstanceDefinitionImpl.class) + " where
instanceId=:instanceId";
-
- /** . */
- protected SessionFactory sessionFactory;
-
- /** . */
- protected String sessionFactoryJNDIName;
-
- /** . */
- protected ObjectContextualizer contextualizer;
-
- /** . */
- protected ConcurrentReaderHashMap cache;
-
- /** . */
- protected boolean cacheNaturalId;
-
- public PersistentInstanceContext()
- {
- this.contextualizer = new ObjectContextualizer(this);
- this.cache = new ConcurrentReaderHashMap();
- }
-
- public void flushNaturalIdCache()
- {
- cache.clear();
- }
-
- public int getNaturalIdCacheSize()
- {
- return cache.size();
- }
-
- public boolean getCacheNaturalId()
- {
- return cacheNaturalId;
- }
-
- public void setCacheNaturalId(boolean cacheNaturalId)
- {
- this.cacheNaturalId = cacheNaturalId;
- }
-
- public String getSessionFactoryJNDIName()
- {
- return sessionFactoryJNDIName;
- }
-
- public void setSessionFactoryJNDIName(String sessionFactoryJNDIName)
- {
- this.sessionFactoryJNDIName = sessionFactoryJNDIName;
- }
-
- public void start() throws Exception
- {
- sessionFactory = (SessionFactory)new
InitialContext().lookup(sessionFactoryJNDIName);
-
- //
- contextualizer.attach(sessionFactory);
- }
-
- public void stop() throws Exception
- {
- sessionFactory = null;
- }
-
- public Collection getInstanceDefinitions()
- {
- Session session = sessionFactory.getCurrentSession();
- return session.createQuery("from InstanceDefinitionImpl").list();
- }
-
- public AbstractInstanceCustomization
newInstanceCustomization(AbstractInstanceDefinition def, String id, PortletContext
portletContext)
- {
- return new InstanceCustomizationImpl((InstanceDefinitionImpl)def, id,
portletContext);
- }
-
- public AbstractInstanceDefinition newInstanceDefinition(String id, String portletRef)
- {
- return new InstanceDefinitionImpl(id, portletRef);
- }
-
- public AbstractInstanceDefinition getInstanceDefinition(String id)
- {
- // Get cached pk from natural id
- Long pk = cacheNaturalId ? (Long)cache.get(id) : null;
-
- //
- InstanceDefinitionImpl instance;
-
- //
- Session session = sessionFactory.getCurrentSession();
-
- //
- if (pk == null)
- {
- // No pk
- instance = lookupNoCache(session, id);
- }
- else
- {
- // Try lookup using the cached pk
- instance = (InstanceDefinitionImpl)session.get(InstanceDefinitionImpl.class,
pk);
-
- // The pk may be invalid if the instance has been recreted under the same path
with a different pk
- if (instance == null)
- {
- // In that case we try a no cache
- instance = lookupNoCache(session, id);
- }
- }
-
- //
- if (cacheNaturalId)
- {
- if (instance != null)
- {
- cache.put(id, instance.getKey());
- }
- else
- {
- cache.remove(id);
- }
- }
-
- //
- return instance;
- }
-
- public AbstractInstanceCustomization getCustomization(AbstractInstanceDefinition
instanceDef, String customizationId)
- {
- InstanceDefinitionImpl _instanceDef = (InstanceDefinitionImpl)instanceDef;
- return
(InstanceCustomizationImpl)_instanceDef.customizationMap.get(customizationId);
- }
-
- private InstanceDefinitionImpl lookupNoCache(Session session, String id)
- {
- Query q = session.createQuery(BY_INSTANCE_ID_QUERY);
- q.setString("instanceId", id);
- return (InstanceDefinitionImpl)q.uniqueResult();
- }
-
- public void createInstanceDefinition(AbstractInstanceDefinition instanceDef) throws
DuplicateInstanceException
- {
- String id = instanceDef.getId();
-
- //
- if (getInstanceDefinition(id) != null)
- {
- throw new DuplicateInstanceException("An instance with id " + id +
" already exist");
- }
-
- //
- try
- {
- Session session = sessionFactory.getCurrentSession();
- session.persist(instanceDef);
- }
- catch (ConstraintViolationException e)
- {
- // May raise a constraint violation exception if it is has been inserted between
the lookup
- // and the insert and the isolation level is not serializable
- throw new DuplicateInstanceException("An instance with id " + id +
" already exist");
- }
- }
-
- public void createInstanceCustomizaton(AbstractInstanceCustomization customization)
- {
- createInstanceCustomizaton((InstanceCustomizationImpl)customization);
- }
-
- private void createInstanceCustomizaton(InstanceCustomizationImpl customization)
- {
- Session session = sessionFactory.getCurrentSession();
-
- // Persist in db
- session.persist(customization);
-
- // Get owner that will become the related definition
- InstanceDefinitionImpl relatedDefinition = customization.owner;
-
- // Create one to many assoication
- relatedDefinition.customizationMap.put(customization.customizationId,
customization);
- customization.relatedDefinition = relatedDefinition;
-
- // Update state
- session.update(customization.relatedDefinition);
-
- // Mark state as persistent
- customization.persistent = true;
- }
-
- public void updateInstance(AbstractInstance instanceDef)
- {
- Session session = sessionFactory.getCurrentSession();
- session.update(instanceDef);
- }
-
- public void destroyInstanceDefinition(AbstractInstanceDefinition instanceDef)
- {
- destroyInstanceDefinition((InstanceDefinitionImpl)instanceDef);
- }
-
- private void destroyInstanceDefinition(InstanceDefinitionImpl instanceDef)
- {
- Session session = sessionFactory.getCurrentSession();
-
- // Destroy the user instances
- Collection customizations = instanceDef.getCustomizationMap().values();
- for (Iterator i = customizations.iterator(); i.hasNext();)
- {
- InstanceCustomizationImpl userInstance = (InstanceCustomizationImpl)i.next();
- i.remove();
- userInstance.relatedDefinition = null;
- session.delete(userInstance);
- }
-
- // Delete instance
- session.delete(instanceDef);
-
- //
- session.flush();
- }
-}
Copied:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceCustomization.java
(from rev 7234,
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/InstanceCustomizationImpl.java)
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceCustomization.java
(rev 0)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceCustomization.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -0,0 +1,131 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.core.impl.model.instance.persistent;
+
+import org.jboss.portal.core.impl.model.instance.AbstractInstanceCustomization;
+import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
+import org.jboss.portal.core.impl.model.instance.InstanceContainerContext;
+import org.jboss.portal.portlet.PortletContext;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision$
+ */
+class PersistentInstanceCustomization extends AbstractInstanceCustomization
+{
+
+ // Persistent fields
+
+ protected Long key;
+ protected PersistentInstanceDefinition relatedDefinition;
+ protected String customizationId;
+
+ // Runtime fields
+
+ protected PersistentInstanceDefinition owner;
+ protected boolean persistent;
+
+ /** Used to build transient instances. */
+ public PersistentInstanceCustomization(PersistentInstanceDefinition owner, String
customizationId, PortletContext portletContext)
+ {
+ if (owner == null)
+ {
+ throw new IllegalArgumentException();
+ }
+ if (customizationId == null)
+ {
+ throw new IllegalArgumentException();
+ }
+ if (portletContext == null)
+ {
+ throw new IllegalArgumentException();
+ }
+
+ //
+ this.owner = owner;
+ this.persistent = false;
+
+ //
+ this.customizationId = customizationId;
+ this.portletRef = portletContext.getId();
+ this.state = portletContext.getState();
+ }
+
+ /** Used by hibernate. */
+ public PersistentInstanceCustomization()
+ {
+ this.owner = null;
+ this.persistent = true;
+ }
+
+ public Long getKey()
+ {
+ return key;
+ }
+
+ public void setKey(Long key)
+ {
+ this.key = key;
+ }
+
+ public String getId()
+ {
+ return customizationId;
+ }
+
+ public String getCustomizationId()
+ {
+ return customizationId;
+ }
+
+ public void setCustomizationId(String customizationId)
+ {
+ this.customizationId = customizationId;
+ }
+
+ public AbstractInstanceDefinition getOwner()
+ {
+ return owner;
+ }
+
+ public PersistentInstanceDefinition getRelatedDefinition()
+ {
+ return relatedDefinition;
+ }
+
+ public void setRelatedDefinition(PersistentInstanceDefinition relatedDefinition)
+ {
+ this.relatedDefinition = relatedDefinition;
+ this.owner = relatedDefinition;
+ }
+
+ protected boolean isPersistent()
+ {
+ return persistent;
+ }
+
+ protected InstanceContainerContext getContainerContext()
+ {
+ return owner.containerContext;
+ }
+}
Property changes on:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceCustomization.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Copied:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceDefinition.java
(from rev 7234,
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/InstanceDefinitionImpl.java)
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceDefinition.java
(rev 0)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceDefinition.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -0,0 +1,167 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.core.impl.model.instance.persistent;
+
+import org.jboss.portal.core.impl.model.instance.InstanceContainerContext;
+import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
+import org.jboss.portal.jems.hibernate.ContextObject;
+import org.jboss.portal.security.RoleSecurityBinding;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Collection;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Iterator;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision$
+ */
+class PersistentInstanceDefinition extends AbstractInstanceDefinition implements
ContextObject
+{
+
+ // Persistent fields
+
+ protected Long key;
+ protected String instanceId;
+ protected boolean mutable;
+ protected Map relatedSecurityBindings;
+ protected Map relatedCustomizations;
+
+ // Runtime fields
+
+ /** . */
+ protected InstanceContainerContext containerContext;
+
+ public PersistentInstanceDefinition()
+ {
+ this.mutable = false;
+ this.portletRef = null;
+ this.instanceId = null;
+ this.relatedSecurityBindings = null;
+ this.relatedCustomizations = null;
+ this.state = null;
+ }
+
+ public PersistentInstanceDefinition(InstanceContainerContext containerContext, String
id, String portletRef)
+ {
+ this.containerContext = containerContext;
+ this.mutable = false;
+ this.portletRef = portletRef;
+ this.instanceId = id;
+ this.relatedSecurityBindings = new HashMap();
+ this.relatedCustomizations = new HashMap();
+ this.state = null;
+ }
+
+ // Hibernate
********************************************************************************************************
+
+ public Long getKey()
+ {
+ return key;
+ }
+
+ public void setKey(Long key)
+ {
+ this.key = key;
+ }
+
+ public String getInstanceId()
+ {
+ return instanceId;
+ }
+
+ public void setInstanceId(String instanceId)
+ {
+ this.instanceId = instanceId;
+ }
+
+ public Map getRelatedSecurityBindings()
+ {
+ return relatedSecurityBindings;
+ }
+
+ public void setRelatedSecurityBindings(Map relatedSecurityBindings)
+ {
+ this.relatedSecurityBindings = relatedSecurityBindings;
+ }
+
+ public Map getRelatedCustomizations()
+ {
+ return relatedCustomizations;
+ }
+
+ public void setRelatedCustomizations(Map relatedCustomizations)
+ {
+ this.relatedCustomizations = relatedCustomizations;
+ }
+
+ public boolean isMutable()
+ {
+ return mutable;
+ }
+
+ public void setMutable(boolean mutable)
+ {
+ this.mutable = mutable;
+ }
+
+ // Instance implementation
******************************************************************************************
+
+ public String getId()
+ {
+ return instanceId;
+ }
+
+ // AbstractInstanceDefinition implementation
************************************************************************
+
+ public Collection getCustomizations()
+ {
+ return relatedCustomizations.values();
+ }
+
+ public Set getSecurityBindings()
+ {
+ Set constraints = new HashSet();
+ for (Iterator i = relatedSecurityBindings.values().iterator(); i.hasNext();)
+ {
+ PersistentRoleSecurityBinding isc = (PersistentRoleSecurityBinding)i.next();
+ RoleSecurityBinding sc = new RoleSecurityBinding(isc.getActions(),
isc.getRole());
+ constraints.add(sc);
+ }
+ return constraints;
+ }
+
+ // ContextObject implementation
*************************************************************************************
+
+ public void setContext(Object context)
+ {
+ this.containerContext = (InstanceContainerContext)context;
+ }
+
+ protected InstanceContainerContext getContainerContext()
+ {
+ return containerContext;
+ }
+}
Property changes on:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentInstanceDefinition.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Copied:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentRoleSecurityBinding.java
(from rev 7233,
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceSecurityBinding.java)
===================================================================
---
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentRoleSecurityBinding.java
(rev 0)
+++
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentRoleSecurityBinding.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -0,0 +1,256 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2006, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.core.impl.model.instance.persistent;
+
+import org.jboss.portal.core.model.instance.Instance;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+/**
+ * Security Constraint for an instance
+ *
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision$
+ */
+final class PersistentRoleSecurityBinding implements Serializable
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -2832148715381794267L;
+
+ /** The primary key. */
+ private Long key;
+
+ /** The role of this contraint. */
+ private String role;
+
+ /** The set of actions of this constraint. */
+ private Set actions;
+
+ /** The cached toString value. */
+ private transient String toString;
+
+ /** The cached hash code. */
+ private transient int hashCode;
+
+ /** The cached actions as a string. */
+ private transient String actionsAsString;
+
+ private Instance instance;
+
+ public PersistentRoleSecurityBinding()
+ {
+ super();
+ }
+
+ /**
+ * Create a new constraint with the provided actions for the specified role.
+ *
+ * @param actions a comma separated list of allowed actions
+ * @param role the role name
+ */
+ public PersistentRoleSecurityBinding(String actions, String role)
+ {
+ if (role == null)
+ {
+ throw new IllegalArgumentException("Role cannot be null");
+ }
+ if (actions == null)
+ {
+ throw new IllegalArgumentException("Actions cannot be null");
+ }
+
+ //
+ StringTokenizer tokens = new StringTokenizer(actions, ",");
+ Set set = new HashSet();
+ while (tokens.hasMoreTokens())
+ {
+ set.add(tokens.nextToken().trim());
+ }
+
+ //
+ this.role = role;
+ this.actions = Collections.unmodifiableSet(set);
+ }
+
+ /**
+ * Create a new constraint with the provided actions and the specified role.
+ *
+ * @param actions the set of actions
+ * @param role the role name
+ */
+ public PersistentRoleSecurityBinding(Set actions, String role)
+ {
+ if (role == null)
+ {
+ throw new IllegalArgumentException("Role cannot be null");
+ }
+ if (actions == null)
+ {
+ throw new IllegalArgumentException("Actions cannot be null");
+ }
+
+ //
+ this.role = role;
+ this.actions = Collections.unmodifiableSet(new HashSet(actions));
+ }
+
+ /** Copy constructor. */
+ public PersistentRoleSecurityBinding(PersistentRoleSecurityBinding other)
+ {
+ if (other == null)
+ {
+ throw new IllegalArgumentException("The constraint to clone cannot be
null");
+ }
+
+ //
+ this.role = other.role;
+ this.actions = other.actions;
+ }
+
+ /**
+ * Return a <code>java.util.Set<String></code> of allowed actions.
+ *
+ * @return the action set
+ */
+ public Set getActions()
+ {
+ return actions;
+ }
+
+ /**
+ * Return the role of this constraint
+ *
+ * @return the role
+ */
+ public String getRole()
+ {
+ return role;
+ }
+
+ /**
+ * Return a comma separated list of actions.
+ *
+ * @return the action string representation
+ */
+ public String getActionsAsString()
+ {
+ if (actionsAsString == null)
+ {
+ StringBuffer tmp = new StringBuffer();
+ for (Iterator i = actions.iterator(); i.hasNext();)
+ {
+ String action = (String)i.next();
+ if (i.hasNext())
+ {
+ tmp.append(", ");
+ }
+ tmp.append(action);
+ }
+ actionsAsString = tmp.toString();
+ }
+ return actionsAsString;
+ }
+
+ /** @see Object#toString */
+ public String toString()
+ {
+ if (toString == null)
+ {
+ StringBuffer tmp = new StringBuffer("SecurityConstraint: actions [");
+ for (Iterator i = actions.iterator(); i.hasNext();)
+ {
+ String action = (String)i.next();
+ if (i.hasNext())
+ {
+ tmp.append(", ");
+ }
+ tmp.append(action);
+ }
+ tmp.append("] role [").append(role).append("]");
+ toString = tmp.toString();
+ }
+ return toString;
+ }
+
+ public boolean equals(Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+ if (o instanceof PersistentRoleSecurityBinding)
+ {
+ PersistentRoleSecurityBinding that = (PersistentRoleSecurityBinding)o;
+ return actions.equals(that.actions) && role.equals(that.role);
+ }
+ return false;
+ }
+
+ public int hashCode()
+ {
+ if (hashCode == 0)
+ {
+ int hashCode;
+ hashCode = actions.hashCode();
+ hashCode = 29 * hashCode + role.hashCode();
+ this.hashCode = hashCode;
+ }
+ return hashCode;
+ }
+
+ protected void setKey(Long k)
+ {
+ key = k;
+ }
+
+ protected Long getKey()
+ {
+ return key;
+ }
+
+ public void setActions(Set actions)
+ {
+ this.actions = actions;
+ }
+
+ public void setRole(String role)
+ {
+ this.role = role;
+ }
+
+ public Instance getInstance()
+ {
+ return instance;
+ }
+
+ public void setInstance(Instance instance)
+ {
+ this.instance = instance;
+ }
+}
Property changes on:
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/persistent/PersistentRoleSecurityBinding.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified:
trunk/core/src/main/org/jboss/portal/test/core/model/instance/InstanceContainerTestCase.java
===================================================================
---
trunk/core/src/main/org/jboss/portal/test/core/model/instance/InstanceContainerTestCase.java 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/main/org/jboss/portal/test/core/model/instance/InstanceContainerTestCase.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -46,9 +46,9 @@
import org.jboss.portal.common.test.junit.POJOJUnitTest;
import org.jboss.portal.common.test.junit.JUnitAdapter;
import org.jboss.portal.common.test.TestParametrization;
-import org.jboss.portal.core.impl.model.instance.persistent.InstanceCustomizationImpl;
-import org.jboss.portal.core.impl.model.instance.persistent.InstanceDefinitionImpl;
import org.jboss.portal.core.impl.model.instance.InstanceContainerImpl;
+import org.jboss.portal.core.impl.model.instance.AbstractInstanceDefinition;
+import org.jboss.portal.core.impl.model.instance.AbstractInstanceCustomization;
import
org.jboss.portal.core.impl.portlet.state.PersistentPortletStatePersistenceManager;
import org.jboss.portal.core.model.instance.Instance;
import org.jboss.portal.core.model.instance.InstanceDefinition;
@@ -365,7 +365,7 @@
// InstanceDefinitionImpl instanceImpl = (InstanceDefinitionImpl)instances.get(0);
// assertEquals(true, instanceImpl.isModifiable());
assertEquals(1, instanceContainer.getDefinitions().size());
- InstanceDefinitionImpl instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
+ AbstractInstanceDefinition instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
assertNotNull(instanceImpl);
assertEquals(true, instanceImpl.isModifiable());
TransactionAssert.commitTransaction();
@@ -389,12 +389,12 @@
//
TransactionAssert.beginTransaction();
// session = instanceHibernateSupport.getCurrentSession();
-// instances = session.createQuery("from InstanceDefinitionImpl").list();
+// instances = session.createQuery("from
AbstractInstanceDefinition").list();
// assertEquals(1, instances.size());
-// instanceImpl = (InstanceDefinitionImpl)instances.get(0);
+// instanceImpl = (AbstractInstanceDefinition)instances.get(0);
// assertEquals(true, instanceImpl.isModifiable());
assertEquals(1, instanceContainer.getDefinitions().size());
- instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
+ instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
assertNotNull(instanceImpl);
assertEquals(true, instanceImpl.isModifiable());
TransactionAssert.commitTransaction();
@@ -416,9 +416,10 @@
//
TransactionAssert.beginTransaction();
- Session session = instanceHibernateSupport.getCurrentSession();
- assertEquals(0, session.createQuery("from
InstanceDefinitionImpl").list().size());
- assertEquals(0, portletHibernateSupport.getCurrentSession().createQuery("from
PersistentPortletState").list().size());
+ assertEquals(0, instanceContainer.getDefinitions().size());
+// Session session = instanceHibernateSupport.getCurrentSession();
+// assertEquals(0, session.createQuery("from
AbstractInstanceDefinition").list().size());
+// assertEquals(0,
portletHibernateSupport.getCurrentSession().createQuery("from
PersistentPortletState").list().size());
TransactionAssert.commitTransaction();
}
@@ -533,9 +534,9 @@
// Check state
TransactionAssert.beginTransaction();
- InstanceDefinitionImpl instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
+ AbstractInstanceDefinition instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
assertNotNull(instanceImpl);
- Collection userInstances = instanceImpl.getCustomizationMap().values();
+ Collection userInstances = instanceImpl.getCustomizations();
assertNotNull(userInstances);
assertEquals(0, userInstances.size());
TransactionAssert.commitTransaction();
@@ -563,9 +564,9 @@
// Check state
TransactionAssert.beginTransaction();
- InstanceDefinitionImpl instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
+ AbstractInstanceDefinition instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
assertNotNull(instanceImpl);
- Collection userInstances = instanceImpl.getCustomizationMap().values();
+ Collection userInstances = instanceImpl.getCustomizations();
assertNotNull(userInstances);
assertEquals(0, userInstances.size());
TransactionAssert.commitTransaction();
@@ -586,12 +587,12 @@
// Check state
TransactionAssert.beginTransaction();
- InstanceDefinitionImpl instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
+ AbstractInstanceDefinition instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
assertNotNull(instanceImpl);
- Collection userInstances = instanceImpl.getCustomizationMap().values();
+ Collection userInstances = instanceImpl.getCustomizations();
assertNotNull(userInstances);
assertEquals(1, userInstances.size());
- InstanceCustomizationImpl userInstance =
(InstanceCustomizationImpl)userInstances.iterator().next();
+ AbstractInstanceCustomization userInstance =
(AbstractInstanceCustomization)userInstances.iterator().next();
PortletContext userPortletContext = userInstance.getPortletContext();
assertNotNull(userPortletContext);
PropertyMap userProps =
instanceContainer.getPortletInvoker().getProperties(userPortletContext);
@@ -621,12 +622,12 @@
// Check state
TransactionAssert.beginTransaction();
- InstanceDefinitionImpl instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
+ AbstractInstanceDefinition instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
assertNotNull(instanceImpl);
- Collection userInstances = instanceImpl.getCustomizationMap().values();
+ Collection userInstances = instanceImpl.getCustomizations();
assertNotNull(userInstances);
assertEquals(1, userInstances.size());
- InstanceCustomizationImpl userInstance =
(InstanceCustomizationImpl)userInstances.iterator().next();
+ AbstractInstanceCustomization userInstance =
(AbstractInstanceCustomization)userInstances.iterator().next();
System.out.println("userInstance.getPortletRef() = " +
userInstance.getPortletRef());
System.out.println("userInstance.getState() = " +
userInstance.getState());
PortletContext userPortletContext = userInstance.getPortletContext();
@@ -658,8 +659,8 @@
// Check state
TransactionAssert.beginTransaction();
- InstanceDefinitionImpl instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
- Collection userInstances = instanceImpl.getCustomizationMap().values();
+ AbstractInstanceDefinition instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
+ Collection userInstances = instanceImpl.getCustomizations();
assertNotNull(userInstances);
assertEquals(0, userInstances.size());
TransactionAssert.commitTransaction();
@@ -680,8 +681,8 @@
// Check state
TransactionAssert.beginTransaction();
- InstanceDefinitionImpl instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
- Collection userInstances = instanceImpl.getCustomizationMap().values();
+ AbstractInstanceDefinition instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
+ Collection userInstances = instanceImpl.getCustomizations();
assertNotNull(userInstances);
assertEquals(0, userInstances.size());
TransactionAssert.commitTransaction();
@@ -702,8 +703,8 @@
// Check state
TransactionAssert.beginTransaction();
- InstanceDefinitionImpl instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
- Collection userInstances = instanceImpl.getCustomizationMap().values();
+ AbstractInstanceDefinition instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
+ Collection userInstances = instanceImpl.getCustomizations();
assertNotNull(userInstances);
assertEquals(0, userInstances.size());
TransactionAssert.commitTransaction();
@@ -724,8 +725,8 @@
// Check state
TransactionAssert.beginTransaction();
- InstanceDefinitionImpl instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
- Collection userInstances = instanceImpl.getCustomizationMap().values();
+ AbstractInstanceDefinition instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
+ Collection userInstances = instanceImpl.getCustomizations();
assertNotNull(userInstances);
assertEquals(0, userInstances.size());
TransactionAssert.commitTransaction();
@@ -758,14 +759,14 @@
//
TransactionAssert.beginTransaction();
- InstanceDefinitionImpl instanceImpl =
(InstanceDefinitionImpl)instanceContainer.getDefinition("MyInstance");
+ AbstractInstanceDefinition instanceImpl =
(AbstractInstanceDefinition)instanceContainer.getDefinition("MyInstance");
PortletContext sharedPortletContext = instanceImpl.getPortletContext();
assertNotNull(producer.getPortlet(sharedPortletContext));
assertNotNull(instance);
- Collection children = instanceImpl.getCustomizationMap().values();
+ Collection children = instanceImpl.getCustomizations();
assertNotNull(children);
assertEquals(1, children.size());
- InstanceCustomizationImpl userInstance =
(InstanceCustomizationImpl)children.iterator().next();
+ AbstractInstanceCustomization userInstance =
(AbstractInstanceCustomization)children.iterator().next();
PortletContext userPortletContext = userInstance.getPortletContext();
assertNotNull(producer.getPortlet(userPortletContext));
assertNotNull(userInstance);
Modified: trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml
===================================================================
--- trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml 2007-05-10
15:04:30 UTC (rev 7238)
+++ trunk/core/src/resources/portal-core-sar/META-INF/jboss-service.xml 2007-05-10
15:28:52 UTC (rev 7239)
@@ -561,14 +561,28 @@
</mbean>
<!-- The different containers -->
+
<mbean
+
code="org.jboss.portal.core.impl.model.instance.persistent.PersistentInstanceContainerContext"
+ name="portal:service=InstanceContainerContext"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <xmbean/>
+ <depends>portal:service=Hibernate,type=Instance</depends>
+ <attribute
name="SessionFactoryJNDIName">java:/portal/InstanceSessionFactory</attribute>
+ <attribute name="CacheNaturalId">true</attribute>
+ </mbean>
+
+ <mbean
code="org.jboss.portal.core.impl.model.instance.InstanceContainerImpl"
name="portal:container=Instance"
xmbean-dd=""
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
- <depends>portal:service=Hibernate,type=Instance</depends>
<depends
+ optional-attribute-name="ContainerContext"
+
proxy-type="attribute">portal:service=InstanceContainerContext</depends>
+ <depends
optional-attribute-name="StackFactory"
proxy-type="attribute">portal:service=InterceptorStackFactory,type=Instance</depends>
<depends
@@ -580,8 +594,6 @@
<depends
optional-attribute-name="AuthorizationDomainRegistry"
proxy-type="attribute">portal:service=AuthorizationDomainRegistry</depends>
- <attribute
name="SessionFactoryJNDIName">java:/portal/InstanceSessionFactory</attribute>
- <attribute name="CacheNaturalId">true</attribute>
</mbean>
<mbean
code="org.jboss.portal.core.impl.model.portal.PersistentPortalObjectContainer"
Modified: trunk/core/src/resources/portal-core-sar/conf/hibernate/instance/domain.hbm.xml
===================================================================
---
trunk/core/src/resources/portal-core-sar/conf/hibernate/instance/domain.hbm.xml 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/resources/portal-core-sar/conf/hibernate/instance/domain.hbm.xml 2007-05-10
15:28:52 UTC (rev 7239)
@@ -27,7 +27,7 @@
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class
-
name="org.jboss.portal.core.impl.model.instance.persistent.InstanceDefinitionImpl"
+
name="org.jboss.portal.core.impl.model.instance.persistent.PersistentInstanceDefinition"
table="JBP_INSTANCE">
<cache usage="@portal.hibernate.cache.usage(a)"/>
<id
@@ -62,7 +62,7 @@
unique="false"
length="50000000"/>
<map
- name="securityBindings"
+ name="relatedSecurityBindings"
sort="unsorted"
inverse="true"
cascade="all-delete-orphan"
@@ -70,10 +70,10 @@
<cache usage="@portal.hibernate.cache.usage(a)"/>
<key column="INSTANCE_PK"/>
<index column="ROLE" type="string"/>
- <one-to-many
class="org.jboss.portal.core.impl.model.instance.InstanceSecurityBinding"/>
+ <one-to-many
class="org.jboss.portal.core.impl.model.instance.persistent.PersistentRoleSecurityBinding"/>
</map>
<map
- name="customizationMap"
+ name="relatedCustomizations"
inverse="true"
cascade="save-update"
fetch="select"
@@ -83,12 +83,12 @@
<map-key
type="string"
column="USER_ID"/>
- <one-to-many
class="org.jboss.portal.core.impl.model.instance.persistent.InstanceCustomizationImpl"/>
+ <one-to-many
class="org.jboss.portal.core.impl.model.instance.persistent.PersistentInstanceCustomization"/>
</map>
</class>
<class
-
name="org.jboss.portal.core.impl.model.instance.persistent.InstanceCustomizationImpl"
+
name="org.jboss.portal.core.impl.model.instance.persistent.PersistentInstanceCustomization"
table="JBP_INSTANCE_PER_USER">
<cache usage="@portal.hibernate.cache.usage(a)"/>
<id
@@ -102,7 +102,7 @@
<many-to-one
name="relatedDefinition"
column="INSTANCE_PK"
-
class="org.jboss.portal.core.impl.model.instance.persistent.InstanceDefinitionImpl"
+
class="org.jboss.portal.core.impl.model.instance.persistent.PersistentInstanceDefinition"
cascade="none"
fetch="select"/>
<property
@@ -128,7 +128,7 @@
</class>
<class
- name="org.jboss.portal.core.impl.model.instance.InstanceSecurityBinding"
+
name="org.jboss.portal.core.impl.model.instance.persistent.PersistentRoleSecurityBinding"
table="JBP_INSTANCE_SECURITY">
<cache usage="@portal.hibernate.cache.usage(a)"/>
<id
@@ -156,7 +156,7 @@
<many-to-one
name="instance"
column="INSTANCE_PK"
-
class="org.jboss.portal.core.impl.model.instance.persistent.InstanceDefinitionImpl"
+
class="org.jboss.portal.core.impl.model.instance.persistent.PersistentInstanceDefinition"
cascade="none"
fetch="select"/>
</class>
Modified:
trunk/core/src/resources/portal-core-test-jar/org/jboss/portal/test/core/model/instance/persistent-jboss-beans.xml
===================================================================
---
trunk/core/src/resources/portal-core-test-jar/org/jboss/portal/test/core/model/instance/persistent-jboss-beans.xml 2007-05-10
15:04:30 UTC (rev 7238)
+++
trunk/core/src/resources/portal-core-test-jar/org/jboss/portal/test/core/model/instance/persistent-jboss-beans.xml 2007-05-10
15:28:52 UTC (rev 7239)
@@ -102,7 +102,7 @@
<bean name="StackFactory"
class="org.jboss.portal.common.invocation.EmptyInterceptorStackFactory">
</bean>
- <bean name="ContainerContext"
class="org.jboss.portal.core.impl.model.instance.persistent.PersistentInstanceContext">
+ <bean name="ContainerContext"
class="org.jboss.portal.core.impl.model.instance.persistent.PersistentInstanceContainerContext">
<property
name="sessionFactoryJNDIName">java:/InstanceSessionFactory</property>
<property name="cacheNaturalId"><inject
bean="TestCaseConfig" property="cacheNaturalId"/></property>
</bean>
Modified: trunk/security/src/main/org/jboss/portal/security/RoleSecurityBinding.java
===================================================================
--- trunk/security/src/main/org/jboss/portal/security/RoleSecurityBinding.java 2007-05-10
15:04:30 UTC (rev 7238)
+++ trunk/security/src/main/org/jboss/portal/security/RoleSecurityBinding.java 2007-05-10
15:28:52 UTC (rev 7239)
@@ -173,7 +173,7 @@
{
if (toString == null)
{
- StringBuffer tmp = new StringBuffer("SecurityConstraint: actions [");
+ StringBuffer tmp = new StringBuffer("SecurityConstraint[actions=(");
for (Iterator i = actions.iterator();;)
{
String action = (String)i.next();
@@ -187,7 +187,7 @@
break;
}
}
- tmp.append("] role [").append(roleName).append("]");
+ tmp.append("),role=").append(roleName).append("]");
toString = tmp.toString();
}
return toString;