You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2008/05/23 12:35:13 UTC

svn commit: r659493 - in /geronimo/gshell/trunk: gshell-core/src/main/java/org/apache/geronimo/gshell/application/ gshell-core/src/main/java/org/apache/geronimo/gshell/settings/ gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/ gshell...

Author: jdillon
Date: Fri May 23 03:35:12 2008
New Revision: 659493

URL: http://svn.apache.org/viewvc?rev=659493&view=rev
Log:
Moved config validation to config objects
Added some muck to try and guess a repos id from a uri
Update artifact API to use URI instead of URL

Modified:
    geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/ApplicationConfiguration.java
    geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/DefaultApplicationManager.java
    geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/DefaultSettingsManager.java
    geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/SettingsConfiguration.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/LocalRepository.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/RemoteRepository.java
    geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactManager.java
    geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/DefaultArtifactManager.java

Modified: geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/ApplicationConfiguration.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/ApplicationConfiguration.java?rev=659493&r1=659492&r2=659493&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/ApplicationConfiguration.java (original)
+++ geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/ApplicationConfiguration.java Fri May 23 03:35:12 2008
@@ -78,6 +78,12 @@
         this.application = application;
     }
 
+    public void validate() {
+        if (application == null) {
+            throw new IllegalStateException("Missing application configuration");
+        }    
+    }
+
     public String toString() {
         return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE);
     }

Modified: geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/DefaultApplicationManager.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/DefaultApplicationManager.java?rev=659493&r1=659492&r2=659493&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/DefaultApplicationManager.java (original)
+++ geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/DefaultApplicationManager.java Fri May 23 03:35:12 2008
@@ -21,7 +21,6 @@
 
 import org.apache.geronimo.gshell.GShell;
 import org.apache.geronimo.gshell.io.IO;
-import org.apache.geronimo.gshell.layout.LayoutManager;
 import org.apache.geronimo.gshell.artifact.ArtifactManager;
 import org.apache.geronimo.gshell.lookup.EnvironmentLookup;
 import org.apache.geronimo.gshell.lookup.IOLookup;
@@ -29,7 +28,6 @@
 import org.apache.geronimo.gshell.model.common.Dependency;
 import org.apache.geronimo.gshell.model.common.RemoteRepository;
 import org.apache.geronimo.gshell.model.common.LocalRepository;
-import org.apache.geronimo.gshell.model.layout.Layout;
 import org.apache.geronimo.gshell.plexus.GShellPlexusContainer;
 import org.apache.geronimo.gshell.shell.Environment;
 import org.apache.geronimo.gshell.shell.InteractiveShell;
@@ -102,10 +100,9 @@
         log.debug("Configuring; config: {}", config);
 
         // Validate the configuration
+        config.validate();
+
         Application application = config.getApplication();
-        if (application == null) {
-            throw new IllegalStateException("Missing application configuration");
-        }
         log.debug("Application: {}", application);
 
         // Apply artifact manager configuration settings for application
@@ -153,10 +150,7 @@
 
         if (remoteRepositories != null) {
             for (RemoteRepository repo : remoteRepositories) {
-                String loc = repo.getLocation();
-                URL url = new URL(loc);
-                String id = url.getHost(); // FIXME: Need to expose the repo id in the model, for now assume the id is the hostname
-                artifactManager.addRemoteRepository(id, url);
+                artifactManager.addRemoteRepository(repo.getId(), repo.getLocationUri());
             }
         }
     }
@@ -174,21 +168,21 @@
             realm.addURL(url);
         }
 
-        ContainerConfiguration cc = new DefaultContainerConfiguration();
-        cc.setName(application.getId());
-        cc.setClassWorld(classWorld);
-        cc.setRealm(realm);
+        ContainerConfiguration config = new DefaultContainerConfiguration();
+        config.setName(application.getId());
+        config.setClassWorld(classWorld);
+        config.setRealm(realm);
 
         // HACK: Should need these here, but for some reason components are getting instantiated in the wrong container
         //       so for now to get something working again, use the parent containers configuration set in GShellBuilder
 
         // For now use the old Command* bits to get things working, then refactor to use the new Plugin* bits
-        // cc.addComponentDiscoverer(new CommandDiscoverer());
-        // cc.addComponentDiscoveryListener(new CommandCollector());
-        // cc.addComponentDiscoverer(new PluginDiscoverer());
-        // cc.addComponentDiscoveryListener(new PluginCollector());
+        // config.addComponentDiscoverer(new CommandDiscoverer());
+        // config.addComponentDiscoveryListener(new CommandCollector());
+        // config.addComponentDiscoverer(new PluginDiscoverer());
+        // config.addComponentDiscoveryListener(new PluginCollector());
 
-        GShellPlexusContainer child = parentContainer.createChild(cc);
+        GShellPlexusContainer child = parentContainer.createChild(config);
 
         log.debug("Application container: {}", child);
 

Modified: geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/DefaultSettingsManager.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/DefaultSettingsManager.java?rev=659493&r1=659492&r2=659493&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/DefaultSettingsManager.java (original)
+++ geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/DefaultSettingsManager.java Fri May 23 03:35:12 2008
@@ -28,6 +28,7 @@
 import org.slf4j.LoggerFactory;
 
 import java.net.URL;
+import java.net.URI;
 import java.util.List;
 
 /**
@@ -59,6 +60,9 @@
 
         log.debug("Configuring; config: {}", config);
 
+        // Validate the configuration
+        config.validate();
+        
         Settings settings = config.getSettings();
         if (settings != null) {
             configure(settings);
@@ -76,10 +80,7 @@
         
         if (remoteRepositories != null) {
             for (RemoteRepository repo : remoteRepositories) {
-                String loc = repo.getLocation();
-                URL url = new URL(loc);
-                String id = url.getHost(); // FIXME: Need to expose the repo id in the model, for now assume the id is the hostname
-                artifactManager.addRemoteRepository(id, url);
+                artifactManager.addRemoteRepository(repo.getId(), repo.getLocationUri());
             }
         }
 

Modified: geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/SettingsConfiguration.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/SettingsConfiguration.java?rev=659493&r1=659492&r2=659493&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/SettingsConfiguration.java (original)
+++ geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/SettingsConfiguration.java Fri May 23 03:35:12 2008
@@ -40,6 +40,10 @@
         this.settings = settings;
     }
 
+    public void validate() {
+        // Nothing ATM
+    }
+    
     public String toString() {
         return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE);
     }

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/LocalRepository.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/LocalRepository.java?rev=659493&r1=659492&r2=659493&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/LocalRepository.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/LocalRepository.java Fri May 23 03:35:12 2008
@@ -43,10 +43,13 @@
     }
 
     public File getDirectoryFile() {
-        String path = getDirectory();
-        assert path != null;
-        
-        return new File(path);
+        String tmp = getDirectory();
+
+        if (tmp != null) {
+            return new File(tmp);
+        }
+
+        return null;
     }
 
     public void setDirectoryFile(final File directory) {

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/RemoteRepository.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/RemoteRepository.java?rev=659493&r1=659492&r2=659493&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/RemoteRepository.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/RemoteRepository.java Fri May 23 03:35:12 2008
@@ -33,8 +33,29 @@
 public class RemoteRepository
     extends ModelElement
 {
+    private String id;
+
     private String location;
 
+    public String getId() {
+        // If no id was configured, and we have a valid location, then try to figure out a reasonable ID from the URI
+        if (id == null && location != null) {
+            try {
+                // FIXME: This dosen't give too well with URI's that don't have a <host> bit, like file:
+                return getLocationUri().getHost();
+            }
+            catch (URISyntaxException e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+        return id;
+    }
+
+    public void setId(final String id) {
+        this.id = id;
+    }
+
     public String getLocation() {
         return location;
     }
@@ -45,9 +66,12 @@
 
     public URI getLocationUri() throws URISyntaxException {
         String tmp = getLocation();
-        assert tmp != null;
 
-        return new URI(tmp);
+        if (tmp != null) {
+            return new URI(tmp);
+        }
+
+        return null;
     }
 
     public void setLocationUri(final URI uri) {

Modified: geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactManager.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactManager.java?rev=659493&r1=659492&r2=659493&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactManager.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/ArtifactManager.java Fri May 23 03:35:12 2008
@@ -19,18 +19,18 @@
 
 package org.apache.geronimo.gshell.artifact;
 
-import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
-import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
-import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.UnknownRepositoryLayoutException;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.wagon.events.TransferListener;
 
-import java.util.List;
 import java.io.File;
-import java.net.URL;
 import java.net.MalformedURLException;
+import java.net.URI;
+import java.util.List;
 
 /**
  * Provides a facade over the artifact + repository subsystem.
@@ -49,8 +49,7 @@
 
     void addRemoteRepository(ArtifactRepository repository);
 
-    // TODO: Change to URI
-    void addRemoteRepository(String id, URL url) throws UnknownRepositoryLayoutException;
+    void addRemoteRepository(String id, URI location) throws MalformedURLException, UnknownRepositoryLayoutException;
 
     ArtifactFactory getArtifactFactory();
 

Modified: geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/DefaultArtifactManager.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/DefaultArtifactManager.java?rev=659493&r1=659492&r2=659493&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/DefaultArtifactManager.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact/src/main/java/org/apache/geronimo/gshell/artifact/DefaultArtifactManager.java Fri May 23 03:35:12 2008
@@ -37,7 +37,8 @@
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
-import java.net.URL;
+import java.net.MalformedURLException;
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -86,7 +87,9 @@
     public void setLocalRepository(final File dir) throws InvalidRepositoryException {
         assert dir != null;
 
-        localRepository = repositoryFactory.createLocalRepository(dir);
+        ArtifactRepository repo = repositoryFactory.createLocalRepository(dir);
+
+        setLocalRepository(repo);
     }
 
     public List<ArtifactRepository> getRemoteRepositories() {
@@ -101,18 +104,20 @@
         log.debug("Added remote repository: {}", repository);
     }
 
-    public void addRemoteRepository(final String id, final URL url) throws UnknownRepositoryLayoutException {
+    public void addRemoteRepository(final String id, final URI location) throws UnknownRepositoryLayoutException, MalformedURLException {
         assert id != null;
-        assert url != null;
+        assert location != null;
 
         ArtifactRepository repo = repositoryFactory.createArtifactRepository(
             id,
-            url.toExternalForm(),
+            location.toURL().toExternalForm(),
             ArtifactRepositoryFactory.DEFAULT_LAYOUT_ID,
+
+            // FIXME: Expose more configuration to user API
             new ArtifactRepositoryPolicy(),  // snapshots
             new ArtifactRepositoryPolicy()); // releases
         
-        remoteRepositories.add(repo);
+        addRemoteRepository(repo);
     }
 
     public ArtifactFactory getArtifactFactory() {
@@ -150,6 +155,10 @@
 
         log.debug("Resolution result: {}", result);
 
+        //
+        // TODO: Perform error/failure detection muck here, and toss a new exception with an easier interface for consuption of this information
+        //
+
         return result;
     }
 }
\ No newline at end of file