[jboss-svn-commits] JBoss Portal SVN: r5291 - in trunk: common/src/main/org/jboss/portal/common/junit/ant core core/src/main/org/jboss/portal/core/impl/model/instance core/src/main/org/jboss/portal/test/core/model/instance core/src/resources/portal-samples-war/WEB-INF tools/lib
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Sep 29 10:47:43 EDT 2006
Author: julien at jboss.com
Date: 2006-09-29 10:47:21 -0400 (Fri, 29 Sep 2006)
New Revision: 5291
Modified:
trunk/common/src/main/org/jboss/portal/common/junit/ant/ConfigurableJUnitTest.java
trunk/common/src/main/org/jboss/portal/common/junit/ant/TestParameter.java
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/InstanceImpl.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/PersistentInstanceContainer.java
trunk/core/src/main/org/jboss/portal/core/impl/model/instance/UserInstance.java
trunk/core/src/main/org/jboss/portal/test/core/model/instance/InstanceContainerTestCase.java
trunk/core/src/resources/portal-samples-war/WEB-INF/portlet-instances.xml
trunk/core/src/resources/portal-samples-war/WEB-INF/portlet.xml
trunk/tools/lib/explode.jar
Log:
better implementation of Instance properties
Modified: trunk/common/src/main/org/jboss/portal/common/junit/ant/ConfigurableJUnitTest.java
===================================================================
--- trunk/common/src/main/org/jboss/portal/common/junit/ant/ConfigurableJUnitTest.java 2006-09-29 03:49:00 UTC (rev 5290)
+++ trunk/common/src/main/org/jboss/portal/common/junit/ant/ConfigurableJUnitTest.java 2006-09-29 14:47:21 UTC (rev 5291)
@@ -31,6 +31,8 @@
import java.io.ObjectOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.File;
+import java.io.FileOutputStream;
/**
* @author <a href="mailto:julien at jboss.org">Julien Viet</a>
@@ -68,21 +70,12 @@
TestParameter parameter = (TestParameter)nestedParameters.get(i);
parameters.put(parameter.getName(), parameter.getValue());
}
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(baos);
+ File tmp = new File(System.getProperty("java.io.tmpdir"), "junit.parameters");
+ tmp.deleteOnExit();
+ FileOutputStream fos = new FileOutputStream(tmp);
+ ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(parameters);
oos.close();
- byte[] bytes = baos.toByteArray();
- StringBuffer hex = new StringBuffer(bytes.length * 2);
- for (int i = 0; i < bytes.length; i++)
- {
- hex.append(Character.forDigit((bytes[i] & 0XF0) >> 4, 16));
- hex.append(Character.forDigit((bytes[i] & 0X0F), 16));
- }
- Environment.Variable v = new Environment.Variable();
- v.setKey(PARAMETER_PROPERTY_NAME);
- v.setValue(hex.toString());
- task.addSysproperty(v);
return super.getName();
}
catch (IOException e)
Modified: trunk/common/src/main/org/jboss/portal/common/junit/ant/TestParameter.java
===================================================================
--- trunk/common/src/main/org/jboss/portal/common/junit/ant/TestParameter.java 2006-09-29 03:49:00 UTC (rev 5290)
+++ trunk/common/src/main/org/jboss/portal/common/junit/ant/TestParameter.java 2006-09-29 14:47:21 UTC (rev 5291)
@@ -22,8 +22,11 @@
package org.jboss.portal.common.junit.ant;
import java.util.Map;
+import java.util.Iterator;
import java.io.ObjectInputStream;
import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
/**
* @author <a href="mailto:julien at jboss.org">Julien Viet</a>
@@ -60,30 +63,13 @@
public static Map readExternalParameters() throws Exception
{
- String hex = System.getProperty(ConfigurableJUnitTest.PARAMETER_PROPERTY_NAME);
- if (hex != null)
+ File tmp = new File(System.getProperty("java.io.tmpdir"), "junit.parameters");
+ if (tmp.exists() && tmp.isFile())
{
- int index = 0;
- byte[] bytes = new byte[hex.length() / 2];
- for (int i = 0; i < bytes.length; i++)
- {
- char chigh = hex.charAt(index++);
- int high = Character.digit(chigh, 16);
- if (high == -1)
- {
- throw new IllegalArgumentException("Hex string contains a bad char : " + chigh);
- }
- char clow = hex.charAt(index++);
- int low = Character.digit(clow, 16);
- if (low == -1)
- {
- throw new IllegalArgumentException("Hex string contains a bad char : " + clow);
- }
- byte value = (byte)((high << 4) + low);
- bytes[i] = value;
- }
- ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
+ FileInputStream fis = new FileInputStream(tmp);
+ ObjectInputStream ois = new ObjectInputStream(fis);
Map parameters = (Map)ois.readObject();
+ ois.close();
return parameters;
}
else
Modified: trunk/core/build.xml
===================================================================
--- trunk/core/build.xml 2006-09-29 03:49:00 UTC (rev 5290)
+++ trunk/core/build.xml 2006-09-29 14:47:21 UTC (rev 5291)
@@ -532,10 +532,12 @@
<target name="test-blah" depends="init">
<execute-tests>
<x-sysproperty>
+
<!--
<jvmarg value="-Xdebug"/>
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"/>
-->
+
<sysproperty key="jboss.aop.path"
value="${build.resources}/jboss-portal.sar/portal-aop.xml${path.separator}${source.etc}/jboss-aop/base-aop.xml"/>
<sysproperty key="jboss.aop.class.path" value="${jbossas/core.libs.lib}/jboss-aspect-library.jar"/>
@@ -550,7 +552,7 @@
<parameter name="PersistLocally" value="false"/>
</zest>
<!--<test todir="${test.reports}" name="org.jboss.portal.test.core.state.ProducerTestCase"/>-->
- <test todir="${test.reports}" name="org.jboss.portal.test.core.deployment.JBossApplicationMetaDataFactoryTestCase"/>
+ <!--<test todir="${test.reports}" name="org.jboss.portal.test.core.deployment.JBossApplicationMetaDataFactoryTestCase"/>-->
</x-test>
<x-classpath>
<pathelement location="${build.lib}/portal-core-lib.jar"/>
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 2006-09-29 03:49:00 UTC (rev 5290)
+++ trunk/core/src/main/org/jboss/portal/core/impl/model/instance/AbstractInstance.java 2006-09-29 14:47:21 UTC (rev 5291)
@@ -22,13 +22,12 @@
package org.jboss.portal.core.impl.model.instance;
import org.jboss.portal.portlet.PortletContext;
-import org.jboss.portal.portlet.StatefulPortletContext;
/**
* @author <a href="mailto:julien at jboss.org">Julien Viet</a>
* @version $Revision: 1.1 $
*/
-public class AbstractInstance
+public abstract class AbstractInstance
{
/** . */
@@ -70,28 +69,8 @@
this.state = state;
}
- public PortletContext getPortletContext()
- {
- if (state != null)
- {
- return new StatefulPortletContext(portletRef, state);
- }
- else
- {
- return new PortletContext(portletRef);
- }
- }
+ public abstract PortletContext getPortletContext();
- void setPortletContext(PortletContext portletContext)
- {
- portletRef = portletContext.getId();
+ public abstract void setPortletContext(PortletContext portletContext);
- //
- if (portletContext instanceof StatefulPortletContext)
- {
- StatefulPortletContext statefulPortletContext = (StatefulPortletContext)portletContext;
- state = statefulPortletContext.getMarshalledState();
- }
- }
-
}
Modified: trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceImpl.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceImpl.java 2006-09-29 03:49:00 UTC (rev 5290)
+++ trunk/core/src/main/org/jboss/portal/core/impl/model/instance/InstanceImpl.java 2006-09-29 14:47:21 UTC (rev 5291)
@@ -30,6 +30,7 @@
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.PortletContext;
+import org.jboss.portal.portlet.StatefulPortletContext;
import org.jboss.portal.portlet.invocation.PortletInvocation;
import org.jboss.portal.portlet.spi.UserContext;
import org.jboss.portal.portlet.state.AccessMode;
@@ -42,6 +43,7 @@
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import java.util.Arrays;
/**
* @author <a href="mailto:julien at jboss.org">Julien Viet</a>
@@ -75,17 +77,15 @@
this.state = null;
}
- public InstanceImpl(ContainerContext ctx, String id, PortletContext portletContext)
+ public InstanceImpl(ContainerContext ctx, String id, String portletRef)
{
this.context = ctx;
this.modifiable = false;
+ this.portletRef = portletRef;
this.instanceId = id;
this.securityBindings = new HashMap();
this.userInstances = new HashSet();
this.state = null;
-
- //
- setPortletContext(portletContext);
}
// Hibernate ********************************************************************************************************
@@ -125,7 +125,6 @@
this.modifiable = modifiable;
}
-
// ContextObject implementation *************************************************************************************
public void setContext(Object context)
@@ -133,8 +132,32 @@
this.context = (ContainerContext)context;
}
- // Misc *************************************************************************************************************
+ // AbstractInstance implementation **********************************************************************************
+ public PortletContext getPortletContext()
+ {
+ if (state != null)
+ {
+ return new StatefulPortletContext(portletRef, state);
+ }
+ else
+ {
+ return new PortletContext(portletRef);
+ }
+ }
+
+ public void setPortletContext(PortletContext portletContext)
+ {
+ portletRef = portletContext.getId();
+
+ //
+ if (portletContext instanceof StatefulPortletContext)
+ {
+ StatefulPortletContext statefulPortletContext = (StatefulPortletContext)portletContext;
+ state = statefulPortletContext.getMarshalledState();
+ }
+ }
+
// Instance implementation ******************************************************************************************
public String getId()
@@ -161,39 +184,74 @@
public void setProperties(PropertyChange[] changes) throws PortletInvokerException
{
+ if (changes == null)
+ {
+ throw new IllegalArgumentException("No null changes accepted");
+ }
+ boolean debug = log.isDebugEnabled();
+
+
// Get the invoker
PersistentInstanceContainer container = (PersistentInstanceContainer)context.getContainer();
PortletInvoker portletInvoker = container.getPortletInvoker();
//
- if (!modifiable)
+ PortletContext portletContext = getPortletContext();
+
+ //
+ if (modifiable == false)
{
// Clone the portlet
- PortletContext clonedPortletContext = portletInvoker.createClone(getPortletContext());
+ if (debug)
+ {
+ log.debug("Need to clone non modifiable instance before setting properties " + instanceId + "/" + portletContext);
+ }
+ portletContext = portletInvoker.createClone(portletContext);
+ if (debug)
+ {
+ log.debug("Received updated portlet context " + portletContext + " for instance " + instanceId + " after explicit clone");
+ }
// Update the state
- setPortletContext(clonedPortletContext);
- modifiable = true;
+ setPortletContext(portletContext);
+ setModifiable(true);
+
+ //
Session session = container.getCurrentSession();
session.update(this);
}
//
- portletInvoker.setProperties(getPortletContext(), changes);
+ if (debug)
+ {
+ log.debug("Setting properties on " + instanceId + "/" + portletContext + " : " + Arrays.asList(changes));
+ }
+ portletContext = portletInvoker.setProperties(portletContext, changes);
+ if (debug)
+ {
+ log.debug("Received updated portlet context " + portletContext + " for instance " + instanceId + " after setting properties");
+ }
+ setPortletContext(portletContext);
+
+ //
+ Session session = container.getCurrentSession();
+ session.update(this);
}
public PropertyMap getProperties() throws PortletInvokerException
{
PersistentInstanceContainer container = (PersistentInstanceContainer)context.getContainer();
PortletInvoker invoker = container.getPortletInvoker();
- return invoker.getProperties(getPortletContext());
+ PortletContext portletContext = getPortletContext();
+ return invoker.getProperties(portletContext);
}
public PropertyMap getProperties(Set keys) throws PortletInvokerException
{
PersistentInstanceContainer container = (PersistentInstanceContainer)context.getContainer();
PortletInvoker invoker = container.getPortletInvoker();
- return invoker.getProperties(getPortletContext(), keys);
+ PortletContext portletContext = getPortletContext();
+ return invoker.getProperties(portletContext, keys);
}
public void invoke(PortletInvocation invocation) throws PortletInvokerException
Modified: trunk/core/src/main/org/jboss/portal/core/impl/model/instance/PersistentInstanceContainer.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/impl/model/instance/PersistentInstanceContainer.java 2006-09-29 03:49:00 UTC (rev 5290)
+++ trunk/core/src/main/org/jboss/portal/core/impl/model/instance/PersistentInstanceContainer.java 2006-09-29 14:47:21 UTC (rev 5291)
@@ -231,9 +231,13 @@
{
throw new IllegalArgumentException("id cannot be null");
}
+ boolean debug = log.isDebugEnabled();
//
- log.debug("Creating instance " + id + " of portlet " + portletId);
+ if (debug)
+ {
+ log.debug("Creating instance " + id + " of portlet " + portletId);
+ }
//
PortletContext portletContext = new PortletContext(portletId);
@@ -246,7 +250,7 @@
try
{
// Create the persistent instance which may raise a constraint violation exception if it already exist
- instance = new InstanceImpl(ctx, id, portletContext);
+ instance = new InstanceImpl(ctx, id, portletId);
Session session = getCurrentSession();
session.persist(instance);
}
@@ -259,9 +263,23 @@
if (clone)
{
// Clone the portlet state now and update the instance
- PortletContext clonedPortletContext = portletInvoker.createClone(portletContext);
- instance.setPortletContext(clonedPortletContext);
+ if (debug)
+ {
+ log.debug("Cloning instance " + instance.instanceId + "/" + portletContext);
+ }
+ portletContext = portletInvoker.createClone(portletContext);
+ if (debug)
+ {
+ log.debug("Instance " + instance.instanceId + " succesfully cloned " + portletContext);
+ }
+
+ //
+ instance.setPortletContext(portletContext);
instance.setModifiable(true);
+
+ //
+ Session session = getCurrentSession();
+ session.update(instance);
}
//
@@ -312,7 +330,7 @@
}
//
- if (instance.modifiable)
+ if (instance.isModifiable())
{
// Destroy the state only if it is not a producer offered portlet
PortletContext sharedPortletContext = instance.getPortletContext();
Modified: trunk/core/src/main/org/jboss/portal/core/impl/model/instance/UserInstance.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/impl/model/instance/UserInstance.java 2006-09-29 03:49:00 UTC (rev 5290)
+++ trunk/core/src/main/org/jboss/portal/core/impl/model/instance/UserInstance.java 2006-09-29 14:47:21 UTC (rev 5291)
@@ -83,4 +83,30 @@
{
this.userId = userId;
}
+
+ // AbstractInstance implementation **********************************************************************************
+
+ public PortletContext getPortletContext()
+ {
+ if (state != null)
+ {
+ return new StatefulPortletContext(portletRef, state);
+ }
+ else
+ {
+ return new PortletContext(portletRef);
+ }
+ }
+
+ public void setPortletContext(PortletContext portletContext)
+ {
+ portletRef = portletContext.getId();
+
+ //
+ if (portletContext instanceof StatefulPortletContext)
+ {
+ StatefulPortletContext statefulPortletContext = (StatefulPortletContext)portletContext;
+ state = statefulPortletContext.getMarshalledState();
+ }
+ }
}
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 2006-09-29 03:49:00 UTC (rev 5290)
+++ trunk/core/src/main/org/jboss/portal/test/core/model/instance/InstanceContainerTestCase.java 2006-09-29 14:47:21 UTC (rev 5291)
@@ -42,6 +42,7 @@
import org.jboss.portal.common.junit.metadata.TestCaseParameterMetaData;
import org.jboss.portal.test.framework.TestRuntimeContext;
import org.jboss.portal.common.value.StringValue;
+import org.jboss.portal.common.util.CollectionBuilder;
import org.apache.log4j.Appender;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.SimpleLayout;
@@ -86,7 +87,6 @@
TestCaseMetaData testCaseMD = new TestCaseMetaData();
testCaseMD.bindParameter(new TestCaseParameterMetaData("DataSourceConfig"), DataSourceSupport.Config.fromXML2(configsURL));
testCaseMD.bindExternalParameters();
-// testCaseMD.bindParameter(new TestCaseParameterMetaData("PersistLocally"), new TestCaseParameterIterableValue(Arrays.asList(new Object[]{Boolean.TRUE,Boolean.FALSE})));
TestSuite suite = TestCaseFactory.create(testCaseMD, InstanceContainerTestCase.class);
return suite;
}
@@ -130,6 +130,10 @@
public InstanceContainerTestCase(Map parametrization)
{
dataSourceConfig = (DataSourceSupport.Config)parametrization.get("DataSourceConfig");
+ System.out.println("parametrization = " + parametrization);
+ System.out.println("(String)parametrization.get(\"PersistLocally\") = " + (String)parametrization.get("PersistLocally"));
+ System.out.println("(String)parametrization.get(\"PersistLocally\") = " + (String)parametrization.get("PersistLocally"));
+ System.out.println("(String)parametrization.get(\"PersistLocally\") = " + (String)parametrization.get("PersistLocally"));
persistLocally = Boolean.valueOf((String)parametrization.get("PersistLocally")).booleanValue();
}
@@ -270,7 +274,7 @@
{
{
PreferencesInfoSupport prefs = info.getPreferencesSupport();
- prefs.addPreference("_abc", new StringValue("_def"));
+ prefs.addPreference("abc", new StringValue("def"));
}
});
@@ -289,11 +293,20 @@
//
TransactionAssert.beginTransaction();
- instance.setProperties(new PropertyChange[0]);
+ instance.setProperties(new PropertyChange[]{PropertyChange.newUpdate("abc", new StringValue("_def")), PropertyChange.newUpdate("ghi", new StringValue("_jkl"))});
TransactionAssert.commitTransaction();
//
TransactionAssert.beginTransaction();
+ PropertyMap props = instance.getProperties(new CollectionBuilder().add("abc").add("ghi").toHashSet());
+ PropertyMap expectedProps = new SimplePropertyMap();
+ expectedProps.setProperty("abc", new StringValue("_def"));
+ expectedProps.setProperty("ghi", new StringValue("_jkl"));
+ ValueMapAssert.assertEquals(expectedProps, props);
+ TransactionAssert.commitTransaction();
+
+ //
+ TransactionAssert.beginTransaction();
session = instanceHibernateSupport.getCurrentSession();
instances = session.createQuery("from InstanceImpl").list();
assertEquals(1, instances.size());
@@ -705,7 +718,7 @@
}
//
//// /**Tests the authorization of portal objects */
-//// public void _testInstanceAuthorization() throws Exception
+//// public void testInstanceAuthorization() throws Exception
//// {
//// container.start();
////
@@ -728,7 +741,7 @@
//// }
////
//// /**Tests the authorization of portal objects */
-//// public void _testInstanceAuthorizationForAdmin() throws Exception
+//// public void testInstanceAuthorizationForAdmin() throws Exception
//// {
//// container.start();
////
Modified: trunk/core/src/resources/portal-samples-war/WEB-INF/portlet-instances.xml
===================================================================
--- trunk/core/src/resources/portal-samples-war/WEB-INF/portlet-instances.xml 2006-09-29 03:49:00 UTC (rev 5290)
+++ trunk/core/src/resources/portal-samples-war/WEB-INF/portlet-instances.xml 2006-09-29 14:47:21 UTC (rev 5291)
@@ -50,6 +50,25 @@
<instance>
<instance-id>TestPortletInstance</instance-id>
<portlet-ref>TestPortlet</portlet-ref>
+ <portlet-preferences>
+ <preference>
+ <name>read-write foo</name>
+ <value>bar</value>
+ </preference>
+ <preference>
+ <name>read-only foo</name>
+ <value>bar</value>
+ </preference>
+ <preference>
+ <name>read-write foo[]</name>
+ <value>bar0</value>
+ <value>bar1</value>
+ </preference>
+ <preference>
+ <name>html chars</name>
+ <value><![CDATA[<&>"]]></value>
+ </preference>
+ </portlet-preferences>
</instance>
</deployment>
<deployment>
Modified: trunk/core/src/resources/portal-samples-war/WEB-INF/portlet.xml
===================================================================
--- trunk/core/src/resources/portal-samples-war/WEB-INF/portlet.xml 2006-09-29 03:49:00 UTC (rev 5290)
+++ trunk/core/src/resources/portal-samples-war/WEB-INF/portlet.xml 2006-09-29 14:47:21 UTC (rev 5291)
@@ -32,6 +32,7 @@
<portlet-info>
<title>Test portlet</title>
</portlet-info>
+<!--
<portlet-preferences>
<preference>
<name>read-write foo</name>
@@ -52,6 +53,7 @@
<value><![CDATA[<&>"]]></value>
</preference>
</portlet-preferences>
+-->
<security-role-ref>
<role-name>Admin</role-name>
</security-role-ref>
Modified: trunk/tools/lib/explode.jar
===================================================================
(Binary files differ)
More information about the jboss-svn-commits
mailing list