Deprecation begone!

This commit is contained in:
Michael Bayne
2007-07-25 23:30:07 +00:00
parent 9f544c9174
commit cf4f640ab3
2 changed files with 47 additions and 1 deletions
@@ -27,6 +27,7 @@ import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.samskivert.io.PersistenceException;
import com.samskivert.util.ArrayUtil;
@@ -50,7 +51,7 @@ import com.samskivert.jdbc.depot.expression.ValueExp;
* Provides a base for classes that provide access to persistent objects. Also defines the
* mechanism by which all persistent queries and updates are routed through the distributed cache.
*/
public class DepotRepository
public abstract class DepotRepository
{
/**
* Creates a repository with the supplied connection provider and its own private persistence
@@ -59,6 +60,7 @@ public class DepotRepository
protected DepotRepository (ConnectionProvider conprov)
{
_ctx = new PersistenceContext(getClass().getName(), conprov);
_ctx.repositoryCreated(this);
}
/**
@@ -67,8 +69,14 @@ public class DepotRepository
protected DepotRepository (PersistenceContext context)
{
_ctx = context;
_ctx.repositoryCreated(this);
}
/**
* Adds the persistent classes used by this repository to the supplied set.
*/
protected abstract void getManagedRecords (Set<Class<? extends PersistentRecord>> classes);
/**
* Loads the persistent object that matches the specified primary key.
*/
@@ -20,8 +20,11 @@
package com.samskivert.jdbc.depot;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -393,6 +396,29 @@ public class PersistenceContext
listenerSet.add(listener);
}
/**
* Iterates over all {@link PersistentRecord} classes managed by this context and initializes
* their {@link DepotMarshaller}. This forces migrations to run and the database schema to be
* created.
*/
public void initializeManagedRecords ()
throws PersistenceException
{
for (Class<? extends PersistentRecord> rclass : _managedRecords) {
getMarshaller(rclass);
}
}
/**
* Called when a depot repository is created. We register all persistent record classes used by
* the repository so that systems that desire it can force the resolution of all database
* tables rather than allowing resolution to happen on demand.
*/
protected void repositoryCreated (DepotRepository repo)
{
repo.getManagedRecords(_managedRecords);
}
/**
* Looks up and creates, but does not initialize, the marshaller for the specified Entity
* type.
@@ -474,4 +500,16 @@ public class PersistenceContext
protected Map<Class<?>, DepotMarshaller<?>> _marshallers =
new HashMap<Class<?>, DepotMarshaller<?>>();
/**
* The set of persistent records for which this context is responsible. This data is used by
* {@link #initializeManagedRecords} to force migration/schema initialization.
*/
protected Set<Class<? extends PersistentRecord>> _managedRecords =
new HashSet<Class<? extends PersistentRecord>>();
/**
* A collection of all {@link PersistenceContext} objects in existence.
*/
protected static List<PersistenceContext> _contexts = new ArrayList<PersistenceContext>();
}