Commits

Justin Koke committed a73cc73

Commit to get tests passing and improve maven structure

The migration to maven was a mix of being incomplete and also pretty poor. This is now in a better state
with a more simplified structure and a better refined list of dependencies

I have also enabled the test module so we actually have tests running as part of the build. The EJB tests are currently
disabled due to the lack of need for EJB at the present time.

Comments (0)

Files changed (72)

 
 	<modelVersion>4.0.0</modelVersion>
 
-	<parent>
-		<groupId>com.opensymphony.propertyset</groupId>
-		<artifactId>parent</artifactId>
-		<version>1.5.0-SNAPSHOT</version>
-		<relativePath>../parent/pom.xml</relativePath>
-	</parent>
-	<groupId>com.opensymphony.propertyset</groupId>
+    <parent>
+        <groupId>com.opensymphony.propertyset</groupId>
+        <artifactId>parent</artifactId>
+        <version>1.6.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>com.opensymphony.propertyset</groupId>
 	<artifactId>api</artifactId>
 	<packaging>jar</packaging>
 
 	<name>PropertySet API</name>
-	<description></description>
 
 	<build>
 		<plugins>
 		<dependency>
 			<groupId>opensymphony</groupId>
 			<artifactId>oscore</artifactId>
-			<version>2.2.4</version>
 		</dependency>
 		<dependency>
 			<groupId>commons-lang</groupId>
 			<artifactId>commons-lang</artifactId>
-			<version>2.1</version>
 		</dependency>
 		<dependency>
 			<groupId>commons-logging</groupId>
 			<artifactId>commons-logging</artifactId>
-			<version>1.1.1</version>
 		</dependency>
 		<dependency>
 			<groupId>log4j</groupId>
 			<artifactId>log4j</artifactId>
-			<version>1.2.13</version>
 			<scope>runtime</scope>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>

api/src/test/java/com/opensymphony/module/propertyset/AbstractPropertySetTest.java

 package com.opensymphony.module.propertyset;
 
 import com.opensymphony.util.XMLUtils;
-
-import junit.framework.TestCase;
-
+import org.junit.BeforeClass;
+import org.junit.Test;
 import org.w3c.dom.Document;
 
+import javax.xml.parsers.ParserConfigurationException;
 import java.text.DateFormat;
-
+import java.util.Collection;
 import java.util.Date;
 import java.util.Properties;
 
-import javax.xml.parsers.ParserConfigurationException;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 
 /**
  * User: bbulger
  * Date: May 22, 2004
  */
-public abstract class AbstractPropertySetTest extends TestCase {
+public abstract class AbstractPropertySetTest
+{
     //~ Instance fields ////////////////////////////////////////////////////////
 
     protected PropertySet ps;
 
     //~ Methods ////////////////////////////////////////////////////////////////
 
-    public void testAbstractPropertySetTypeMethods() {
-        if (ps instanceof AbstractPropertySet) {
+    @Test
+    public void testAbstractPropertySetTypeMethods()
+    {
+        if (ps instanceof AbstractPropertySet)
+        {
             assertEquals("boolean", ((AbstractPropertySet) ps).type(PropertySet.BOOLEAN));
             assertEquals("data", ((AbstractPropertySet) ps).type(PropertySet.DATA));
             assertEquals("date", ((AbstractPropertySet) ps).type(PropertySet.DATE));
         }
     }
 
-    public void testExistsOnPropertyInPropertySet() {
+    @Test
+    public void testExistsOnPropertyInPropertySet()
+    {
         ps.setString("test1", "value1");
         assertTrue(ps.exists("test1"));
     }
 
-    public void testExistsOnPropertyNotInPropertySet() {
+    @Test
+    public void testExistsOnPropertyNotInPropertySet()
+    {
         assertFalse(ps.exists("test425"));
     }
 
-    public void testGetKeys() {
+    @Test
+    public void testGetKeys()
+    {
         ps.setString("test1", "value1");
         ps.setString("test2", "value2");
         ps.setString("test3", "value3");
         assertEquals(3, ps.getKeys().size());
     }
 
-    public void testGetKeysOfType() {
-        if (ps.supportsTypes()) {
+    @Test
+    public void testGetKeysOfType()
+    {
+        if (ps.supportsTypes())
+        {
             ps.setString("test1", "value1");
             ps.setString("test2", "value2");
             ps.setInt("testInt", 14);
         }
     }
 
-    public void testGetKeysWithPrefix() {
+    @Test
+    public void testGetKeysWithPrefix()
+    {
         ps.setString("test1", "value1");
         ps.setString("test2", "value2");
         ps.setString("username", "user1");
-        assertEquals(2, ps.getKeys("test").size());
-        assertEquals(1, ps.getKeys("user").size());
+        Collection test = ps.getKeys("test");
+        assertEquals(2, test.size());
+        Collection user = ps.getKeys("user");
+        assertEquals(1, user.size());
     }
 
-    public void testGetKeysWithPrefixOfType() {
-        if (ps.supportsTypes()) {
+    @Test
+    public void testGetKeysWithPrefixOfType()
+    {
+        if (ps.supportsTypes())
+        {
             ps.setString("test1", "value1");
             ps.setString("test2", "value2");
             ps.setString("username", "user1");
         }
     }
 
-    public void testGetStringNotInPropertySet() {
+    @Test
+    public void testGetStringNotInPropertySet()
+    {
         assertNull(ps.getString("test555"));
     }
 
-    public void testGetTypeForBoolean() {
-        if (ps.supportsType(PropertySet.BOOLEAN)) {
+    @Test
+    public void testGetTypeForBoolean()
+    {
+        if (ps.supportsType(PropertySet.BOOLEAN))
+        {
             ps.setBoolean("testBoolean", true);
             assertEquals(PropertySet.BOOLEAN, ps.getType("testBoolean"));
         }
     }
 
-    public void testGetTypeForData() {
-        if (ps.supportsType(PropertySet.DATA)) {
+    @Test
+    public void testGetTypeForData()
+    {
+        if (ps.supportsType(PropertySet.DATA))
+        {
             ps.setData("testData", "value2".getBytes());
             assertEquals(PropertySet.DATA, ps.getType("testData"));
         }
     }
 
-    public void testGetTypeForDate() {
-        if (ps.supportsType(PropertySet.DATE)) {
+    @Test
+    public void testGetTypeForDate()
+    {
+        if (ps.supportsType(PropertySet.DATE))
+        {
             ps.setDate("testDate", new Date());
             assertEquals(PropertySet.DATE, ps.getType("testDate"));
         }
     }
 
-    public void testGetTypeForDouble() {
-        if (ps.supportsType(PropertySet.DOUBLE)) {
+    @Test
+    public void testGetTypeForDouble()
+    {
+        if (ps.supportsType(PropertySet.DOUBLE))
+        {
             ps.setDouble("testDouble", 10.456D);
             assertEquals(PropertySet.DOUBLE, ps.getType("testDouble"));
         }
     }
 
-    public void testGetTypeForInt() {
-        if (ps.supportsType(PropertySet.INT)) {
+    @Test
+    public void testGetTypeForInt()
+    {
+        if (ps.supportsType(PropertySet.INT))
+        {
             ps.setInt("testInt", 7);
             assertEquals(PropertySet.INT, ps.getType("testInt"));
         }
     }
 
-    public void testGetTypeForLong() {
-        if (ps.supportsType(PropertySet.LONG)) {
+    @Test
+    public void testGetTypeForLong()
+    {
+        if (ps.supportsType(PropertySet.LONG))
+        {
             ps.setLong("testLong", 7L);
             assertEquals(PropertySet.LONG, ps.getType("testLong"));
         }
     }
 
-    public void testGetTypeForObject() {
-        if (ps.supportsType(PropertySet.OBJECT)) {
+    @Test
+    public void testGetTypeForObject()
+    {
+        if (ps.supportsType(PropertySet.OBJECT))
+        {
             ps.setObject("testObject", new StringBuffer());
             assertEquals(PropertySet.OBJECT, ps.getType("testObject"));
         }
     }
 
-    public void testGetTypeForProperties() {
-        if (ps.supportsType(PropertySet.PROPERTIES)) {
+    @Test
+    public void testGetTypeForProperties()
+    {
+        if (ps.supportsType(PropertySet.PROPERTIES))
+        {
             ps.setProperties("testProperties", new Properties());
             assertEquals(PropertySet.PROPERTIES, ps.getType("testProperties"));
         }
     }
 
-    public void testGetTypeForString() {
-        if (ps.supportsType(PropertySet.STRING)) {
+    @Test
+    public void testGetTypeForString()
+    {
+        if (ps.supportsType(PropertySet.STRING))
+        {
             ps.setString("testString", "value7");
             assertEquals(PropertySet.STRING, ps.getType("testString"));
         }
     }
 
-    public void testGetTypeForText() {
-        if (ps.supportsType(PropertySet.TEXT)) {
+    @Test
+    public void testGetTypeForText()
+    {
+        if (ps.supportsType(PropertySet.TEXT))
+        {
             ps.setText("testText", TEXT_VALUE);
             assertEquals(PropertySet.TEXT, ps.getType("testText"));
         }
     }
 
-    public void testGetTypeForXml() throws ParserConfigurationException {
-        if (ps.supportsType(PropertySet.XML)) {
+    @Test
+    public void testGetTypeForXml() throws ParserConfigurationException
+    {
+        if (ps.supportsType(PropertySet.XML))
+        {
             Document doc = XMLUtils.newDocument();
             doc.appendChild(doc.createElement("root"));
             ps.setXML("testXml", doc);
         }
     }
 
-    public void testRemoveAllKeys() {
+    @Test
+    public void testRemoveAllKeys()
+    {
         ps.setString("test1", "value1");
         assertEquals(1, ps.getKeys().size());
 
-        try {
+        try
+        {
             ps.remove();
             assertEquals(0, ps.getKeys().size());
-        } catch (PropertyException e) {
+        }
+        catch (PropertyException e)
+        {
             // this is ok too for read only PropertySets
         }
     }
 
-    public void testRemoveSingleKey() {
+    @Test
+    public void testRemoveSingleKey()
+    {
         ps.setString("test1", "value1");
         assertEquals(1, ps.getKeys().size());
 
-        try {
+        try
+        {
             ps.remove("test1");
             assertEquals(0, ps.getKeys().size());
-        } catch (PropertyException e) {
+        }
+        catch (PropertyException e)
+        {
             // this is ok too for read only PropertySets
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForBoolean() {
-        if (ps.supportsType(PropertySet.BOOLEAN)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForBoolean()
+    {
+        if (ps.supportsType(PropertySet.BOOLEAN))
+        {
             ps.setAsActualType("testBoolean", new Boolean(true));
             assertEquals(new Boolean(true), ps.getAsActualType("testBoolean"));
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForData() {
-        if (ps.supportsType(PropertySet.DATA)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForData()
+    {
+        if (ps.supportsType(PropertySet.DATA))
+        {
             ps.setAsActualType("testData", "value1".getBytes());
             assertEquals(new String("value1".getBytes()), new String((byte[]) ps.getAsActualType("testData")));
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForDate() {
-        if (ps.supportsType(PropertySet.DATE)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForDate()
+    {
+        if (ps.supportsType(PropertySet.DATE))
+        {
             DateFormat df = DateFormat.getInstance();
             Date now = new Date();
             ps.setAsActualType("testDate", now);
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForDouble() {
-        if (ps.supportsType(PropertySet.DOUBLE)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForDouble()
+    {
+        if (ps.supportsType(PropertySet.DOUBLE))
+        {
             ps.setAsActualType("testDouble", new Double(10.234));
             assertEquals(new Double(10.234), (Double) ps.getAsActualType("testDouble"));
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForInt() {
-        if (ps.supportsType(PropertySet.INT)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForInt()
+    {
+        if (ps.supportsType(PropertySet.INT))
+        {
             ps.setAsActualType("testInt", new Integer(7));
             assertEquals(new Integer(7), ps.getAsActualType("testInt"));
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForLong() {
-        if (ps.supportsType(PropertySet.LONG)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForLong()
+    {
+        if (ps.supportsType(PropertySet.LONG))
+        {
             ps.setAsActualType("testLong", new Long(70000));
             assertEquals(new Long(70000), ps.getAsActualType("testLong"));
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForObject() {
-        if (ps.supportsType(PropertySet.OBJECT)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForObject()
+    {
+        if (ps.supportsType(PropertySet.OBJECT))
+        {
             TestObject testObject = new TestObject(2);
             ps.setAsActualType("testObject", testObject);
             assertEquals(testObject, (TestObject) ps.getAsActualType("testObject"));
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForProperties() {
-        if (ps.supportsType(PropertySet.PROPERTIES)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForProperties()
+    {
+        if (ps.supportsType(PropertySet.PROPERTIES))
+        {
             Properties props = new Properties();
             props.setProperty("prop1", "value1");
             ps.setAsActualType("testProperties", props);
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForString() {
-        if (ps.supportsType(PropertySet.STRING)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForString()
+    {
+        if (ps.supportsType(PropertySet.STRING))
+        {
             ps.setAsActualType("testString", "value1");
             assertEquals("value1", ps.getAsActualType("testString"));
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForText() {
-        if (ps.supportsType(PropertySet.TEXT)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForText()
+    {
+        if (ps.supportsType(PropertySet.TEXT))
+        {
             ps.setAsActualType("testText", TEXT_VALUE);
             assertEquals(TEXT_VALUE, ps.getAsActualType("testText"));
         }
     }
 
-    public void testSetAsActualTypeGetAsActualTypeForXml() throws ParserConfigurationException {
-        if (ps.supportsType(PropertySet.XML)) {
+    @Test
+    public void testSetAsActualTypeGetAsActualTypeForXml() throws ParserConfigurationException
+    {
+        if (ps.supportsType(PropertySet.XML))
+        {
             Document doc = XMLUtils.newDocument();
             doc.appendChild(doc.createElement("root"));
             ps.setAsActualType("testXml", doc);
         }
     }
 
-    public void testSetBooleanGetBoolean() {
-        if (ps.supportsType(PropertySet.BOOLEAN)) {
+    @Test
+    public void testSetBooleanGetBoolean()
+    {
+        if (ps.supportsType(PropertySet.BOOLEAN))
+        {
             ps.setBoolean("testBoolean", true);
             assertTrue(ps.getBoolean("testBoolean"));
             ps.setBoolean("testBoolean", false);
         }
     }
 
-    public void testSetDataGetData() {
-        if (ps.supportsType(PropertySet.DATA)) {
+    @Test
+    public void testSetDataGetData()
+    {
+        if (ps.supportsType(PropertySet.DATA))
+        {
             ps.setData("testData", "value1".getBytes());
             assertEquals(new String("value1".getBytes()), new String(ps.getData("testData")));
             ps.setData("testData", "value2".getBytes());
         }
     }
 
-    public void testSetDateGetDate() {
-        if (ps.supportsType(PropertySet.DATE)) {
+    @Test
+    public void testSetDateGetDate()
+    {
+        if (ps.supportsType(PropertySet.DATE))
+        {
             DateFormat df = DateFormat.getInstance();
             Date now = new Date();
             ps.setDate("testDate", now);
         }
     }
 
-    public void testSetDoubleGetDouble() {
-        if (ps.supportsType(PropertySet.DOUBLE)) {
+    @Test
+    public void testSetDoubleGetDouble()
+    {
+        if (ps.supportsType(PropertySet.DOUBLE))
+        {
             ps.setDouble("testDouble", 1D);
             assertEquals(1D, ps.getDouble("testDouble"), 0);
             ps.setDouble("testDouble", 100000D);
         }
     }
 
-    public void testSetIntGetInt() {
-        if (ps.supportsType(PropertySet.INT)) {
+    @Test
+    public void testSetIntGetInt()
+    {
+        if (ps.supportsType(PropertySet.INT))
+        {
             ps.setInt("testInt", 7);
             assertEquals(7, ps.getInt("testInt"));
             ps.setInt("testInt", 11);
         }
     }
 
-    public void testSetLongGetLong() {
-        if (ps.supportsType(PropertySet.LONG)) {
+    @Test
+    public void testSetLongGetLong()
+    {
+        if (ps.supportsType(PropertySet.LONG))
+        {
             ps.setLong("testLong", 1L);
             assertEquals(1L, ps.getLong("testLong"));
             ps.setLong("testLong", 100000);
         }
     }
 
-    public void testSetObjectGetObject() {
-        if (ps.supportsType(PropertySet.OBJECT)) {
+    @Test
+    public void testSetObjectGetObject()
+    {
+        if (ps.supportsType(PropertySet.OBJECT))
+        {
             TestObject testObject = new TestObject(1);
             ps.setObject("testObject", testObject);
             assertEquals(testObject, ps.getObject("testObject"));
         }
     }
 
-    public void testSetPropertiesGetProperties() {
-        if (ps.supportsType(PropertySet.PROPERTIES)) {
+    @Test
+    public void testSetPropertiesGetProperties()
+    {
+        if (ps.supportsType(PropertySet.PROPERTIES))
+        {
             Properties props = new Properties();
             props.setProperty("prop1", "propValue1");
             ps.setProperties("testProperties", props);
         }
     }
 
-    public void testSetStringGetStringLengthGreaterThan255() {
-        try {
+    @Test
+    public void testSetStringGetStringLengthGreaterThan255()
+    {
+        try
+        {
             ps.setString("testString", TEXT_VALUE);
             fail("Should not be able to setString() with a String longer than 255 chars.");
-        } catch (IllegalPropertyException e) {
+        }
+        catch (IllegalPropertyException e)
+        {
             // expected
         }
     }
 
-    public void testSetStringGetStringLengthLessThan255() {
+    @Test
+    public void testSetStringGetStringLengthLessThan255()
+    {
         ps.setString("testString", "value1");
         assertTrue("value1".equals(ps.getString("testString")));
         ps.setString("testString", "value2");
         assertTrue("value2".equals(ps.getString("testString")));
     }
 
-    public void testSetTextGetText() {
-        if (ps.supportsType(PropertySet.TEXT)) {
+    @Test
+    public void testSetTextGetText()
+    {
+        if (ps.supportsType(PropertySet.TEXT))
+        {
             ps.setText("testText", TEXT_VALUE);
             assertEquals(TEXT_VALUE, ps.getText("testText"));
             ps.setText("testText", TEXT_VALUE + "A");
         }
     }
 
-    public void testSetXmlGetXml() throws ParserConfigurationException {
-        if (ps.supportsType(PropertySet.XML)) {
+    @Test
+    public void testSetXmlGetXml() throws ParserConfigurationException
+    {
+        if (ps.supportsType(PropertySet.XML))
+        {
             Document doc = XMLUtils.newDocument();
             doc.appendChild(doc.createElement("root"));
             ps.setXML("testXml", doc);
 	<modelVersion>4.0.0</modelVersion>
 
 	<parent>
-		<groupId>com.opensymphony.propertyset</groupId>
-		<artifactId>parent</artifactId>
-		<version>1.5.0-SNAPSHOT</version>
-		<relativePath>../parent/pom.xml</relativePath>
+        <groupId>com.opensymphony.propertyset</groupId>
+        <artifactId>parent</artifactId>
+        <version>1.6.0-SNAPSHOT</version>
 	</parent>
+
 	<groupId>com.opensymphony.propertyset</groupId>
 	<artifactId>core</artifactId>
 	<packaging>jar</packaging>
 
 	<name>PropertySet Core</name>
-	<description></description>
 
 	<build>
 		<plugins>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-source-plugin</artifactId>
 			</plugin>
-		</plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test-jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
 	</build>
 
 	<dependencies>
 			<scope>test</scope>
 			<classifier>tests</classifier>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>

core/src/test/java/com/opensymphony/module/propertyset/cached/CachingPropertySetTest.java

 public class CachingPropertySetTest extends SerializablePropertySetTest {
     //~ Methods ////////////////////////////////////////////////////////////////
 
-    protected void setUp() throws Exception {
+    public void setUp() throws Exception {
         PropertySet memoryPropertySet = new MemoryPropertySet();
         memoryPropertySet.init(null, null);
 

core/src/test/java/com/opensymphony/module/propertyset/memory/MemoryPropertySetTest.java

 package com.opensymphony.module.propertyset.memory;
 
 import com.opensymphony.module.propertyset.AbstractPropertySetTest;
+import org.junit.Before;
 
 
 /**
 public class MemoryPropertySetTest extends AbstractPropertySetTest {
     //~ Methods ////////////////////////////////////////////////////////////////
 
-    protected void setUp() throws Exception {
-        super.setUp();
+    @Before
+    public void setUp() throws Exception {
         ps = new MemoryPropertySet();
         ps.init(null, null);
     }

core/src/test/java/com/opensymphony/module/propertyset/memory/SerializablePropertySetTest.java

 package com.opensymphony.module.propertyset.memory;
 
 import com.opensymphony.module.propertyset.AbstractPropertySetTest;
+import org.junit.Before;
 
 
 /**
 public class SerializablePropertySetTest extends AbstractPropertySetTest {
     //~ Methods ////////////////////////////////////////////////////////////////
 
-    protected void setUp() throws Exception {
-        super.setUp();
+    @Before
+    public void setUp() throws Exception {
+
         ps = new SerializablePropertySet();
         ps.init(null, null);
     }

parent/pom.xml

-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-
-	<groupId>com.opensymphony.propertyset</groupId>
-	<artifactId>parent</artifactId>
-	<version>1.5.0-SNAPSHOT</version>
-	<packaging>pom</packaging>
-
-	<name>PropertySet Parent</name>
-	<description>
-		PropertySet is a persistence-agnostic module that can be used to fulfill storage requirements in applications
-		that can change constantly. An example of this might be a "User Preferences" storage device. It may be
-		impossible to know what the user can store at any given time in your application's lifecycle, so employing a
-		PropertySet can help. Backed by XML, EJB, Ofbiz, JDBC, Castor JDO, or any other persistence mechanism, you can
-		provide a complete typed key-value pair implementation.
-	</description>
-	<url>http://www.opensymphony.com/propertyset</url>
-	<inceptionYear>2000</inceptionYear>
-	<organization>
-		<name>OpenSymphony</name>
-		<url>http://www.opensymphony.com</url>
-	</organization>
-	<licenses>
-		<license>
-			<name>OpenSymphony Software License, Version 1.1</name>
-			<url>http://www/opensymphony.com/propertyset/license.action</url>
-		</license>
-	</licenses>
-
-	<developers>
-		<developer>
-			<name>Hani Suileman</name>
-			<email>fate@formicary.com</email>
-			<roles>
-				<role>Project Leader</role>
-			</roles>
-		</developer>
-		<developer>
-			<name>Patrick Lightbody</name>
-			<email>plightbo@gmail.com</email>
-			<roles>
-				<role>Developer</role>
-			</roles>
-		</developer>
-		<developer>
-			<id>skanjo</id>
-			<name>Samer Kanjo</name>
-			<email>samer@teamkanjo.com</email>
-			<timezone>-6</timezone>
-			<roles>
-				<role>Developer</role>
-			</roles>
-		</developer>
-	</developers>
-
-	<issueManagement>
-		<system>JIRA</system>
-		<url>http://jira.opensymphony.com</url>
-	</issueManagement>
-	<scm>
-		<connection>http://svn.opensymphony.com/svn/propertyset/trunk</connection>
-		<developerConnection>https://svn.opensymphony.com/svn/propertyset/trunk</developerConnection>
-		<url>http://svn.opensymphony.com/fisheye/browse/propertyset</url>
-	</scm>
-	<ciManagement>
-		<system>Bamboo</system>
-		<url>http://bamboo.opensymphony.com</url>
-	</ciManagement>
-
-	<prerequisites>
-		<maven>2.0.9</maven>
-	</prerequisites>
-
-	<build>
-		<pluginManagement>
-			<plugins>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-assembly-plugin</artifactId>
-					<version>2.2-beta-5</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-clean-plugin</artifactId>
-					<version>2.4</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-compiler-plugin</artifactId>
-					<version>2.1</version>
-					<configuration>
-						<source>${jdk.version}</source>
-						<target>${jdk.version}</target>
-					</configuration>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-dependency-plugin</artifactId>
-					<version>2.1</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-deploy-plugin</artifactId>
-					<version>2.5</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-install-plugin</artifactId>
-					<version>2.3</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-jar-plugin</artifactId>
-					<version>2.3</version>
-					<configuration>
-						<archive>
-							<manifest>
-								<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-							</manifest>
-							<manifestEntries>
-								<url>${pom.url}</url>
-							</manifestEntries>
-						</archive>
-					</configuration>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-javadoc-plugin</artifactId>
-					<version>2.6.1</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-release-plugin</artifactId>
-					<version>2.0</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-resources-plugin</artifactId>
-					<version>2.4.1</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-site-plugin</artifactId>
-					<version>2.1</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-source-plugin</artifactId>
-					<version>2.1.1</version>
-					<executions>
-						<execution>
-							<id>attach-sources</id>
-							<goals>
-								<goal>jar</goal>
-							</goals>
-						</execution>
-					</executions>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-surefire-plugin</artifactId>
-					<version>2.5</version>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-war-plugin</artifactId>
-					<version>2.1-beta-1</version>
-					<configuration>
-						<archive>
-							<manifest>
-								<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-							</manifest>
-							<manifestEntries>
-								<url>${pom.url}</url>
-							</manifestEntries>
-						</archive>
-					</configuration>
-				</plugin>
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-help-plugin</artifactId>
-					<version>2.1</version>
-				</plugin>
-			</plugins>
-		</pluginManagement>
-		<plugins>
-			<!--
-			<plugin>
-			<groupId>com.atlassian.maven.plugins</groupId>
-			<artifactId>maven-clover2-plugin</artifactId>
-			<configuration>
-			<licenseLocation>${basedir}/src/test/clover/clover.license</licenseLocation>
-			</configuration>
-			<executions>
-			<execution>
-			<configuration>
-			<targetPercentage>50%</targetPercentage>
-			</configuration>
-			<phase>verify</phase>
-			<goals>
-			<goal>instrument</goal>
-			<goal>check</goal>
-			</goals>
-			</execution>
-			</executions>
-			</plugin>
-			-->
-		</plugins>
-	</build>
-
-	<repositories>
-		<repository>
-			<id>maven-repository.dev.java.net</id>
-			<name>Java.net Maven 1 Repository</name>
-			<url>http://download.java.net/maven/1/</url>
-			<layout>legacy</layout>
-			<snapshots>
-				<enabled>false</enabled>
-			</snapshots>
-		</repository>
-		<repository>
-			<id>maven2-repository.dev.java.net</id>
-			<name>Java.net Maven 2 Repository</name>
-			<layout>default</layout>
-			<url>http://download.java.net/maven/2/</url>
-			<snapshots>
-				<enabled>false</enabled>
-			</snapshots>
-		</repository>
-	</repositories>
-
-	<dependencies>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>3.8.1</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>clover</groupId>
-			<artifactId>clover</artifactId>
-			<version>1.3.9</version>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
-
-	<properties>
-		<jdk.version>1.3</jdk.version>
-	</properties>
-
-</project>
 <project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-	
-	<groupId>com.opensymphony.propertyset</groupId>
-	<artifactId>builder</artifactId>
-	<version>1-SNAPSHOT</version>
-	<packaging>pom</packaging>
-
-	<name>PropertySet Builder</name>
-	<description>
-		PropertySet is a persistence-agnostic module that can be used to fulfill storage requirements in applications
-		that can change constantly. An example of this might be a "User Preferences" storage device. It may be
-		impossible to know what the user can store at any given time in your application's lifecycle, so employing a
-		PropertySet can help. Backed by XML, EJB, Ofbiz, JDBC, Castor JDO, or any other persistence mechanism, you can
-		provide a complete typed key-value pair implementation.
-	</description>
-	<url>http://www.opensymphony.com/propertyset</url>
-	<inceptionYear>2000</inceptionYear>
-	<organization>
-		<name>OpenSymphony</name>
-		<url>http://www.opensymphony.com</url>
-	</organization>
-	<licenses>
-			<license>
-				<name>OpenSymphony Software License, Version 1.1</name>
-				<url>http://www/opensymphony.com/propertyset/license.action</url>
-			</license>
-	</licenses>
-	
-	<modules>
-		<module>api</module>
-		<module>core</module>
-		<module>parent</module>
-		<module>providers</module>
-	</modules>
-	
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.opensymphony.propertyset</groupId>
+    <artifactId>parent</artifactId>
+    <version>1.6.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <name>PropertySet Parent</name>
+
+    <description>
+        PropertySet is a persistence-agnostic module that can be used to fulfill storage requirements in applications
+        that can change constantly. An example of this might be a "User Preferences" storage device. It may be
+        impossible to know what the user can store at any given time in your application's lifecycle, so employing a
+        PropertySet can help. Backed by XML, EJB, Ofbiz, JDBC, Castor JDO, or any other persistence mechanism, you can
+        provide a complete typed key-value pair implementation.
+    </description>
+
+    <url>http://www.opensymphony.com/propertyset</url>
+
+    <inceptionYear>2000</inceptionYear>
+
+    <organization>
+        <name>OpenSymphony</name>
+        <url>http://www.opensymphony.com</url>
+    </organization>
+
+    <licenses>
+        <license>
+            <name>OpenSymphony Software License, Version 1.1</name>
+            <url>http://www/opensymphony.com/propertyset/license.action</url>
+        </license>
+    </licenses>
+
+    <developers>
+        <developer>
+            <name>Hani Suileman</name>
+            <email>fate@formicary.com</email>
+            <roles>
+                <role>Project Leader</role>
+            </roles>
+        </developer>
+        <developer>
+            <name>Patrick Lightbody</name>
+            <email>plightbo@gmail.com</email>
+            <roles>
+                <role>Developer</role>
+            </roles>
+        </developer>
+        <developer>
+            <id>skanjo</id>
+            <name>Samer Kanjo</name>
+            <email>samer@teamkanjo.com</email>
+            <timezone>-6</timezone>
+            <roles>
+                <role>Developer</role>
+            </roles>
+        </developer>
+    </developers>
+
+    <issueManagement>
+        <system>JIRA</system>
+        <url>http://jira.opensymphony.com</url>
+    </issueManagement>
+
+    <scm>
+        <connection>scm:git@bitbucket.org:opensymphony/propertyset.git</connection>
+        <developerConnection>scm:git@bitbucket.org:opensymphony/propertyset.git</developerConnection>
+        <url>https://bitbucket.org/opensymphony/propertyset</url>
+    </scm>
+
+    <ciManagement>
+        <system>Bamboo</system>
+        <url>http://bamboo.opensymphony.com</url>
+    </ciManagement>
+
+    <modules>
+        <module>api</module>
+        <module>core</module>
+        <module>providers</module>
+        <module>test</module>
+    </modules>
+
+    <dependencyManagement>
+        <dependencies>
+            <!-- Module dependencies -->
+            <dependency>
+                <groupId>com.opensymphony.propertyset</groupId>
+                <artifactId>api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.opensymphony.propertyset</groupId>
+                <artifactId>core</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.opensymphony.propertyset.providers</groupId>
+                <artifactId>ejb2</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.opensymphony.propertyset.providers</groupId>
+                <artifactId>ejb3</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.opensymphony.propertyset.providers</groupId>
+                <artifactId>hibernate2</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.opensymphony.propertyset.providers</groupId>
+                <artifactId>hibernate3</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.opensymphony.propertyset.providers</groupId>
+                <artifactId>jdbc</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.opensymphony.propertyset.providers</groupId>
+                <artifactId>ofbiz2</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.opensymphony.propertyset.providers</groupId>
+                <artifactId>ojb</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+            <!-- Generic Dependencies -->
+            <dependency>
+                <groupId>opensymphony</groupId>
+                <artifactId>oscore</artifactId>
+                <version>2.2.7</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-lang</groupId>
+                <artifactId>commons-lang</artifactId>
+                <version>2.6</version>
+            </dependency>
+            <dependency>
+                <groupId>commons-logging</groupId>
+                <artifactId>commons-logging</artifactId>
+                <version>1.1.1</version>
+            </dependency>
+            <dependency>
+                <groupId>log4j</groupId>
+                <artifactId>log4j</artifactId>
+                <version>1.2.16</version>
+                <scope>runtime</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.ejb</groupId>
+                <artifactId>ejb</artifactId>
+                <version>2.0</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.ejb</groupId>
+                <artifactId>ejb-api</artifactId>
+                <version>3.0</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>javax.persistence</groupId>
+                <artifactId>persistence-api</artifactId>
+                <version>1.0</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-annotations</artifactId>
+                <version>3.3.1.GA</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>hibernate</groupId>
+                <artifactId>hibernate</artifactId>
+                <version>2.1.8</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-core</artifactId>
+                <version>3.3.2.GA</version>
+                <scope>provided</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.ofbiz</groupId>
+                <artifactId>ofbcore-jira-share</artifactId>
+                <version>2.1.8</version>
+            </dependency>
+            <dependency>
+                <groupId>org.ofbiz</groupId>
+                <artifactId>ofbcore-jira-entity</artifactId>
+                <version>2.1.7</version>
+            </dependency>
+            <dependency>
+                <groupId>ojb</groupId>
+                <artifactId>db-ojb</artifactId>
+                <version>1.0.4</version>
+                <!-- Only need the ojb lib, excluding anything not scoped as provided or optional. -->
+                <exclusions>
+                    <exclusion>
+                        <groupId>asm</groupId>
+                        <artifactId>asm</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>cglib</groupId>
+                        <artifactId>cglib</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>commons-beanutils</groupId>
+                        <artifactId>commons-beanutils</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>commons-collections</groupId>
+                        <artifactId>commons-collections</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>commons-dbcp</groupId>
+                        <artifactId>commons-dbcp</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>commons-lang</groupId>
+                        <artifactId>commons-lang</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>commons-logging</groupId>
+                        <artifactId>commons-logging</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>commons-transaction</groupId>
+                        <artifactId>commons-transaction</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>hsqldb</groupId>
+                        <artifactId>hsqldb</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>jdo</groupId>
+                        <artifactId>jdo</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>jdo</groupId>
+                        <artifactId>jdori</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>xalan</groupId>
+                        <artifactId>xalan</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>xerces</groupId>
+                        <artifactId>xercesImpl</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>xml-apis</groupId>
+                        <artifactId>xml-apis</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+
+            <!-- Test Dependencies -->
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>4.8.2</version>
+            </dependency>
+            <dependency>
+                <groupId>clover</groupId>
+                <artifactId>clover</artifactId>
+                <version>1.3.9</version>
+            </dependency>
+
+
+        </dependencies>
+    </dependencyManagement>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-assembly-plugin</artifactId>
+                    <version>2.2-beta-5</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>2.4</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>2.3</version>
+                    <configuration>
+                        <source>${jdk.version}</source>
+                        <target>${jdk.version}</target>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <version>2.1</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-deploy-plugin</artifactId>
+                    <version>2.5</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-install-plugin</artifactId>
+                    <version>2.3</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>2.3</version>
+                    <configuration>
+                        <archive>
+                            <manifest>
+                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                            </manifest>
+                            <manifestEntries>
+                                <url>${pom.url}</url>
+                            </manifestEntries>
+                        </archive>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-javadoc-plugin</artifactId>
+                    <version>2.8.1</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-release-plugin</artifactId>
+                    <version>2.1</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>2.4.3</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-site-plugin</artifactId>
+                    <version>2.1</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-source-plugin</artifactId>
+                    <version>2.1.2</version>
+                    <executions>
+                        <execution>
+                            <id>attach-sources</id>
+                            <goals>
+                                <goal>jar</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>2.9</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-war-plugin</artifactId>
+                    <version>2.1-beta-1</version>
+                    <configuration>
+                        <archive>
+                            <manifest>
+                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                            </manifest>
+                            <manifestEntries>
+                                <url>${pom.url}</url>
+                            </manifestEntries>
+                        </archive>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>maven-repository.dev.java.net</id>
+            <name>Java.net Maven 1 Repository</name>
+            <url>http://download.java.net/maven/1/</url>
+            <layout>legacy</layout>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+        <repository>
+            <id>maven2-repository.dev.java.net</id>
+            <name>Java.net Maven 2 Repository</name>
+            <layout>default</layout>
+            <url>http://download.java.net/maven/2/</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <jdk.version>1.5</jdk.version>
+    </properties>
+
 </project>

providers/ejb2/pom.xml

 	<modelVersion>4.0.0</modelVersion>
 
 	<parent>
-		<groupId>com.opensymphony.propertyset</groupId>
-		<artifactId>parent</artifactId>
-		<version>1.5.0-SNAPSHOT</version>
-		<relativePath>../../parent/pom.xml</relativePath>
+        <groupId>com.opensymphony.propertyset.providers</groupId>
+        <artifactId>providers</artifactId>
+        <version>1.6.0-SNAPSHOT</version>
 	</parent>
+
 	<groupId>com.opensymphony.propertyset.providers</groupId>
 	<artifactId>ejb2</artifactId>
+
 	<packaging>ejb</packaging>
 
 	<name>PropertySet Providers EJB 2</name>
-	<description></description>
 
 	<build>
 		<plugins>
 		<dependency>
 			<groupId>javax.ejb</groupId>
 			<artifactId>ejb</artifactId>
-			<version>2.0</version>
 			<scope>provided</scope>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>

providers/ejb3/pom.xml

 
 	<modelVersion>4.0.0</modelVersion>
 
-	<parent>
-		<groupId>com.opensymphony.propertyset</groupId>
-		<artifactId>parent</artifactId>
-		<version>1.5.0-SNAPSHOT</version>
-		<relativePath>../../parent/pom.xml</relativePath>
-	</parent>
-	<groupId>com.opensymphony.propertyset.providers</groupId>
+    <parent>
+        <groupId>com.opensymphony.propertyset.providers</groupId>
+        <artifactId>providers</artifactId>
+        <version>1.6.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>com.opensymphony.propertyset.providers</groupId>
 	<artifactId>ejb3</artifactId>
+
 	<packaging>ejb</packaging>
 
 	<name>PropertySet Providers EJB 3</name>
-	<description></description>
 
 	<build>
 		<plugins>
 		<dependency>
 			<groupId>javax.ejb</groupId>
 			<artifactId>ejb-api</artifactId>
-			<version>3.0</version>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
 			<groupId>javax.persistence</groupId>
 			<artifactId>persistence-api</artifactId>
-			<version>1.0</version>
 			<scope>provided</scope>
 		</dependency>
 		<dependency>
 			<groupId>org.hibernate</groupId>
 			<artifactId>hibernate-annotations</artifactId>
-			<version>3.3.1.GA</version>
 			<scope>provided</scope>
 		</dependency>
-	</dependencies>
-
-	<properties>
-		<jdk.version>1.5</jdk.version>
-	</properties>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>

providers/hibernate2/pom.xml

 
 	<modelVersion>4.0.0</modelVersion>
 
-	<parent>
-		<groupId>com.opensymphony.propertyset</groupId>
-		<artifactId>parent</artifactId>
-		<version>1.5.0-SNAPSHOT</version>
-		<relativePath>../../parent/pom.xml</relativePath>
-	</parent>
-	<groupId>com.opensymphony.propertyset.providers</groupId>
+    <parent>
+        <groupId>com.opensymphony.propertyset.providers</groupId>
+        <artifactId>providers</artifactId>
+        <version>1.6.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>com.opensymphony.propertyset.providers</groupId>
 	<artifactId>hibernate2</artifactId>
+
 	<packaging>jar</packaging>
 
 	<name>PropertySet Providers Hibernate 2</name>
 		<dependency>
 			<groupId>hibernate</groupId>
 			<artifactId>hibernate</artifactId>
-			<version>2.1.8</version>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>

providers/hibernate3/pom.xml

 <project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-		<groupId>com.opensymphony.propertyset</groupId>
-		<artifactId>parent</artifactId>
-		<version>1.5.0-SNAPSHOT</version>
-		<relativePath>../../parent/pom.xml</relativePath>
-	</parent>
-	<groupId>com.opensymphony.propertyset.providers</groupId>
-	<artifactId>hibernate3</artifactId>
-	<packaging>jar</packaging>
-
-	<name>PropertySet Providers Hibernate 3</name>
-	<description></description>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-source-plugin</artifactId>
-			</plugin>
-		</plugins>
-	</build>
-
-	<dependencies>
-		<dependency>
-			<groupId>com.opensymphony.propertyset</groupId>
-			<artifactId>api</artifactId>
-			<version>${project.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.hibernate</groupId>
-			<artifactId>hibernate-core</artifactId>
-			<version>3.3.2.GA</version>
-			<scope>provided</scope>
-		</dependency>
-	</dependencies>
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.opensymphony.propertyset.providers</groupId>
+        <artifactId>providers</artifactId>
+        <version>1.6.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>com.opensymphony.propertyset.providers</groupId>
+    <artifactId>hibernate3</artifactId>
+
+    <packaging>jar</packaging>
+
+    <name>PropertySet Providers Hibernate 3</name>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.opensymphony.propertyset</groupId>
+            <artifactId>api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>

providers/jdbc/pom.xml

 
 	<modelVersion>4.0.0</modelVersion>
 
-	<parent>
-		<groupId>com.opensymphony.propertyset</groupId>
-		<artifactId>parent</artifactId>
-		<version>1.5.0-SNAPSHOT</version>
-		<relativePath>../../parent/pom.xml</relativePath>
-	</parent>
-	<groupId>com.opensymphony.propertyset.providers</groupId>
+    <parent>
+        <groupId>com.opensymphony.propertyset.providers</groupId>
+        <artifactId>providers</artifactId>
+        <version>1.6.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>com.opensymphony.propertyset.providers</groupId>
 	<artifactId>jdbc</artifactId>
+    <version>1.6.0-SNAPSHOT</version>
+
 	<packaging>jar</packaging>
 
 	<name>PropertySet Providers JDBC</name>
-	<description></description>
 
 	<build>
 		<plugins>
 			<artifactId>api</artifactId>
 			<version>${project.version}</version>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>

providers/ofbiz2/pom.xml

 
 	<modelVersion>4.0.0</modelVersion>
 
-	<parent>
-		<groupId>com.opensymphony.propertyset</groupId>
-		<artifactId>parent</artifactId>
-		<version>1.5.0-SNAPSHOT</version>
-		<relativePath>../../parent/pom.xml</relativePath>
-	</parent>
-	<groupId>com.opensymphony.propertyset.providers</groupId>
+    <parent>
+        <groupId>com.opensymphony.propertyset.providers</groupId>
+        <artifactId>providers</artifactId>
+        <version>1.6.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>com.opensymphony.propertyset.providers</groupId>
 	<artifactId>ofbiz2</artifactId>
+
 	<packaging>jar</packaging>
 
 	<name>PropertySet Providers OFBiz 2</name>
-	<description></description>
 
 	<build>
 		<plugins>
 		<dependency>
 			<groupId>org.ofbiz</groupId>
 			<artifactId>ofbcore-jira-share</artifactId>
-			<version>2.1.8</version>
 		</dependency>
 		<dependency>
 			<groupId>org.ofbiz</groupId>
 			<artifactId>ofbcore-jira-entity</artifactId>
-			<version>2.1.7</version>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 
 </project>

providers/ojb/pom.xml

 	<parent>
 		<groupId>com.opensymphony.propertyset</groupId>
 		<artifactId>parent</artifactId>
-		<version>1.5.0-SNAPSHOT</version>
-		<relativePath>../../parent/pom.xml</relativePath>
+		<version>1.6.0-SNAPSHOT</version>
 	</parent>
+
 	<groupId>com.opensymphony.propertyset.providers</groupId>
 	<artifactId>ojb</artifactId>
 	<packaging>jar</packaging>
 
 	<name>PropertySet Providers OJB</name>
-	<description></description>
 
 	<build>
 		<plugins>
 		<dependency>
 			<groupId>ojb</groupId>
 			<artifactId>db-ojb</artifactId>
-			<version>1.0.4</version>
-			<!-- Only need the ojb lib, excluding anything not scoped as provided or optional. -->
-			<exclusions>
-				<exclusion>
-					<groupId>asm</groupId>
-					<artifactId>asm</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>cglib</groupId>
-					<artifactId>cglib</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>commons-beanutils</groupId>
-					<artifactId>commons-beanutils</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>commons-collections</groupId>
-					<artifactId>commons-collections</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>commons-dbcp</groupId>
-					<artifactId>commons-dbcp</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>commons-lang</groupId>
-					<artifactId>commons-lang</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>commons-logging</groupId>
-					<artifactId>commons-logging</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>commons-transaction</groupId>
-					<artifactId>commons-transaction</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>hsqldb</groupId>
-					<artifactId>hsqldb</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>jdo</groupId>
-					<artifactId>jdo</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>jdo</groupId>
-					<artifactId>jdori</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>xalan</groupId>
-					<artifactId>xalan</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>xerces</groupId>
-					<artifactId>xercesImpl</artifactId>