notify-dpml AT lists.ibiblio.org
Subject: DPML Notify
List archive
svn commit: r2847 - in development/main/depot: console console/src/main/net/dpml/depot console/src/main/net/dpml/depot/profile prefs prefs/src/main/net/dpml/depot/prefs station/src/main/net/dpml/depot/station
- From: mcconnell AT dpml.net
- To: notify-dpml AT lists.ibiblio.org
- Subject: svn commit: r2847 - in development/main/depot: console console/src/main/net/dpml/depot console/src/main/net/dpml/depot/profile prefs prefs/src/main/net/dpml/depot/prefs station/src/main/net/dpml/depot/station
- Date: Mon, 13 Jun 2005 21:51:18 -0400
Author: mcconnell AT dpml.net
Date: Mon Jun 13 21:51:16 2005
New Revision: 2847
Removed:
development/main/depot/console/src/main/net/dpml/depot/profile/AbstractPluginProfileStorage.java
development/main/depot/console/src/main/net/dpml/depot/profile/BootstrapProfile.java
development/main/depot/console/src/main/net/dpml/depot/profile/BootstrapProfileStorage.java
development/main/depot/console/src/main/net/dpml/depot/profile/PluginProfile.java
development/main/depot/console/src/main/net/dpml/depot/profile/PluginProfileStorage.java
development/main/depot/prefs/src/main/net/dpml/depot/prefs/Main.java
Modified:
development/main/depot/console/build.xml
development/main/depot/console/src/main/net/dpml/depot/Main.java
development/main/depot/console/src/main/net/dpml/depot/profile/ApplicationProfile.java
development/main/depot/console/src/main/net/dpml/depot/profile/ApplicationProfileStorage.java
development/main/depot/console/src/main/net/dpml/depot/profile/DepotStorage.java
development/main/depot/prefs/build.xml
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotModelPanel.java
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotPreferencesFrame.java
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotPreferencesPanel.java
development/main/depot/station/src/main/net/dpml/depot/station/ActivationProfile.java
development/main/depot/station/src/main/net/dpml/depot/station/ActivationStorage.java
development/main/depot/station/src/main/net/dpml/depot/station/CodeBaseStorage.java
Log:
Consolidating the application profile model.
Modified: development/main/depot/console/build.xml
==============================================================================
--- development/main/depot/console/build.xml (original)
+++ development/main/depot/console/build.xml Mon Jun 13 21:51:16 2005
@@ -11,20 +11,17 @@
<target name="init" depends="standard.init">
<filter token="BUILD-ID" value="${project.version}" />
<x:filter token="DEPOT-PATH" feature="filename"/>
- <x:filter token="TRANSIT-PATH" key="dpml-transit-main"
feature="filename"/>
<x:property name="transit.filename" key="dpml-transit-main"
feature="filename"/>
- <x:property name="prefs.filename" key="dpml-depot-prefs"
feature="filename"/>
+ <filter token="TRANSIT-PATH" value="${transit.filename}"/>
<filter token="TRANSIT-MAIN-LIB" value="${transit.filename}" />
- <filter token="DEPOT-PREFS-LIB" value="${prefs.filename}" />
<filter token="DEPOT-MAIN-CLASS" value="net.dpml.depot.Main" />
- <property name="project.jar.classpath" value="${transit.filename}" />
<x:property name="station.plugin" key="dpml-depot-station" feature="uri"
type="plugin"/>
<filter token="STATION-PLUGIN-URI" value="${station.plugin}" />
<x:property name="test.plugin" key="dpml-depot-test" feature="uri"
type="plugin"/>
<filter token="TEST-PLUGIN-URI" value="${test.plugin}" />
<x:property name="console.plugin" feature="uri" type="jar"/>
<filter token="DEPOT-CONSOLE-URI" value="${console.plugin}" />
- <x:property name="prefs.plugin" key="dpml-depot-prefs" feature="uri"
type="jar"/>
+ <x:property name="prefs.plugin" key="dpml-depot-prefs" feature="uri"
type="plugin"/>
<filter token="DEPOT-PREFS-URI" value="${prefs.plugin}" />
</target>
Modified: development/main/depot/console/src/main/net/dpml/depot/Main.java
==============================================================================
--- development/main/depot/console/src/main/net/dpml/depot/Main.java
(original)
+++ development/main/depot/console/src/main/net/dpml/depot/Main.java Mon
Jun 13 21:51:16 2005
@@ -49,13 +49,11 @@
import net.dpml.depot.lang.DPML;
import net.dpml.depot.lang.DepotClassLoader;
-import net.dpml.depot.profile.Profile;
import net.dpml.depot.profile.ApplicationProfile;
import net.dpml.depot.profile.ApplicationProfile.Connection;
-import net.dpml.depot.profile.PluginProfile;
-import net.dpml.depot.profile.BootstrapProfile;
import net.dpml.depot.profile.DepotModel;
import net.dpml.depot.profile.DepotStorage;
+import net.dpml.depot.profile.Profile;
/**
* CLI hander for the depot package.
@@ -216,7 +214,7 @@
}
//
- // if we don't have a target declared we print out help and exit
+ // if we don't have a target declared then print out help and exit
//
if( null == target )
@@ -253,118 +251,68 @@
Connection connection = profile.getConnection();
Registry registry = getRegistry( connection );
- if( profile instanceof PluginProfile )
+ URI uri = profile.getURI();
+ try
{
- PluginProfile p = (PluginProfile) profile;
- URI uri = p.getURI();
- try
- {
- TransitModel model = loadTransitModel( args, logger );
- Transit transit = Transit.getInstance( model );
- Logger log = logger.getChildLogger( target );
- Repository loader = transit.getRepository();
- Object object = loader.getPlugin( system, uri, new
Object[]{ args, model, log } );
- if( registry != null )
- {
- String id = profile.getID();
- registry.bind( id, (Remote) object );
- if( null == connection.getHost() )
- {
- logger.info(
- "service bound to "
- + connection.getPort() + "/" + id );
- }
- else
- {
- logger.info(
- "service bound to " + connection.getHost()
- + ":" + connection.getPort() + "/" + id );
- }
- }
- else if( object instanceof Runnable )
+ TransitModel model = loadTransitModel( args, logger );
+ Transit transit = Transit.getInstance( model );
+ Logger log = logger.getChildLogger( target );
+ Repository loader = transit.getRepository();
+ Object object = loader.getPlugin( system, uri, new Object[]{
args, manager, model, log } );
+ if( registry != null )
+ {
+ String id = profile.getID();
+ registry.bind( id, (Remote) object );
+ if( null == connection.getHost() )
{
- //
- // run the plugin
- //
-
- Thread thread = null;
- logger.info( "starting " +
object.getClass().getName() );
- thread = new Thread( (Runnable) object );
- thread.start();
- setShutdownHook( thread );
+ logger.info(
+ "service bound to "
+ + connection.getPort() + "/" + id );
}
else
{
- logger.info( "loaded " + object.getClass().getName()
);
- //setShutdownHook( object );
+ logger.info(
+ "service bound to " + connection.getHost()
+ + ":" + connection.getPort() + "/" + id );
}
}
- catch( TransitError e )
+ else if( object instanceof Runnable )
{
- final String error =
- "Cannot load profile to an unrecoverable Transit
error.";
- getLogger().error( error, e );
- throw new HandledError();
- }
- catch( TransitException e )
- {
- final String error =
- "Cannot load profile to an Transit error.";
- getLogger().error( error, e );
- throw new HandledError();
+ //
+ // run the plugin
+ //
+
+ Thread thread = null;
+ logger.info( "starting " + object.getClass().getName() );
+ thread = new Thread( (Runnable) object );
+ thread.start();
+ setShutdownHook( thread );
}
- catch( Throwable e )
+ else
{
- final String error =
- "Cannot load profile due to an application
establishment error.";
- getLogger().error( error, e );
- throw new HandledError();
+ logger.info( "loaded " + object.getClass().getName() );
}
}
- else
+ catch( TransitError e )
{
- BootstrapProfile p = (BootstrapProfile) profile;
- String classname = p.getClassname();
- String[] classpath = p.getClasspath();
- try
- {
- system.setClasspath( classpath );
- Class c = system.loadClass( classname );
- deploy( c, args );
- }
- catch( ClassNotFoundException e )
- {
- StringBuffer buffer = new StringBuffer();
- buffer.append( "Application class not found." );
- buffer.append( "\nClassname: " + classname );
- buffer.append( "\nDepot Main Codesource: " );
- buffer.append( getCodeSourceLocation().toString() );
- buffer.append( "\nSystem classpath:" );
- URL[] urls = system.getURLs();
- for( int i=0; i<urls.length; i++ )
- {
- buffer.append( "\n" + (i+1) + "\t" + urls[i] );
- }
- String error = buffer.toString();
- getLogger().error( error );
- throw new HandledError();
- }
- catch( Exception e )
- {
- StringBuffer buffer = new StringBuffer();
- buffer.append( "Application error." );
- buffer.append( "\nDepot Codesource: " );
- buffer.append( getCodeSourceLocation().toString() );
- buffer.append( "\nSystem classpath:" );
- URL[] urls = system.getURLs();
- for( int i=0; i<urls.length; i++ )
- {
- buffer.append( "\n" + (i+1) + "\t" + urls[i] );
- }
- String error = buffer.toString();
- getLogger().error( error, e );
- throw new HandledError();
- }
+ final String error =
+ "Cannot load profile to an unrecoverable Transit error.";
+ getLogger().error( error, e );
+ throw new HandledError();
+ }
+ catch( TransitException e )
+ {
+ final String error =
+ "Cannot load profile to an Transit error.";
+ getLogger().error( error, e );
+ throw new HandledError();
+ }
+ catch( Throwable e )
+ {
+ final String error =
+ "Cannot load profile due to an application establishment
error.";
+ getLogger().error( error, e );
+ throw new HandledError();
}
}
catch( HandledError handledError )
Modified:
development/main/depot/console/src/main/net/dpml/depot/profile/ApplicationProfile.java
==============================================================================
---
development/main/depot/console/src/main/net/dpml/depot/profile/ApplicationProfile.java
(original)
+++
development/main/depot/console/src/main/net/dpml/depot/profile/ApplicationProfile.java
Mon Jun 13 21:51:16 2005
@@ -31,15 +31,27 @@
*/
public class ApplicationProfile extends Profile
{
+ private final boolean m_system;
+
+ private URI m_uri;
private boolean m_command;
private Connection m_connection;
public ApplicationProfile(
Logger logger, Date creation, ProfileHome home, String id, String
title,
- Properties properties, boolean command, Connection connection )
+ Properties properties, boolean command, Connection connection, URI uri
)
+ {
+ this( logger, creation, home, id, title, properties, command,
connection, uri, false );
+ }
+
+ ApplicationProfile(
+ Logger logger, Date creation, ProfileHome home, String id, String
title,
+ Properties properties, boolean command, Connection connection, URI
uri, boolean system )
{
super( logger, creation, home, id, title, properties );
+ m_uri = uri;
+ m_system = system;
m_connection = connection;
m_command = command;
}
@@ -48,6 +60,21 @@
// impl
//----------------------------------------------------------------------
+ public boolean isSystemProfile()
+ {
+ return m_system;
+ }
+
+ public URI getURI()
+ {
+ return m_uri;
+ }
+
+ public void setURI( URI uri )
+ {
+ m_uri = uri;
+ }
+
public boolean getCommandPolicy()
{
return m_command;
Modified:
development/main/depot/console/src/main/net/dpml/depot/profile/ApplicationProfileStorage.java
==============================================================================
---
development/main/depot/console/src/main/net/dpml/depot/profile/ApplicationProfileStorage.java
(original)
+++
development/main/depot/console/src/main/net/dpml/depot/profile/ApplicationProfileStorage.java
Mon Jun 13 21:51:16 2005
@@ -27,24 +27,79 @@
import net.dpml.transit.home.Home;
import net.dpml.transit.model.Logger;
-import net.dpml.transit.model.ModificationEvent;
+import net.dpml.depot.profile.ProfileStorage;
import net.dpml.depot.profile.ApplicationProfile.Connection;
/**
* A ProfileHome maintains a persistent application profile.
*/
-public abstract class ApplicationProfileStorage extends
AbstractPluginProfileStorage
+public class ApplicationProfileStorage extends ProfileStorage
{
//
------------------------------------------------------------------------
+ // state
+ //
------------------------------------------------------------------------
+
+ private final ApplicationProfile m_profile;
+
+ //
------------------------------------------------------------------------
// constructor
//
------------------------------------------------------------------------
+ protected ApplicationProfile getApplicationProfile()
+ {
+ return m_profile;
+ }
+
public ApplicationProfileStorage(
Preferences prefs, Logger logger, Date creation, boolean policy )
throws ProfileException
{
+ this( prefs, logger, creation, policy, false );
+ }
+
+ ApplicationProfileStorage(
+ Preferences prefs, Logger logger, Date creation, boolean policy,
boolean system )
+ throws ProfileException
+ {
super( prefs, logger, creation, policy );
+
+ String id = getID();
+ String title = getTitle();
+ Properties properties = getProperties();
+ Connection connection = getConnection();
+ boolean command = getCommandPolicy();
+ URI uri = getPluginURI();
+ m_profile =
+ new ApplicationProfile(
+ logger, creation, this, id, title, properties, command,
connection, uri, system );
+ }
+
+ protected URI getPluginURI() throws ProfileException
+ {
+ Preferences prefs = getPreferences();
+ String path = prefs.get( "plugin", null );
+ if( null != path )
+ {
+ try
+ {
+ return new URI( path );
+ }
+ catch( URISyntaxException e )
+ {
+ final String error =
+ "Plugin application profile contains an invalid uri value."
+ + "\nURI: " + path;
+ throw new ProfileException( error, e );
+ }
+ }
+ else
+ {
+ final String error =
+ "Requested plugin profile '" + prefs
+ + "' does not declare a plugin uri attribute.";
+ throw new ProfileException( error );
+ }
}
protected boolean getCommandPolicy()
Modified:
development/main/depot/console/src/main/net/dpml/depot/profile/DepotStorage.java
==============================================================================
---
development/main/depot/console/src/main/net/dpml/depot/profile/DepotStorage.java
(original)
+++
development/main/depot/console/src/main/net/dpml/depot/profile/DepotStorage.java
Mon Jun 13 21:51:16 2005
@@ -101,16 +101,8 @@
boolean policy = getStoragePolicy();
Date creation = getCreationDate();
String path = prefs.get( "plugin", null );
- if( null != path )
- {
- PluginProfileStorage store = new PluginProfileStorage( prefs,
logger, creation, policy );
- return store.getPluginProfile();
- }
- else
- {
- BootstrapProfileStorage store = new BootstrapProfileStorage(
prefs, logger, creation, policy );
- return store.getBootstrapProfile();
- }
+ ApplicationProfileStorage store = new ApplicationProfileStorage(
prefs, logger, creation, policy );
+ return store.getApplicationProfile();
}
private ApplicationProfile[] createBootstrapProfiles() throws
ProfileException
@@ -128,12 +120,11 @@
Logger logger = getLogger().getChildLogger( id );
boolean policy = getStoragePolicy();
Preferences prefs = getPreferences().node( "profiles" ).node( id );
- prefs.put( "classname", "net.dpml.depot.prefs.Main" );
+ prefs.put( "plugin", "@DEPOT-PREFS-URI@" );
prefs.put( "title", "Depot Preferences" );
- prefs.node( "classpath" ).put( "dpml-depot-prefs",
"${dpml.data}/lib/@DEPOT-PREFS-LIB@" );
prefs.putBoolean( "command", false );
- BootstrapProfileStorage store = new BootstrapProfileStorage( prefs,
logger, creation, policy );
- return store.getBootstrapProfile();
+ ApplicationProfileStorage store = new ApplicationProfileStorage(
prefs, logger, creation, policy, true );
+ return store.getApplicationProfile();
}
private ApplicationProfile createStationProfile() throws ProfileException
@@ -147,8 +138,8 @@
prefs.put( "title", "Depot Station" );
prefs.putBoolean( "command", false );
prefs.node( "connection" );
- PluginProfileStorage store = new PluginProfileStorage( prefs,
logger, creation, policy );
- return store.getPluginProfile();
+ ApplicationProfileStorage store = new ApplicationProfileStorage(
prefs, logger, creation, policy, true );
+ return store.getApplicationProfile();
}
private ApplicationProfile createTestProfile() throws ProfileException
@@ -161,7 +152,7 @@
prefs.put( "plugin", "@TEST-PLUGIN-URI@" );
prefs.put( "title", "Depot Station Test" );
prefs.putBoolean( "command", true );
- PluginProfileStorage store = new PluginProfileStorage( prefs,
logger, creation, policy );
- return store.getPluginProfile();
+ ApplicationProfileStorage store = new ApplicationProfileStorage(
prefs, logger, creation, policy, true );
+ return store.getApplicationProfile();
}
}
Modified: development/main/depot/prefs/build.xml
==============================================================================
--- development/main/depot/prefs/build.xml (original)
+++ development/main/depot/prefs/build.xml Mon Jun 13 21:51:16 2005
@@ -10,21 +10,4 @@
<x:export class="net.dpml.depot.prefs.DepotPreferencesFrame"/>
</target>
- <target name="install" depends="standard.install">
- <echo>
-#----------------------------------------------------------------------------------
-# Updating DPML DATA ${dpml.data}/lib
-#----------------------------------------------------------------------------------
- </echo>
- <property name="lib" location="${dpml.data}/lib"/>
- <mkdir dir="${lib}"/>
- <copy toDir="${lib}" preservelastmodified="true" overwrite="true">
- <fileset dir="${basedir}/target/deliverables/jars">
- <include name="${project.filename}"/>
- <include name="${project.filename}.md5"/>
- <include name="${project.filename}.asc"/>
- </fileset>
- </copy>
- </target>
-
</project>
Modified:
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotModelPanel.java
==============================================================================
---
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotModelPanel.java
(original)
+++
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotModelPanel.java
Mon Jun 13 21:51:16 2005
@@ -88,12 +88,12 @@
m_edit = new JButton( m_editAction );
m_delete = new JButton( new DeleteAction( "Delete" ) );
- JLabel label =
- IconHelper.createImageIconJLabel(
- getClass().getClassLoader(), MISC_IMG_PATH,
- "Application", "Application profiles." );
- label.setBorder( new EmptyBorder( 0, 5, 0, 0 ) );
- getHeader().addEntry( label, "Application Profile Registry", null );
+ //JLabel label =
+ // IconHelper.createImageIconJLabel(
+ // getClass().getClassLoader(), MISC_IMG_PATH,
+ // "Application", "Application profiles." );
+ //label.setBorder( new EmptyBorder( 0, 5, 0, 0 ) );
+ //getHeader().addEntry( label, "Application Profile Registry", null
);
JPanel panel = new JPanel();
panel.setBackground( Color.white );
Modified:
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotPreferencesFrame.java
==============================================================================
---
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotPreferencesFrame.java
(original)
+++
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotPreferencesFrame.java
Mon Jun 13 21:51:16 2005
@@ -38,6 +38,8 @@
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
+import net.dpml.depot.profile.DepotModel;
+
import net.dpml.transit.Transit;
import net.dpml.transit.model.TransitModel;
@@ -46,7 +48,7 @@
* Transit cache and repository settings, transit content handler plugins,
logging
* preferences and application profiles runnable via the depot command line
script.
*/
-class DepotPreferencesFrame extends JFrame
+public class DepotPreferencesFrame extends JFrame
{
/**
* The default dialog width.
@@ -73,7 +75,7 @@
*/
private static final int ZERO = 0;
- public DepotPreferencesFrame( TransitModel model ) throws Exception
+ public DepotPreferencesFrame( TransitModel model, DepotModel depot )
throws Exception
{
super();
@@ -83,7 +85,7 @@
setTitle( "DPML Depot" );
Dimension size = new Dimension( DEFAULT_DIALOG_WIDTH,
DEFAULT_DIALOG_HEIGHT );
setSize( size );
- DepotPreferencesPanel panel = new DepotPreferencesPanel( this, model
);
+ DepotPreferencesPanel panel = new DepotPreferencesPanel( this,
model, depot );
setContentPane( panel );
getRootPane().setDefaultButton( panel.getDefaultButton() );
addWindowListener(
Modified:
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotPreferencesPanel.java
==============================================================================
---
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotPreferencesPanel.java
(original)
+++
development/main/depot/prefs/src/main/net/dpml/depot/prefs/DepotPreferencesPanel.java
Mon Jun 13 21:51:16 2005
@@ -46,6 +46,8 @@
import net.dpml.transit.model.ContentRegistryModel;
import net.dpml.transit.model.ProxyModel;
+import net.dpml.depot.profile.DepotModel;
+
/**
* Panel that presents the default preferences for DPML applications
including
* Transit cache and repository settings, transit content handler plugins,
logging
@@ -80,15 +82,19 @@
private CacheModelPanel m_cachePanel;
private ContentRegistryModelPanel m_registryPanel;
private ProxyModelPanel m_proxyPanel;
+ private DepotModelPanel m_depotPanel;
private final Window m_window;
+ private final DepotModel m_depot;
- public DepotPreferencesPanel( Window window, final TransitModel model )
throws Exception
+ public DepotPreferencesPanel(
+ Window window, final TransitModel model, final DepotModel depot )
throws Exception
{
super( new BorderLayout() );
m_window = window;
m_model = model;
+ m_depot = depot;
JLabel label =
IconHelper.createImageIconJLabel(
@@ -108,6 +114,16 @@
new Runnable() {
public void run()
{
+ m_depotPanel = new DepotModelPanel( m_window, m_depot );
+ tabbedPane.addTab( "Profiles", m_depotPanel );
+ }
+ }
+ );
+
+ SwingUtilities.invokeLater(
+ new Runnable() {
+ public void run()
+ {
final CacheModel cache = m_model.getCacheModel();
final LayoutRegistryModel layouts =
cache.getLayoutRegistryModel();
m_layoutPanel = new LayoutRegistryModelPanel( m_window,
layouts );
@@ -142,7 +158,6 @@
);
//tabbedPane.addTab( "Logging", new JPanel() );
- //tabbedPane.addTab( "Profiles", new JPanel() );
//
// add the Close button
Modified:
development/main/depot/station/src/main/net/dpml/depot/station/ActivationProfile.java
==============================================================================
---
development/main/depot/station/src/main/net/dpml/depot/station/ActivationProfile.java
(original)
+++
development/main/depot/station/src/main/net/dpml/depot/station/ActivationProfile.java
Mon Jun 13 21:51:16 2005
@@ -29,7 +29,6 @@
import net.dpml.depot.profile.ProfileHome;
import net.dpml.depot.profile.ProfileException;
-import net.dpml.depot.profile.PluginProfile;
/**
* A ActivationProfile maintains information about the configuration
Modified:
development/main/depot/station/src/main/net/dpml/depot/station/ActivationStorage.java
==============================================================================
---
development/main/depot/station/src/main/net/dpml/depot/station/ActivationStorage.java
(original)
+++
development/main/depot/station/src/main/net/dpml/depot/station/ActivationStorage.java
Mon Jun 13 21:51:16 2005
@@ -29,7 +29,6 @@
import net.dpml.transit.model.Logger;
import net.dpml.transit.home.Home;
-import net.dpml.depot.profile.PluginProfile;
import net.dpml.depot.profile.ProfileException;
import net.dpml.depot.profile.ProfileStorage;
Modified:
development/main/depot/station/src/main/net/dpml/depot/station/CodeBaseStorage.java
==============================================================================
---
development/main/depot/station/src/main/net/dpml/depot/station/CodeBaseStorage.java
(original)
+++
development/main/depot/station/src/main/net/dpml/depot/station/CodeBaseStorage.java
Mon Jun 13 21:51:16 2005
@@ -29,7 +29,6 @@
import net.dpml.transit.home.Home;
import net.dpml.transit.model.Logger;
-import net.dpml.depot.profile.PluginProfile;
import net.dpml.depot.profile.ProfileException;
import net.dpml.depot.profile.ProfileStorage;
- svn commit: r2847 - in development/main/depot: console console/src/main/net/dpml/depot console/src/main/net/dpml/depot/profile prefs prefs/src/main/net/dpml/depot/prefs station/src/main/net/dpml/depot/station, mcconnell, 06/13/2005
Archive powered by MHonArc 2.6.24.