continuum-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From br...@apache.org
Subject svn commit: r480795 [1/3] - in /maven/continuum/trunk: ./ continuum-api/src/main/java/org/apache/maven/continuum/ continuum-api/src/main/java/org/apache/maven/continuum/store/ continuum-core/ continuum-data-management/ continuum-data-management/src/ co...
Date Thu, 30 Nov 2006 00:46:49 GMT
Author: brett
Date: Wed Nov 29 16:46:47 2006
New Revision: 480795

URL: http://svn.apache.org/viewvc?view=rev&rev=480795
Log:
add code to backup/restore the continuum database

Added:
    maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/ContinuumRuntimeException.java   (with props)
    maven/continuum/trunk/continuum-data-management/   (with props)
    maven/continuum/trunk/continuum-data-management/pom.xml   (with props)
    maven/continuum/trunk/continuum-data-management/src/
    maven/continuum/trunk/continuum-data-management/src/main/
    maven/continuum/trunk/continuum-data-management/src/main/java/
    maven/continuum/trunk/continuum-data-management/src/main/java/org/
    maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/
    maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/
    maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/
    maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/
    maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/DataManagementTool.java   (with props)
    maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/JdoDataManagementTool.java   (with props)
    maven/continuum/trunk/continuum-data-management/src/test/
    maven/continuum/trunk/continuum-data-management/src/test/java/
    maven/continuum/trunk/continuum-data-management/src/test/java/org/
    maven/continuum/trunk/continuum-data-management/src/test/java/org/apache/
    maven/continuum/trunk/continuum-data-management/src/test/java/org/apache/maven/
    maven/continuum/trunk/continuum-data-management/src/test/java/org/apache/maven/continuum/
    maven/continuum/trunk/continuum-data-management/src/test/java/org/apache/maven/continuum/management/
    maven/continuum/trunk/continuum-data-management/src/test/java/org/apache/maven/continuum/management/DataManagementToolTest.java   (with props)
    maven/continuum/trunk/continuum-data-management/src/test/resources/
    maven/continuum/trunk/continuum-data-management/src/test/resources/expected.xml   (with props)
    maven/continuum/trunk/continuum-data-management/src/test/resources/org/
    maven/continuum/trunk/continuum-data-management/src/test/resources/org/apache/
    maven/continuum/trunk/continuum-data-management/src/test/resources/org/apache/maven/
    maven/continuum/trunk/continuum-data-management/src/test/resources/org/apache/maven/continuum/
    maven/continuum/trunk/continuum-data-management/src/test/resources/org/apache/maven/continuum/management/
    maven/continuum/trunk/continuum-data-management/src/test/resources/org/apache/maven/continuum/management/DataManagementToolTest.xml   (with props)
    maven/continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/AbstractContinuumStoreTestCase.java   (with props)
    maven/continuum/trunk/continuum-store/src/test/resources/org/
    maven/continuum/trunk/continuum-store/src/test/resources/org/apache/
    maven/continuum/trunk/continuum-store/src/test/resources/org/apache/maven/
    maven/continuum/trunk/continuum-store/src/test/resources/org/apache/maven/continuum/
    maven/continuum/trunk/continuum-store/src/test/resources/org/apache/maven/continuum/store/
    maven/continuum/trunk/continuum-store/src/test/resources/org/apache/maven/continuum/store/ContinuumStoreTest.xml   (with props)
Modified:
    maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
    maven/continuum/trunk/continuum-core/pom.xml
    maven/continuum/trunk/continuum-model/pom.xml
    maven/continuum/trunk/continuum-model/src/main/mdo/continuum.xml
    maven/continuum/trunk/continuum-model/src/main/mdo/general.xml
    maven/continuum/trunk/continuum-store/pom.xml
    maven/continuum/trunk/continuum-store/src/main/java/org/apache/maven/continuum/store/JdoContinuumStore.java
    maven/continuum/trunk/continuum-store/src/test/java/org/apache/maven/continuum/store/ContinuumStoreTest.java
    maven/continuum/trunk/continuum-webapp/src/main/webapp/images/   (props changed)
    maven/continuum/trunk/pom.xml

Added: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/ContinuumRuntimeException.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/ContinuumRuntimeException.java?view=auto&rev=480795
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/ContinuumRuntimeException.java (added)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/ContinuumRuntimeException.java Wed Nov 29 16:46:47 2006
@@ -0,0 +1,29 @@
+package org.apache.maven.continuum;
+
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Exception thrown as a result of a Continuum programming error so that the user need not deal with it.
+ */
+public class ContinuumRuntimeException
+    extends RuntimeException
+{
+    public ContinuumRuntimeException( String message, Exception cause )
+    {
+        super( message, cause );
+    }
+}

Propchange: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/ContinuumRuntimeException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java?view=diff&rev=480795&r1=480794&r2=480795
==============================================================================
--- maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java (original)
+++ maven/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/store/ContinuumStore.java Wed Nov 29 16:46:47 2006
@@ -252,4 +252,8 @@
         throws ContinuumStoreException;
 
     void closeStore();
+
+    Collection getAllProjectGroupsWithTheLot();
+
+    void eraseDatabase();
 }

Modified: maven/continuum/trunk/continuum-core/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-core/pom.xml?view=diff&rev=480795&r1=480794&r2=480795
==============================================================================
--- maven/continuum/trunk/continuum-core/pom.xml (original)
+++ maven/continuum/trunk/continuum-core/pom.xml Wed Nov 29 16:46:47 2006
@@ -181,7 +181,7 @@
   </dependencies>
   <build>
     <plugins>
-       <plugin>
+      <plugin>
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-maven-plugin</artifactId>
         <executions>

Propchange: maven/continuum/trunk/continuum-data-management/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Nov 29 16:46:47 2006
@@ -0,0 +1,2 @@
+*.iml
+target

Added: maven/continuum/trunk/continuum-data-management/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-data-management/pom.xml?view=auto&rev=480795
==============================================================================
--- maven/continuum/trunk/continuum-data-management/pom.xml (added)
+++ maven/continuum/trunk/continuum-data-management/pom.xml Wed Nov 29 16:46:47 2006
@@ -0,0 +1,78 @@
+<?xml version="1.0"?>
+<!--
+  ~ Copyright 2004-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<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">
+  <parent>
+    <artifactId>continuum-parent</artifactId>
+    <groupId>org.apache.maven.continuum</groupId>
+    <version>1.1-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>continuum-data-management</artifactId>
+  <name>Continuum Data Management API</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.continuum</groupId>
+      <artifactId>continuum-test</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.continuum</groupId>
+      <artifactId>continuum-store</artifactId>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.continuum</groupId>
+      <artifactId>continuum-model</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.continuum</groupId>
+      <artifactId>continuum-store</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>hsqldb</groupId>
+      <artifactId>hsqldb</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>woodstox</groupId>
+      <artifactId>wstx-asl</artifactId>
+      <version>3.1.0</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <!-- TODO: move to root and use in all modules -->
+      <plugin>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>generate</id>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: maven/continuum/trunk/continuum-data-management/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/DataManagementTool.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/DataManagementTool.java?view=auto&rev=480795
==============================================================================
--- maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/DataManagementTool.java (added)
+++ maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/DataManagementTool.java Wed Nov 29 16:46:47 2006
@@ -0,0 +1,58 @@
+package org.apache.maven.continuum.management;
+
+import org.apache.maven.continuum.store.ContinuumStoreException;
+
+import javax.xml.stream.XMLStreamException;
+import java.io.File;
+import java.io.IOException;
+
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * Continuum database management tool API.
+ */
+public interface DataManagementTool
+{
+    /** Plexus Role. */
+    String ROLE = DataManagementTool.class.getName();
+
+    /** The filename to use. */
+    String BUILDS_XML = "builds.xml";
+
+    /**
+     * Backup the build database.
+     * @param backupDirectory the directory to backup to
+     * @throws java.io.IOException if there is a problem writing to the backup file
+     * @throws ContinuumStoreException if there is a problem reading from the database
+     */
+    void backupBuildDatabase( File backupDirectory )
+        throws IOException, ContinuumStoreException;
+
+    /**
+     * Restore the build database.
+     * @param backupDirectory the directory where the backup to restore from resides
+     * @throws java.io.IOException if there is a problem reading the backup file
+     * @throws javax.xml.stream.XMLStreamException if there is a problem parsing the backup file
+     */
+    void restoreBuildDatabase( File backupDirectory )
+        throws IOException, XMLStreamException;
+
+    /**
+     * Smoke the build database.
+     */
+    void eraseBuildDatabase();
+}

Propchange: maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/DataManagementTool.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/JdoDataManagementTool.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/JdoDataManagementTool.java?view=auto&rev=480795
==============================================================================
--- maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/JdoDataManagementTool.java (added)
+++ maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/JdoDataManagementTool.java Wed Nov 29 16:46:47 2006
@@ -0,0 +1,200 @@
+package org.apache.maven.continuum.management;
+
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.continuum.ContinuumRuntimeException;
+import org.apache.maven.continuum.model.project.BuildDefinition;
+import org.apache.maven.continuum.model.project.ContinuumDatabase;
+import org.apache.maven.continuum.model.project.Profile;
+import org.apache.maven.continuum.model.project.Project;
+import org.apache.maven.continuum.model.project.ProjectGroup;
+import org.apache.maven.continuum.model.project.Schedule;
+import org.apache.maven.continuum.model.project.io.stax.ContinuumStaxReader;
+import org.apache.maven.continuum.model.project.io.stax.ContinuumStaxWriter;
+import org.apache.maven.continuum.model.system.Installation;
+import org.apache.maven.continuum.store.ContinuumStore;
+import org.apache.maven.continuum.store.ContinuumStoreException;
+import org.codehaus.plexus.jdo.ConfigurableJdoFactory;
+import org.codehaus.plexus.jdo.PlexusJdoUtils;
+import org.codehaus.plexus.util.IOUtil;
+
+import javax.jdo.JDOHelper;
+import javax.jdo.PersistenceManagerFactory;
+import javax.xml.stream.XMLStreamException;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * JDO implementation the database management tool API.
+ *
+ * @plexus.component role="org.apache.maven.continuum.management.DataManagementTool" role-hint="jdo"
+ */
+public class JdoDataManagementTool
+    implements DataManagementTool
+{
+    /**
+     * @plexus.requirement role-hint="jdo"
+     */
+    private ContinuumStore store;
+
+    /**
+     * @plexus.requirement role="org.codehaus.plexus.jdo.JdoFactory" role-hint="continuum"
+     */
+    private ConfigurableJdoFactory factory;
+
+    public void backupBuildDatabase( File backupDirectory )
+        throws IOException, ContinuumStoreException
+    {
+        ContinuumDatabase database = new ContinuumDatabase();
+        database.setSystemConfiguration( store.getSystemConfiguration() );
+
+        Collection projectGroups = store.getAllProjectGroupsWithTheLot();
+        database.setProjectGroups( new ArrayList( projectGroups ) );
+
+        database.setInstallations( store.getAllInstallations() );
+        database.setSchedules( store.getAllSchedulesByName() );
+        database.setProfiles( store.getAllProfilesByName() );
+
+        ContinuumStaxWriter writer = new ContinuumStaxWriter();
+        FileWriter fileWriter = new FileWriter( new File( backupDirectory, BUILDS_XML ) );
+        try
+        {
+            writer.write( fileWriter, database );
+        }
+        catch ( XMLStreamException e )
+        {
+            throw new ContinuumRuntimeException( "Modello failure: unable to write data to StAX writer", e );
+        }
+        finally
+        {
+            IOUtil.close( fileWriter );
+        }
+    }
+
+    public void eraseBuildDatabase()
+    {
+        store.eraseDatabase();
+    }
+
+    public void restoreBuildDatabase( File backupDirectory )
+        throws IOException, XMLStreamException
+    {
+        ContinuumStaxReader reader = new ContinuumStaxReader();
+
+        FileReader fileReader = new FileReader( new File( backupDirectory, BUILDS_XML ) );
+
+        ContinuumDatabase database;
+        try
+        {
+            database = reader.read( fileReader );
+        }
+        finally
+        {
+            IOUtil.close( fileReader );
+        }
+
+        // Take control of the JDO instead of using the store, and configure a new persistence factory
+        // that won't generate new object IDs.
+        Properties properties = new Properties();
+        properties.putAll( factory.getProperties() );
+        properties.setProperty( "org.jpox.metadata.jdoFileExtension", "jdorepl" );
+        PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory( properties );
+
+        PlexusJdoUtils.addObject( pmf.getPersistenceManager(), database.getSystemConfiguration() );
+
+        Map schedules = new HashMap();
+        for ( Iterator i = database.getSchedules().iterator(); i.hasNext(); )
+        {
+            Schedule schedule = (Schedule) i.next();
+
+            schedule = (Schedule) PlexusJdoUtils.addObject( pmf.getPersistenceManager(), schedule );
+            schedules.put( new Integer( schedule.getId() ), schedule );
+        }
+
+        Map installations = new HashMap();
+        for ( Iterator i = database.getInstallations().iterator(); i.hasNext(); )
+        {
+            Installation installation = (Installation) i.next();
+
+            installation = (Installation) PlexusJdoUtils.addObject( pmf.getPersistenceManager(), installation );
+            installations.put( installation.getName(), installation );
+        }
+
+        Map profiles = new HashMap();
+        for ( Iterator i = database.getProfiles().iterator(); i.hasNext(); )
+        {
+            Profile profile = (Profile) i.next();
+
+            // process installations
+            if ( profile.getJdk() != null )
+            {
+                profile.setJdk( (Installation) installations.get( profile.getJdk().getName() ) );
+            }
+            if ( profile.getBuilder() != null )
+            {
+                profile.setBuilder( (Installation) installations.get( profile.getBuilder().getName() ) );
+            }
+
+            profile = (Profile) PlexusJdoUtils.addObject( pmf.getPersistenceManager(), profile );
+            profiles.put( new Integer( profile.getId() ), profile );
+        }
+
+        for ( Iterator i = database.getProjectGroups().iterator(); i.hasNext(); )
+        {
+            ProjectGroup projectGroup = (ProjectGroup) i.next();
+
+            // first, we must map up any schedules, etc.
+            processBuildDefinitions( projectGroup.getBuildDefinitions(), schedules, profiles );
+
+            for ( Iterator j = projectGroup.getProjects().iterator(); j.hasNext(); )
+            {
+                Project project = (Project) j.next();
+
+                processBuildDefinitions( project.getBuildDefinitions(), schedules, profiles );
+            }
+
+            PlexusJdoUtils.addObject( pmf.getPersistenceManager(), projectGroup );
+        }
+    }
+
+    private static void processBuildDefinitions( List buildDefinitions, Map schedules, Map profiles )
+    {
+        for ( Iterator i = buildDefinitions.iterator(); i.hasNext(); )
+        {
+            BuildDefinition def = (BuildDefinition) i.next();
+
+            if ( def.getSchedule() != null )
+            {
+                def.setSchedule( (Schedule) schedules.get( new Integer( def.getSchedule().getId() ) ) );
+            }
+
+            if ( def.getProfile() != null )
+            {
+                def.setProfile( (Profile) profiles.get( new Integer( def.getProfile().getId() ) ) );
+            }
+        }
+    }
+}

Propchange: maven/continuum/trunk/continuum-data-management/src/main/java/org/apache/maven/continuum/management/JdoDataManagementTool.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/continuum/trunk/continuum-data-management/src/test/java/org/apache/maven/continuum/management/DataManagementToolTest.java
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-data-management/src/test/java/org/apache/maven/continuum/management/DataManagementToolTest.java?view=auto&rev=480795
==============================================================================
--- maven/continuum/trunk/continuum-data-management/src/test/java/org/apache/maven/continuum/management/DataManagementToolTest.java (added)
+++ maven/continuum/trunk/continuum-data-management/src/test/java/org/apache/maven/continuum/management/DataManagementToolTest.java Wed Nov 29 16:46:47 2006
@@ -0,0 +1,151 @@
+package org.apache.maven.continuum.management;
+
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.continuum.store.AbstractContinuumStoreTestCase;
+import org.apache.maven.continuum.store.ContinuumStoreException;
+import org.apache.maven.continuum.store.ContinuumStore;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.jdo.DefaultConfigurableJdoFactory;
+import org.codehaus.plexus.jdo.JdoFactory;
+
+import javax.xml.stream.XMLStreamException;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Test the database management tool.
+ */
+public class DataManagementToolTest
+    extends AbstractContinuumStoreTestCase
+{
+    private DataManagementTool dataManagementTool;
+
+    private File targetDirectory;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        dataManagementTool = (DataManagementTool) lookup( DataManagementTool.ROLE, "jdo" );
+
+        targetDirectory = createBackupDirectory();
+    }
+
+/*
+    protected ContinuumStore createStore()
+        throws Exception
+    {
+        DefaultConfigurableJdoFactory jdoFactory = (DefaultConfigurableJdoFactory) lookup( JdoFactory.ROLE );
+
+        File database = getTestFile( "target/database/" + getName());
+        FileUtils.deleteDirectory( database );
+
+        jdoFactory.setDriverName( "org.apache.derby.jdbc.EmbeddedDriver");
+        jdoFactory.setUrl( "jdbc:derby:"+database.getAbsolutePath() + ";create=true" );
+
+        return (ContinuumStore) lookup( ContinuumStore.ROLE );
+    }
+*/
+
+    public void testBackupBuilds()
+        throws IOException, ContinuumStoreException, XMLStreamException
+    {
+        createBuildDatabase();
+
+        // test sanity check
+        assertBuildDatabase();
+
+        dataManagementTool.backupBuildDatabase( targetDirectory );
+
+        File backupFile = new File( targetDirectory, DataManagementTool.BUILDS_XML );
+
+        assertTrue( "Check database exists", backupFile.exists() );
+
+        StringWriter sw = new StringWriter();
+
+        IOUtil.copy( getClass().getResourceAsStream( "/expected.xml" ), sw );
+
+        assertEquals( "Check database content", removeTimestampVariance( sw.toString() ),
+                      removeTimestampVariance( FileUtils.fileRead( backupFile ) ) );
+    }
+
+    public void testEraseBuilds()
+        throws Exception
+    {
+        createBuildDatabase();
+
+        dataManagementTool.eraseBuildDatabase();
+
+        assertEmpty();
+    }
+
+    public void testRestoreBuilds()
+        throws Exception
+    {
+        createBuildDatabase( false );
+
+        assertEmpty();
+
+        File backupFile = new File( targetDirectory, DataManagementTool.BUILDS_XML );
+
+        IOUtil.copy( getClass().getResourceAsStream( "/expected.xml" ), new FileWriter( backupFile ) );
+
+        dataManagementTool.restoreBuildDatabase( targetDirectory );
+
+        // TODO: why is this wrong?
+        assertBuildDatabase();
+
+        // Test that it worked. Relies on BackupBuilds having worked
+        dataManagementTool.backupBuildDatabase( targetDirectory );
+
+        StringWriter sw = new StringWriter();
+
+        IOUtil.copy( getClass().getResourceAsStream( "/expected.xml" ), sw );
+
+        assertEquals( "Check database content", removeTimestampVariance( sw.toString() ),
+                      removeTimestampVariance( FileUtils.fileRead( backupFile ) ) );
+    }
+
+    private static File createBackupDirectory()
+    {
+        String timestamp = new SimpleDateFormat( "yyyyMMdd.HHmmss", Locale.US ).format( new Date() );
+
+        File targetDirectory = getTestFile( "target/backups/" + timestamp );
+        targetDirectory.mkdirs();
+
+        return targetDirectory;
+    }
+
+    private static String removeTimestampVariance( String content )
+    {
+        return removeTagContent(
+            removeTagContent( removeTagContent( removeTagContent( content, "startTime" ), "endTime" ), "date" ), "id" );
+    }
+
+    private static String removeTagContent( String content, String field )
+    {
+        return content.replaceAll( "<" + field + ">.*</" + field + ">", "<" + field + "></" + field + ">" );
+    }
+}

Propchange: maven/continuum/trunk/continuum-data-management/src/test/java/org/apache/maven/continuum/management/DataManagementToolTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/continuum/trunk/continuum-data-management/src/test/resources/expected.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-data-management/src/test/resources/expected.xml?view=auto&rev=480795
==============================================================================
--- maven/continuum/trunk/continuum-data-management/src/test/resources/expected.xml (added)
+++ maven/continuum/trunk/continuum-data-management/src/test/resources/expected.xml Wed Nov 29 16:46:47 2006
@@ -0,0 +1,470 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<continuumDatabase>
+  <projectGroups>
+    <projectGroup>
+      <id>1</id>
+      <groupId>org.apache.maven.test.default</groupId>
+      <name>Default Group</name>
+      <description>The Default Group</description>
+      <projects>
+        <project>
+          <id>1</id>
+          <groupId>org.apache.maven.test.default</groupId>
+          <artifactId>artifactId1</artifactId>
+          <name>name1</name>
+          <description>description1</description>
+          <url>url1</url>
+          <scmUrl>scmUrl1</scmUrl>
+          <version>version1</version>
+          <buildNumber>1</buildNumber>
+          <workingDirectory>workingDirectory1</workingDirectory>
+          <buildResults>
+            <buildResult>
+              <project id="1" />
+              <id>1</id>
+              <buildNumber>1</buildNumber>
+              <state>1</state>
+              <trigger>1</trigger>
+              <startTime>1164693625928</startTime>
+              <endTime>1164693626928</endTime>
+              <error>error1</error>
+              <success>true</success>
+              <exitCode>1</exitCode>
+              <scmResult>
+                <success>true</success>
+                <providerMessage>providerMessage1</providerMessage>
+                <commandOutput>commandOutput1</commandOutput>
+                <changes>
+                  <change>
+                    <author>author1.1</author>
+                    <comment>comment1.1</comment>
+                    <date>1164693625935</date>
+                    <files>
+                      <file>
+                        <name>name1.1.1</name>
+                        <revision>rev1.1.1</revision>
+                      </file>
+                      <file>
+                        <name>name1.1.2</name>
+                        <revision>rev1.1.2</revision>
+                      </file>
+                      <file>
+                        <name>name1.1.3</name>
+                        <revision>rev1.1.3</revision>
+                      </file>
+                    </files>
+                  </change>
+                  <change>
+                    <author>author1.2</author>
+                    <comment>comment1.2</comment>
+                    <date>1164693625936</date>
+                    <files>
+                      <file>
+                        <name>name1.2.1</name>
+                        <revision>rev1.2.1</revision>
+                      </file>
+                      <file>
+                        <name>name1.2.2</name>
+                        <revision>rev1.2.2</revision>
+                      </file>
+                      <file>
+                        <name>name1.2.3</name>
+                        <revision>rev1.2.3</revision>
+                      </file>
+                    </files>
+                  </change>
+                </changes>
+              </scmResult>
+            </buildResult>
+            <buildResult>
+              <project id="1" />
+              <id>2</id>
+              <buildNumber>2</buildNumber>
+              <state>2</state>
+              <trigger>2</trigger>
+              <startTime>1164693627928</startTime>
+              <endTime>1164693628928</endTime>
+              <error>error2</error>
+              <exitCode>2</exitCode>
+            </buildResult>
+          </buildResults>
+          <checkoutResult>
+            <providerMessage>providerMessageCO1</providerMessage>
+            <commandOutput>commandOutputCO1</commandOutput>
+            <changes>
+              <change>
+                <author>authorCO1.1</author>
+                <comment>commentCO1.1</comment>
+                <date>1164693625936</date>
+                <files>
+                  <file>
+                    <name>nameCO1.1.1</name>
+                    <revision>revCO1.1.1</revision>
+                  </file>
+                  <file>
+                    <name>nameCO1.1.2</name>
+                    <revision>revCO1.1.2</revision>
+                  </file>
+                  <file>
+                    <name>nameCO1.1.3</name>
+                    <revision>revCO1.1.3</revision>
+                  </file>
+                </files>
+              </change>
+              <change>
+                <author>authorCO1.2</author>
+                <comment>commentCO1.2</comment>
+                <date>1164693625936</date>
+                <files>
+                  <file>
+                    <name>nameCO1.2.1</name>
+                    <revision>revCO1.2.1</revision>
+                  </file>
+                  <file>
+                    <name>nameCO1.2.2</name>
+                    <revision>revCO1.2.2</revision>
+                  </file>
+                  <file>
+                    <name>nameCO1.2.3</name>
+                    <revision>revCO1.2.3</revision>
+                  </file>
+                </files>
+              </change>
+            </changes>
+          </checkoutResult>
+          <developers>
+            <developer>
+              <scmId>scmId1</scmId>
+              <name>name1</name>
+              <email>email1</email>
+              <continuumId>1</continuumId>
+            </developer>
+          </developers>
+          <dependencies>
+            <dependency>
+              <groupId>groupId1</groupId>
+              <artifactId>artifactId1</artifactId>
+              <version>version1</version>
+            </dependency>
+            <dependency>
+              <groupId>groupId2</groupId>
+              <artifactId>artifactId2</artifactId>
+              <version>version2</version>
+            </dependency>
+          </dependencies>
+          <projectGroup id="1" />
+          <notifiers>
+            <notifier>
+              <id>3</id>
+              <type>type11</type>
+              <recipientType>11</recipientType>
+              <sendOnSuccess>false</sendOnSuccess>
+              <configuration>
+                <key1>value1</key1>
+                <key2>value2</key2>
+              </configuration>
+            </notifier>
+          </notifiers>
+          <buildDefinitions>
+            <buildDefinition>
+              <id>1</id>
+              <goals>goals11</goals>
+              <arguments>arguments11</arguments>
+              <buildFile>buildFile11</buildFile>
+              <schedule id="2" />
+              <profile id="2" />
+            </buildDefinition>
+            <buildDefinition>
+              <id>2</id>
+              <goals>goals12</goals>
+              <arguments>arguments12</arguments>
+              <buildFile>buildFile12</buildFile>
+              <schedule id="1" />
+              <profile id="2" />
+            </buildDefinition>
+          </buildDefinitions>
+        </project>
+        <project>
+          <id>2</id>
+          <groupId>org.apache.maven.test.default</groupId>
+          <artifactId>artifactId2</artifactId>
+          <name>name2</name>
+          <description>description2</description>
+          <url>url2</url>
+          <scmUrl>scmUrl2</scmUrl>
+          <version>version2</version>
+          <buildNumber>2</buildNumber>
+          <workingDirectory>workingDirectory2</workingDirectory>
+          <buildResults>
+            <buildResult>
+              <project id="2" />
+              <id>3</id>
+              <buildNumber>3</buildNumber>
+              <state>3</state>
+              <trigger>3</trigger>
+              <startTime>1164693629928</startTime>
+              <endTime>1164693630928</endTime>
+              <error>error3</error>
+              <success>true</success>
+              <exitCode>3</exitCode>
+              <scmResult>
+                <success>true</success>
+                <providerMessage>providerMessage3</providerMessage>
+                <commandOutput>commandOutput3</commandOutput>
+                <changes>
+                  <change>
+                    <author>author3.1</author>
+                    <comment>comment3.1</comment>
+                    <date>1164693625936</date>
+                    <files>
+                      <file>
+                        <name>name3.1.1</name>
+                        <revision>rev3.1.1</revision>
+                      </file>
+                      <file>
+                        <name>name3.1.2</name>
+                        <revision>rev3.1.2</revision>
+                      </file>
+                      <file>
+                        <name>name3.1.3</name>
+                        <revision>rev3.1.3</revision>
+                      </file>
+                    </files>
+                  </change>
+                  <change>
+                    <author>author3.2</author>
+                    <comment>comment3.2</comment>
+                    <date>1164693625936</date>
+                    <files>
+                      <file>
+                        <name>name3.2.1</name>
+                        <revision>rev3.2.1</revision>
+                      </file>
+                      <file>
+                        <name>name3.2.2</name>
+                        <revision>rev3.2.2</revision>
+                      </file>
+                      <file>
+                        <name>name3.2.3</name>
+                        <revision>rev3.2.3</revision>
+                      </file>
+                    </files>
+                  </change>
+                </changes>
+              </scmResult>
+            </buildResult>
+          </buildResults>
+          <developers>
+            <developer>
+              <scmId>scmId2</scmId>
+              <name>name2</name>
+              <email>email2</email>
+              <continuumId>2</continuumId>
+            </developer>
+            <developer>
+              <scmId>scmId3</scmId>
+              <name>name3</name>
+              <email>email3</email>
+              <continuumId>3</continuumId>
+            </developer>
+          </developers>
+          <dependencies>
+            <dependency>
+              <groupId>groupId3</groupId>
+              <artifactId>artifactId3</artifactId>
+              <version>version3</version>
+            </dependency>
+          </dependencies>
+          <projectGroup id="1" />
+          <notifiers>
+            <notifier>
+              <id>4</id>
+              <type>type12</type>
+              <recipientType>12</recipientType>
+              <sendOnFailure>false</sendOnFailure>
+              <sendOnError>false</sendOnError>
+              <configuration>
+                <key1>value1</key1>
+                <key2>value2</key2>
+              </configuration>
+            </notifier>
+            <notifier>
+              <id>5</id>
+              <type>type13</type>
+              <recipientType>13</recipientType>
+              <sendOnSuccess>false</sendOnSuccess>
+              <sendOnError>false</sendOnError>
+              <configuration>
+                <key1>value1</key1>
+                <key2>value2</key2>
+              </configuration>
+            </notifier>
+          </notifiers>
+          <buildDefinitions>
+            <buildDefinition>
+              <id>3</id>
+              <goals>goals13</goals>
+              <arguments>arguments13</arguments>
+              <buildFile>buildFile13</buildFile>
+              <schedule id="1" />
+              <profile id="1" />
+            </buildDefinition>
+          </buildDefinitions>
+        </project>
+      </projects>
+      <notifiers>
+        <notifier>
+          <id>1</id>
+          <type>type1</type>
+          <recipientType>1</recipientType>
+          <sendOnFailure>false</sendOnFailure>
+          <configuration>
+            <key1>value1</key1>
+            <key2>value2</key2>
+          </configuration>
+        </notifier>
+        <notifier>
+          <id>2</id>
+          <type>type2</type>
+          <recipientType>2</recipientType>
+          <sendOnSuccess>false</sendOnSuccess>
+          <sendOnError>false</sendOnError>
+          <configuration>
+            <key1>value1</key1>
+            <key2>value2</key2>
+          </configuration>
+        </notifier>
+      </notifiers>
+      <buildDefinitions>
+        <buildDefinition>
+          <id>4</id>
+          <goals>goals1</goals>
+          <arguments>arguments1</arguments>
+          <buildFile>buildFile1</buildFile>
+          <schedule id="1" />
+          <profile id="1" />
+        </buildDefinition>
+      </buildDefinitions>
+    </projectGroup>
+    <projectGroup>
+      <id>2</id>
+      <groupId>test group 2 groupId</groupId>
+      <name>test group 2</name>
+      <description>test group 2 desc</description>
+      <notifiers>
+        <notifier>
+          <id>6</id>
+          <type>type3</type>
+          <recipientType>3</recipientType>
+          <sendOnSuccess>false</sendOnSuccess>
+          <sendOnFailure>false</sendOnFailure>
+          <configuration>
+            <key1>value1</key1>
+            <key2>value2</key2>
+          </configuration>
+        </notifier>
+      </notifiers>
+      <buildDefinitions>
+        <buildDefinition>
+          <id>5</id>
+          <goals>goals2</goals>
+          <arguments>arguments2</arguments>
+          <buildFile>buildFile2</buildFile>
+          <schedule id="2" />
+          <profile id="1" />
+        </buildDefinition>
+        <buildDefinition>
+          <id>6</id>
+          <goals>goals3</goals>
+          <arguments>arguments3</arguments>
+          <buildFile>buildFile3</buildFile>
+          <schedule id="2" />
+          <profile id="2" />
+        </buildDefinition>
+      </buildDefinitions>
+    </projectGroup>
+  </projectGroups>
+  <systemConfiguration>
+    <guestAccountEnabled>false</guestAccountEnabled>
+    <defaultScheduleDescription>Description</defaultScheduleDescription>
+    <defaultScheduleCronExpression>* * * * *</defaultScheduleCronExpression>
+    <workingDirectory>workingDirectory</workingDirectory>
+    <buildOutputDirectory>buildOutputDirectory</buildOutputDirectory>
+    <deploymentRepositoryDirectory>deployment</deploymentRepositoryDirectory>
+    <baseUrl>baseUrl</baseUrl>
+    <initialized>true</initialized>
+  </systemConfiguration>
+  <installations>
+    <installation>
+      <version>1.3</version>
+      <path>/usr/local/java-1.3</path>
+      <name>JDK 1.3</name>
+    </installation>
+    <installation>
+      <version>1.4</version>
+      <path>/usr/local/java-1.4</path>
+      <name>JDK 1.4</name>
+    </installation>
+    <installation>
+      <version>2.0-alpha-3</version>
+      <path>/usr/local/maven-2.0-alpha-3</path>
+      <name>Maven 2.0 alpha 3</name>
+    </installation>
+  </installations>
+  <schedules>
+    <schedule>
+      <id>2</id>
+      <active>true</active>
+      <name>name1</name>
+      <description>description1</description>
+      <delay>1</delay>
+      <cronExpression>cronExpression1</cronExpression>
+    </schedule>
+    <schedule>
+      <id>1</id>
+      <active>true</active>
+      <name>name2</name>
+      <description>description2</description>
+      <delay>2</delay>
+      <cronExpression>cronExpression2</cronExpression>
+    </schedule>
+    <schedule>
+      <id>3</id>
+      <active>true</active>
+      <name>name3</name>
+      <description>description3</description>
+      <delay>3</delay>
+      <cronExpression>cronExpression3</cronExpression>
+    </schedule>
+  </schedules>
+  <profiles>
+    <profile>
+      <id>1</id>
+      <active>true</active>
+      <name>name1</name>
+      <description>description1</description>
+      <scmMode>1</scmMode>
+      <buildWithoutChanges>true</buildWithoutChanges>
+      <jdk name="JDK 1.3" />
+      <builder name="Maven 2.0 alpha 3" />
+    </profile>
+    <profile>
+      <id>2</id>
+      <active>true</active>
+      <name>name2</name>
+      <description>description2</description>
+      <scmMode>2</scmMode>
+      <jdk name="JDK 1.4" />
+      <builder name="Maven 2.0 alpha 3" />
+    </profile>
+    <profile>
+      <id>3</id>
+      <name>name3</name>
+      <description>description3</description>
+      <scmMode>3</scmMode>
+      <buildWithoutChanges>true</buildWithoutChanges>
+      <jdk name="JDK 1.4" />
+      <builder name="Maven 2.0 alpha 3" />
+    </profile>
+  </profiles>
+</continuumDatabase>
\ No newline at end of file

Propchange: maven/continuum/trunk/continuum-data-management/src/test/resources/expected.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/continuum/trunk/continuum-data-management/src/test/resources/org/apache/maven/continuum/management/DataManagementToolTest.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-data-management/src/test/resources/org/apache/maven/continuum/management/DataManagementToolTest.xml?view=auto&rev=480795
==============================================================================
--- maven/continuum/trunk/continuum-data-management/src/test/resources/org/apache/maven/continuum/management/DataManagementToolTest.xml (added)
+++ maven/continuum/trunk/continuum-data-management/src/test/resources/org/apache/maven/continuum/management/DataManagementToolTest.xml Wed Nov 29 16:46:47 2006
@@ -0,0 +1,61 @@
+<!--
+  ~ Copyright 2004-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<component-set>
+  <components>
+    <component>
+      <role>org.codehaus.plexus.jdo.JdoFactory</role>
+      <role-hint>continuum</role-hint>
+      <implementation>org.codehaus.plexus.jdo.DefaultConfigurableJdoFactory</implementation>
+      <configuration>
+        <!-- Database Configuration -->
+        <driverName>org.hsqldb.jdbcDriver</driverName>
+        <url>jdbc:hsqldb:mem:database</url>
+        <userName>sa</userName>
+        <password></password>
+        <persistenceManagerFactoryClass>org.jpox.PersistenceManagerFactoryImpl</persistenceManagerFactoryClass>
+
+        <otherProperties>
+          <!-- JPOX and JDO configuration -->
+          <property>
+            <name>org.jpox.autoCreateSchema</name>
+            <value>true</value>
+          </property>
+          <property>
+            <name>org.jpox.validateTables</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>org.jpox.validateColumns</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>org.jpox.validateConstraints</name>
+            <value>false</value>
+          </property>
+          <property>
+            <name>org.jpox.transactionIsolation</name>
+            <value>READ_UNCOMMITTED</value>
+          </property>
+          <property>
+            <name>org.jpox.poid.transactionIsolation</name>
+            <value>READ_UNCOMMITTED</value>
+          </property>
+        </otherProperties>
+      </configuration>
+    </component>
+  </components>
+</component-set>

Propchange: maven/continuum/trunk/continuum-data-management/src/test/resources/org/apache/maven/continuum/management/DataManagementToolTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: maven/continuum/trunk/continuum-model/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-model/pom.xml?view=diff&rev=480795&r1=480794&r2=480795
==============================================================================
--- maven/continuum/trunk/continuum-model/pom.xml (original)
+++ maven/continuum/trunk/continuum-model/pom.xml Wed Nov 29 16:46:47 2006
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  ~ Copyright 2004-2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
 <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">
@@ -15,29 +31,43 @@
       <plugin>
         <groupId>org.codehaus.modello</groupId>
         <artifactId>modello-maven-plugin</artifactId>
-        <version>1.0-alpha-11</version>
+        <version>1.0-alpha-12-SNAPSHOT</version>
         <executions>
           <execution>
             <id>modello-continuum</id>
             <goals>
               <goal>java</goal>
               <goal>jpox-jdo-mapping</goal>
+              <goal>jpox-metadata-class</goal>
+              <goal>stax-reader</goal>
+              <goal>stax-writer</goal>
             </goals>
             <configuration>
               <model>src/main/mdo/continuum.xml</model>
             </configuration>
           </execution>
           <execution>
-            <id>modello-java-users</id>
+            <id>modello-general</id>
             <goals>
               <goal>java</goal>
+              <goal>jpox-metadata-class</goal>
             </goals>
             <configuration>
               <model>src/main/mdo/general.xml</model>
             </configuration>
           </execution>
           <execution>
-            <id>jpox-jdo-mapping-users</id>
+            <id>jpox-jdo-mapping-replication</id>
+            <goals>
+              <goal>jpox-jdo-mapping</goal>
+            </goals>
+            <configuration>
+              <model>src/main/mdo/continuum.xml</model>
+              <replicationParameters>true</replicationParameters>
+            </configuration>
+          </execution>
+          <execution>
+            <id>jpox-jdo-mapping-general</id>
             <goals>
               <goal>jpox-jdo-mapping</goal>
             </goals>
@@ -48,7 +78,7 @@
           </execution>
         </executions>
         <configuration>
-          <version>1.0.0</version>
+          <version>1.1.0</version>
           <packageWithVersion>false</packageWithVersion>
         </configuration>
       </plugin>
@@ -66,4 +96,22 @@
       </plugin>
     </plugins>
   </build>
+  <dependencies>
+    <dependency>
+      <groupId>net.java.dev.stax-utils</groupId>
+      <artifactId>stax-utils</artifactId>
+      <version>20060502</version>
+      <exclusions>
+        <exclusion>
+          <groupId>com.bea.xml</groupId>
+          <artifactId>jsr173-ri</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>stax</groupId>
+      <artifactId>stax-api</artifactId>
+      <version>1.0.1</version>
+    </dependency>
+  </dependencies>
 </project>

Modified: maven/continuum/trunk/continuum-model/src/main/mdo/continuum.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-model/src/main/mdo/continuum.xml?view=diff&rev=480795&r1=480794&r2=480795
==============================================================================
--- maven/continuum/trunk/continuum-model/src/main/mdo/continuum.xml (original)
+++ maven/continuum/trunk/continuum-model/src/main/mdo/continuum.xml Wed Nov 29 16:46:47 2006
@@ -10,39 +10,82 @@
   </defaults>
 
   <classes>
-    <!--
-     TODO: need another root element that encases all the independant trees here
-    -->
+    <class rootElement="true" jpox.enabled="false" stash.storable="false">
+      <name>ContinuumDatabase</name>
+      <version>1.1.0+</version>
+      <fields>
+        <field>
+          <name>projectGroups</name>
+          <version>1.1.0+</version>
+          <association>
+            <type>ProjectGroup</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>systemConfiguration</name>
+          <version>1.1.0+</version>
+          <association>
+            <type>SystemConfiguration</type>
+          </association>
+        </field>
+        <!-- independent references -->
+        <field>
+          <name>installations</name>
+          <version>1.1.0+</version>
+          <association>
+            <type>Installation</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>schedules</name>
+          <version>1.1.0+</version>
+          <association>
+            <type>Schedule</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+        <field>
+          <name>profiles</name>
+          <version>1.1.0+</version>
+          <association>
+            <type>Profile</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
+      </fields>
+    </class>
 
-    <class rootElement="true">
+    <class>
       <name>ProjectGroup</name>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>id</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <required>true</required>
           <type>int</type>
           <identifier>true</identifier>
         </field>
         <field>
           <name>groupId</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>name</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field stash.maxSize="8192">
           <name>description</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field jpox.mappedBy="projectGroup" jpox.fetchGroupNames="projectgroup-projects project-build-details">
           <name>projects</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association jpox.join="false">
             <type>Project</type>
             <multiplicity>*</multiplicity>
@@ -50,7 +93,7 @@
         </field>
         <field jpox.fetchGroupNames="project-build-details">
           <name>notifiers</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association>
             <type>ProjectNotifier</type>
             <multiplicity>*</multiplicity>
@@ -58,7 +101,7 @@
         </field>
         <field jpox.fetchGroupNames="project-build-details">
           <name>buildDefinitions</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association>
             <type>BuildDefinition</type>
             <multiplicity>*</multiplicity>
@@ -69,101 +112,101 @@
 
     <class>
       <name>Project</name>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>id</name>
           <required>true</required>
           <identifier>true</identifier>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>groupId</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>artifactId</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>executorId</name>
-          <version>1.0.0</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>name</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field stash.maxSize="8192">
           <name>description</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field stash.maxSize="256">
           <name>url</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field stash.maxSize="256">
           <name>scmUrl</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>scmTag</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>scmUsername</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>scmPassword</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>version</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <!-- TODO: should these 3 just be queried from the builds list? -->
         <field>
           <name>state</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
           <defaultValue>1</defaultValue>
         </field>
         <field>
           <name>oldState</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <!-- TODO: maybe buildresult itself? -->
         <field>
           <name>latestBuildId</name>
-          <version>1.0.0</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>buildNumber</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field stash.maxSize="256">
           <name>workingDirectory</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field jpox.mappedBy="project" jpox.fetchGroupNames="project-with-builds">
           <name>buildResults</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association jpox.join="false">
             <type>BuildResult</type>
             <multiplicity>*</multiplicity>
@@ -172,14 +215,14 @@
         <!-- TODO: remove -->
         <field jpox.fetchGroupNames="project-with-checkout-result">
           <name>checkoutResult</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association>
             <type>ScmResult</type>
           </association>
         </field>
         <field jpox.fetchGroupNames="project-all-details">
           <name>developers</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association jpox.join="false">
             <type>ProjectDeveloper</type>
             <multiplicity>*</multiplicity>
@@ -187,14 +230,14 @@
         </field>
         <field jpox.fetchGroupNames="project-all-details project-dependencies">
           <name>parent</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association jpox.join="false">
             <type>ProjectDependency</type>
           </association>
         </field>
         <field jpox.fetchGroupNames="project-all-details project-dependencies">
           <name>dependencies</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association jpox.join="false">
             <type>ProjectDependency</type>
             <multiplicity>*</multiplicity>
@@ -202,15 +245,15 @@
         </field>
         <field>
           <name>projectGroup</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <required>true</required>
-          <association stash.part="true" jpox.dependent="false">
+          <association stash.part="true" xml.reference="true" jpox.dependent="false">
             <type>ProjectGroup</type>
           </association>
         </field>
         <field jpox.fetchGroupNames="project-build-details project-all-details">
           <name>notifiers</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association>
             <type>ProjectNotifier</type>
             <multiplicity>*</multiplicity>
@@ -218,7 +261,7 @@
         </field>
         <field jpox.fetchGroupNames="project-build-details project-all-details">
           <name>buildDefinitions</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association>
             <type>BuildDefinition</type>
             <multiplicity>*</multiplicity>
@@ -229,7 +272,7 @@
 
     <class>
       <name>ProjectNotifier</name>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <description>
         Configures one method for notifying users/developers when a build breaks.
       </description>
@@ -238,60 +281,60 @@
           <name>id</name>
           <required>true</required>
           <identifier>true</identifier>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>type</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <defaultValue>mail</defaultValue>
           <type>String</type>
           <description>The mechanism used to deliver notifications.</description>
         </field>
         <field jpox.column="notifierorigin">
           <name>from</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
           <description>The origin of the notifier (pom or user).</description>
         </field>
         <field>
           <name>enabled</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <defaultValue>true</defaultValue>
           <type>boolean</type>
         </field>
         <field>
           <name>recipientType</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>sendOnSuccess</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
           <defaultValue>true</defaultValue>
         </field>
         <field>
           <name>sendOnFailure</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
           <defaultValue>true</defaultValue>
         </field>
         <field>
           <name>sendOnError</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
           <defaultValue>true</defaultValue>
         </field>
         <field>
           <name>sendOnWarning</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
           <defaultValue>true</defaultValue>
         </field>
         <field>
           <name>configuration</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <description>Extended configuration specific to this notifier goes here.</description>
           <type>Map</type>
           <association xml.mapStyle="inline" stash.part="true" stash.keyType="java.lang.String">
@@ -302,7 +345,7 @@
       </fields>
       <codeSegments>
         <codeSegment>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <code><![CDATA[
 
               public static final int FROM_PROJECT = 1;
@@ -325,26 +368,26 @@
 
     <class>
       <name>ProjectDeveloper</name>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>scmId</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>name</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>email</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>continuumId</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
       </fields>
@@ -352,21 +395,21 @@
 
     <class>
       <name>ProjectDependency</name>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>groupId</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>artifactId</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>version</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
       </fields>
@@ -374,84 +417,84 @@
 
     <class>
       <name>BuildResult</name>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <description><![CDATA[
         This class is a single continuum build.
       ]]></description>
       <fields>
         <field>
           <name>project</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <!-- required>true</required -->
-          <association stash.part="true" jpox.dependent="false">
+          <association xml.reference="true" stash.part="true" jpox.dependent="false">
             <type>Project</type>
           </association>
         </field>
         <field>
           <name>id</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
           <identifier>true</identifier>
         </field>
         <field>
           <name>buildNumber</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>state</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>trigger</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>startTime</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <!-- TODO: Because JPOX persists as UTC and pulls back using the local time, we have to take over -->
           <type>long</type>
         </field>
         <field>
           <name>endTime</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <!-- TODO: Because JPOX persists as UTC and pulls back using the local time, we have to take over -->
           <type>long</type>
         </field>
         <field stash.maxSize="8192">
           <name>error</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>success</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
         </field>
         <field>
           <name>exitCode</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field jpox.fetchGroupNames="build-result-with-details">
           <name>scmResult</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association>
             <type>ScmResult</type>
           </association>
         </field>
         <field jpox.fetchGroupNames="build-result-with-details">
           <name>testResult</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association>
             <type>TestResult</type>
           </association>
         </field>
         <field jpox.fetchGroupNames="build-result-with-details">
           <name>modifiedDependencies</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association>
             <type>ProjectDependency</type>
             <multiplicity>*</multiplicity>
@@ -463,37 +506,37 @@
     <class>
       <name>ScmResult</name>
       <packageName>org.apache.maven.continuum.model.scm</packageName>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>success</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
         </field>
         <field>
           <name>commandLine</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field stash.maxSize="1024">
           <name>providerMessage</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <!-- TODO: page to disk? -->
         <field stash.maxSize="1024">
           <name>commandOutput</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field stash.maxSize="8192" jpox.column="exceptionstring">
           <name>exception</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>changes</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association stash.part="true" jpox.join="false">
             <type>ChangeSet</type>
             <multiplicity>*</multiplicity>
@@ -505,27 +548,33 @@
     <class>
       <name>ChangeSet</name>
       <packageName>org.apache.maven.continuum.model.scm</packageName>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
+          <name>id</name>
+          <version>1.1.0+</version>
+          <type>String</type>
+          <identity>true</identity>
+        </field>
+        <field>
           <name>author</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field stash.maxSize="8192">
           <name>comment</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>date</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <!-- TODO: Because JPOX persists as UTC and pulls back using the local time, we have to take over -->
           <type>long</type>
         </field>
         <field>
           <name>files</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association stash.part="true" jpox.join="false">
             <type>ChangeFile</type>
             <multiplicity>*</multiplicity>
@@ -534,7 +583,7 @@
       </fields>
       <codeSegments>
         <codeSegment>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <code><![CDATA[
             /**
              * @return Returns string representation of the changeset
@@ -593,27 +642,27 @@
     <class>
       <name>ChangeFile</name>
       <packageName>org.apache.maven.continuum.model.scm</packageName>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>name</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>revision</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>status</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
       </fields>
       <codeSegments>
         <codeSegment>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <code><![CDATA[
             /**
              * Provide a version of the object as a string for debugging purposes
@@ -639,26 +688,26 @@
     <class>
       <name>TestResult</name>
       <packageName>org.apache.maven.continuum.model.scm</packageName>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>testCount</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>failureCount</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>totalTime</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>long</type>
         </field>
         <field>
           <name>suiteResults</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association stash.part="true" jpox.join="false">
             <type>SuiteResult</type>
             <multiplicity>*</multiplicity>
@@ -670,31 +719,31 @@
     <class>
       <name>SuiteResult</name>
       <packageName>org.apache.maven.continuum.model.scm</packageName>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>name</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>testCount</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>failureCount</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>totalTime</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>long</type>
         </field>
         <field>
           <name>failures</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <association stash.part="true" jpox.join="false">
             <type>TestCaseFailure</type>
             <multiplicity>*</multiplicity>
@@ -706,16 +755,16 @@
     <class>
       <name>TestCaseFailure</name>
       <packageName>org.apache.maven.continuum.model.scm</packageName>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>name</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field stash.maxSize="8192" jpox.column="exceptionstring">
           <name>exception</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
       </fields>
@@ -723,39 +772,39 @@
 
     <class>
       <name>BuildDefinition</name>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>id</name>
           <required>true</required>
           <identifier>true</identifier>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>defaultForProject</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
           <defaultValue>false</defaultValue>
         </field>
         <field>
           <name>goals</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>arguments</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>buildFile</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>buildFresh</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
           <defaultValue>false</defaultValue>
           <description>
@@ -764,21 +813,21 @@
         </field>
         <field>
           <name>schedule</name>
-          <version>1.0.0+</version>
-          <association stash.part="true" jpox.dependent="false">
+          <version>1.1.0+</version>
+          <association xml.reference="true" stash.part="true" jpox.dependent="false">
             <type>Schedule</type>
           </association>
         </field>
         <field>
           <name>profile</name>
-          <version>1.0.0+</version>
-          <association stash.part="true" jpox.dependent="false">
+          <version>1.1.0+</version>
+          <association xml.reference="true" stash.part="true" jpox.dependent="false">
             <type>Profile</type>
           </association>
         </field>
         <field jpox.nullValue="default">
           <name>latestBuildId</name>
-          <version>1.0.0</version>
+          <version>1.1.0+</version>
           <type>int</type>
           <defaultValue>0</defaultValue>
         </field>
@@ -787,7 +836,7 @@
 
     <class>
       <name>Schedule</name>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <description><![CDATA[
         Schedule for a project.
       ]]></description>
@@ -795,22 +844,22 @@
         <field>
           <name>id</name>
           <identifier>true</identifier>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>active</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
         </field>
         <field>
           <name>name</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>description</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
@@ -818,7 +867,7 @@
           <description><![CDATA[
             Delay in seconds.
           ]]></description>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
@@ -827,13 +876,13 @@
             Maximum execution time of a job in seconds before it's
             terminated.
           </description>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
           <defaultValue>3600</defaultValue>
         </field>
         <field>
           <name>cronExpression</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
       </fields>
@@ -841,75 +890,76 @@
 
     <class>
       <name>Profile</name>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>id</name>
           <identifier>true</identifier>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>active</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
         </field>
         <field>
           <name>name</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>description</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>scmMode</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>int</type>
         </field>
         <field>
           <name>buildWithoutChanges</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
         </field>
         <field>
           <name>jdk</name>
-          <version>1.0.0+</version>
-          <association stash.part="true" jpox.dependent="false">
+          <version>1.1.0+</version>
+          <association xml.reference="true" stash.part="true" jpox.dependent="false">
             <type>Installation</type>
           </association>
         </field>
         <field>
           <name>builder</name>
-          <version>1.0.0+</version>
-          <association stash.part="true" jpox.dependent="false">
+          <version>1.1.0+</version>
+          <association xml.reference="true" stash.part="true" jpox.dependent="false">
             <type>Installation</type>
           </association>
         </field>
       </fields>
     </class>
 
-    <class>
+    <class jpox.use-identifiers-as-primary-key="false">
       <name>Installation</name>
       <packageName>org.apache.maven.continuum.model.system</packageName>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>version</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>path</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
-        <field>
+        <field jpox.primary-key="true" jpox.value-strategy="off">
           <name>name</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
+          <identifier>true</identifier>
         </field>
       </fields>
     </class>
@@ -917,51 +967,51 @@
     <class>
       <name>SystemConfiguration</name>
       <packageName>org.apache.maven.continuum.model.system</packageName>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>guestAccountEnabled</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
           <defaultValue>true</defaultValue>
         </field>
         <field>
           <name>defaultScheduleDescription</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
           <defaultValue>Run hourly</defaultValue>
         </field>
         <field>
           <name>defaultScheduleCronExpression</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
           <defaultValue>0 0 * * * ?</defaultValue>
         </field>
         <field>
           <name>workingDirectory</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
           <defaultValue>working-directory</defaultValue>
         </field>
         <field>
           <name>buildOutputDirectory</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
           <defaultValue>build-output-directory</defaultValue>
         </field>
         <field>
           <name>deploymentRepositoryDirectory</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>baseUrl</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>initialized</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>boolean</type>
           <defaultValue>false</defaultValue>
         </field>
@@ -970,7 +1020,7 @@
 
     <class>
       <name>NotificationAddress</name>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <packageName>org.apache.maven.continuum.model.system</packageName>
       <description>
         Configures one method for notifying users/developers when a build breaks.
@@ -978,19 +1028,19 @@
       <fields>
         <field>
           <name>type</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <defaultValue>mail</defaultValue>
           <type>String</type>
           <description>The mechanism used to deliver notifications.</description>
         </field>
         <field>
           <name>address</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>configuration</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <description>Extended configuration specific to this notifier goes here.</description>
           <type>Map</type>
           <association xml.mapStyle="inline" stash.part="true" stash.keyType="java.lang.String">
@@ -1001,20 +1051,21 @@
       </fields>
     </class>
 
-    <class jpox.enabled="false">
+    <!-- TODO: this isn't really appropriate to generate with Modello -->
+    <class jpox.enabled="false" stash.storable="false">
       <name>ContinuumProjectState</name>
       <packageName>org.apache.maven.continuum.project</packageName>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>name</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
       </fields>
       <codeSegments>
         <codeSegment>
-           <version>1.0.0+</version>
+           <version>1.1.0+</version>
            <code><![CDATA[
     public final static int NEW = 1;
     public final static int OK = 2;

Modified: maven/continuum/trunk/continuum-model/src/main/mdo/general.xml
URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-model/src/main/mdo/general.xml?view=diff&rev=480795&r1=480794&r2=480795
==============================================================================
--- maven/continuum/trunk/continuum-model/src/main/mdo/general.xml (original)
+++ maven/continuum/trunk/continuum-model/src/main/mdo/general.xml Wed Nov 29 16:46:47 2006
@@ -13,21 +13,21 @@
     <class>
       <name>CompanyInformation</name>
       <packageName>org.apache.maven.continuum.model.general</packageName>
-      <version>1.0.0+</version>
+      <version>1.1.0+</version>
       <fields>
         <field>
           <name>companyName</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>companyLogoUrl</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
         <field>
           <name>companyUrl</name>
-          <version>1.0.0+</version>
+          <version>1.1.0+</version>
           <type>String</type>
         </field>
       </fields>



Mime
View raw message