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 19:45:10 UTC

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

Author: jdillon
Date: Fri May 23 10:45:09 2008
New Revision: 659604

URL: http://svn.apache.org/viewvc?rev=659604&view=rev
Log:
Simplify the model a bit wrt collections, accessor methods will never return null
Tidy up locators, which will act like builders

Modified:
    geronimo/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
    geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/ApplicationLocator.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/SettingsLocator.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/Application.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DependencyGroup.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/layout/GroupNode.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/plugin/Plugin.java
    geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/settings/Settings.java
    geronimo/gshell/trunk/gshell-model/src/test/java/org/apache/geronimo/gshell/model/application/ApplicationMarshallerTest.java
    geronimo/gshell/trunk/gshell-model/src/test/resources/org/apache/geronimo/gshell/model/application/application1.xml

Modified: geronimo/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java?rev=659604&r1=659603&r2=659604&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java (original)
+++ geronimo/gshell/trunk/gshell-cli/src/main/java/org/apache/geronimo/gshell/cli/Main.java Fri May 23 10:45:09 2008
@@ -254,13 +254,11 @@
             builder.setIo(io);
 
             // Find our settings descriptor
-            SettingsLocator settingsLocator = new SettingsLocator();
-            Settings settings = settingsLocator.locate();
+            Settings settings = new SettingsLocator().locate();
             builder.setSettings(settings);
 
             // Find our application descriptor
-            ApplicationLocator applicationLocator = new ApplicationLocator();
-            Application application = applicationLocator.locate();
+            Application application = new ApplicationLocator().locate();
             builder.setApplication(application);
 
             // Build the shell instance

Modified: geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/ApplicationLocator.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/ApplicationLocator.java?rev=659604&r1=659603&r2=659604&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/ApplicationLocator.java (original)
+++ geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/application/ApplicationLocator.java Fri May 23 10:45:09 2008
@@ -41,6 +41,10 @@
     // FIXME: Need to make this more robust, allow a file override/hint look in META-INF/gshell, etc.
     //
 
+    //
+    // TODO: Use builder pattern to add additonal bits to help location
+    //
+    
     public Application locate() throws Exception {
         log.debug("Locating");
 

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=659604&r1=659603&r2=659604&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 10:45:09 2008
@@ -150,12 +150,8 @@
         }
 
         // Setup remote repositories
-        List<RemoteRepository> remoteRepositories = application.remoteRepositories();
-
-        if (remoteRepositories != null) {
-            for (RemoteRepository repo : remoteRepositories) {
-                artifactManager.addRemoteRepository(repo.getId(), repo.getLocationUri());
-            }
+        for (RemoteRepository repo : application.remoteRepositories()) {
+            artifactManager.addRemoteRepository(repo.getId(), repo.getLocationUri());
         }
     }
 
@@ -207,7 +203,7 @@
         Set<Artifact> artifacts = new LinkedHashSet<Artifact>();
         List<Dependency> dependencies = application.dependencies(true); // include groups
 
-        if (dependencies != null && !dependencies.isEmpty()) {
+        if (!dependencies.isEmpty()) {
             log.debug("Application dependencies:");
 
             for (Dependency dep : dependencies) {

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=659604&r1=659603&r2=659604&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 10:45:09 2008
@@ -74,14 +74,11 @@
     private void configure(final Settings settings) throws Exception {
         assert settings != null;
 
-        List<RemoteRepository> remoteRepositories = settings.remoteRepositories();
-        
-        if (remoteRepositories != null) {
-            for (RemoteRepository repo : remoteRepositories) {
-                artifactManager.addRemoteRepository(repo.getId(), repo.getLocationUri());
-            }
+        // Setup remote repositories
+        for (RemoteRepository repo : settings.remoteRepositories()) {
+            artifactManager.addRemoteRepository(repo.getId(), repo.getLocationUri());
         }
-
+        
         // TODO: apply other artifact related settings (proxy, auth, whatever)
     }
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/SettingsLocator.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/SettingsLocator.java?rev=659604&r1=659603&r2=659604&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/SettingsLocator.java (original)
+++ geronimo/gshell/trunk/gshell-core/src/main/java/org/apache/geronimo/gshell/settings/SettingsLocator.java Fri May 23 10:45:09 2008
@@ -39,6 +39,10 @@
     // FIXME: Need to make this more robust, allow a file override/hint look in META-INF/gshell, user.home, etc.
     //
 
+    //
+    // TODO: Use builder pattern to add additonal bits to help location
+    //
+
     public Settings locate() throws Exception {
         log.debug("Locating");
 

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/Application.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/Application.java?rev=659604&r1=659603&r2=659604&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/Application.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/application/Application.java Fri May 23 10:45:09 2008
@@ -127,35 +127,31 @@
     }
 
     public List<RemoteRepository> remoteRepositories() {
+        if (remoteRepositories == null) {
+            remoteRepositories = new ArrayList<RemoteRepository>();
+        }
+
         return remoteRepositories;
     }
 
-    //
-    // TODO: Consider making accessors of collection types return non-null always to simplify usage (avoid needing that null check)
-    //
-
     public void add(final RemoteRepository repository) {
         assert repository != null;
 
-        if (remoteRepositories == null) {
-            remoteRepositories = new ArrayList<RemoteRepository>();
-        }
-
-        remoteRepositories.add(repository);
+        remoteRepositories().add(repository);
     }
 
     public List<DependencyGroup> dependencyGroups() {
+        if (dependencyGroups == null) {
+            dependencyGroups = new ArrayList<DependencyGroup>();
+        }
+
         return dependencyGroups;
     }
 
     public void add(final DependencyGroup group) {
         assert group != null;
 
-        if (dependencyGroups == null) {
-            dependencyGroups = new ArrayList<DependencyGroup>();
-        }
-
-        dependencyGroups.add(group);
+        dependencyGroups().add(group);
     }
 
     public List<Dependency> dependencies() {
@@ -163,28 +159,20 @@
     }
 
     public List<Dependency> dependencies(boolean includeGroups) {
-        if (!includeGroups) {
-            return dependencies;
+        if (dependencies == null) {
+            dependencies = new ArrayList<Dependency>();
         }
 
-        // Don't bother making a new list if we have nothing to populate it with
-        if (dependencies == null && dependencyGroups == null) {
-            return null;
+        if (!includeGroups) {
+            return dependencies;
         }
 
         List<Dependency> list = new ArrayList<Dependency>();
 
-        if (dependencies != null) {
-            list.addAll(dependencies);
-        }
-        
-        if (dependencyGroups != null) {
-            for (DependencyGroup group : dependencyGroups) {
-                List<Dependency> tmp = group.dependencies();
-                if (tmp != null) {
-                    list.addAll(tmp);
-                }
-            }
+        list.addAll(dependencies);
+
+        for (DependencyGroup group : dependencyGroups) {
+            list.addAll(group.dependencies());
         }
 
         return list;
@@ -193,11 +181,7 @@
     public void add(final Dependency dependency) {
         assert dependency != null;
 
-        if (dependencies == null) {
-            dependencies = new ArrayList<Dependency>();
-        }
-
-        dependencies.add(dependency);
+        dependencies().add(dependency);
     }
 
     public Branding getBranding() {

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DependencyGroup.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DependencyGroup.java?rev=659604&r1=659603&r2=659604&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DependencyGroup.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/common/DependencyGroup.java Fri May 23 10:45:09 2008
@@ -37,41 +37,35 @@
     @XStreamImplicit
     private List<Dependency> dependencies;
 
-    //
-    // TODO: Consider making accessors of collection types return non-null always to simplify usage (avoid needing that null check)
-    //
-    
     public List<Dependency> dependencies() {
+        if (dependencies == null) {
+            dependencies = new ArrayList<Dependency>();
+        }
+
         return dependencies;
     }
     
     public void add(final Dependency dependency) {
         assert dependency != null;
 
-        if (dependencies == null) {
-            dependencies = new ArrayList<Dependency>();
-        }
-
-        dependencies.add(dependency);
+        dependencies().add(dependency);
     }
 
     public int size() {
-        return dependencies == null ? 0 : dependencies.size();
+        return dependencies().size();
     }
     
     public boolean isEmpty() {
-        return dependencies == null || dependencies.isEmpty();
+        return dependencies().isEmpty();
     }
 
     /**
      * Link children to their parent group when deserializing.
-     *
-     * @return  Model element instance.
      */
     @SuppressWarnings({"UnusedDeclaration"})
     private Object readResolve() {
         if (!isEmpty()) {
-            for (Dependency child : dependencies) {
+            for (Dependency child : dependencies()) {
                 child.setDependencyGroup(this);
             }
         }

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/layout/GroupNode.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/layout/GroupNode.java?rev=659604&r1=659603&r2=659604&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/layout/GroupNode.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/layout/GroupNode.java Fri May 23 10:45:09 2008
@@ -24,6 +24,7 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.LinkedHashSet;
 
 /**
  * A group of nodes.
@@ -34,7 +35,7 @@
 public class GroupNode
     extends Node
 {
-    protected Set<Node> nodes = new HashSet<Node>();
+    protected Set<Node> nodes;
 
     public GroupNode(final String name) {
         super(name);
@@ -45,13 +46,13 @@
 
         child.setParent(this);
 
-        nodes.add(child);
+        nodes().add(child);
     }
 
     public Node find(final String name) {
         assert name != null;
         
-        for (Node child : nodes) {
+        for (Node child : nodes()) {
             if (name.equals(child.getName())) {
                 return child;
             }
@@ -61,15 +62,19 @@
     }
 
     public Set<Node> nodes() {
-        return Collections.unmodifiableSet(nodes);
+        if (nodes == null) {
+            nodes = new LinkedHashSet<Node>();
+        }
+
+        return nodes;
     }
 
     public int size() {
-        return nodes.size();
+        return nodes().size();
     }
 
     public boolean isEmpty() {
-        return nodes == null || nodes.isEmpty();
+        return nodes().isEmpty();
     }
     
     /**
@@ -78,7 +83,7 @@
     @SuppressWarnings({"UnusedDeclaration"})
     private Object readResolve() {
         if (!isEmpty()) {
-            for (Node child : nodes) {
+            for (Node child : nodes()) {
                 child.setParent(this);
             }
         }

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/plugin/Plugin.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/plugin/Plugin.java?rev=659604&r1=659603&r2=659604&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/plugin/Plugin.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/plugin/Plugin.java Fri May 23 10:45:09 2008
@@ -51,7 +51,7 @@
 
     private Properties properties;
     
-    private List<Dependency> dependencies = new ArrayList<Dependency>();
+    private List<Dependency> dependencies;
 
     private List<DependencyGroup> dependencyGroups = new ArrayList<DependencyGroup>();
 
@@ -91,35 +91,47 @@
         this.properties = properties;
     }
 
-    //
-    // TODO: Consider making accessors of collection types return non-null always to simplify usage (avoid needing that null check)
-    //
-    
-    public List<Dependency> dependencies() {
-        return dependencies;
+    public List<DependencyGroup> dependencyGroups() {
+        if (dependencyGroups == null) {
+            dependencyGroups = new ArrayList<DependencyGroup>();
+        }
+
+        return dependencyGroups;
     }
 
-    public void add(final Dependency dependency) {
-        assert dependency != null;
+    public void add(final DependencyGroup group) {
+        assert group != null;
 
+        dependencyGroups().add(group);
+    }
+
+    public List<Dependency> dependencies() {
+        return dependencies(false);
+    }
+
+    public List<Dependency> dependencies(boolean includeGroups) {
         if (dependencies == null) {
             dependencies = new ArrayList<Dependency>();
         }
 
-        dependencies.add(dependency);
-    }
+        if (!includeGroups) {
+            return dependencies;
+        }
 
-    public List<DependencyGroup> dependencyGroups() {
-        return dependencyGroups;
-    }
+        List<Dependency> list = new ArrayList<Dependency>();
 
-    public void add(final DependencyGroup group) {
-        assert group != null;
+        list.addAll(dependencies);
 
-        if (dependencyGroups == null) {
-            dependencyGroups = new ArrayList<DependencyGroup>();
+        for (DependencyGroup group : dependencyGroups) {
+            list.addAll(group.dependencies());
         }
 
-        dependencyGroups.add(group);
+        return list;
+    }
+
+    public void add(final Dependency dependency) {
+        assert dependency != null;
+
+        dependencies().add(dependency);
     }
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/settings/Settings.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/settings/Settings.java?rev=659604&r1=659603&r2=659604&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/settings/Settings.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/main/java/org/apache/geronimo/gshell/model/settings/Settings.java Fri May 23 10:45:09 2008
@@ -46,10 +46,6 @@
 
     // TODO: Paths
 
-    //
-    // TODO: Consider making accessors of collection types return non-null always to simplify usage (avoid needing that null check)
-    //
-    
     public Properties getProperties() {
         return properties;
     }
@@ -59,16 +55,16 @@
     }
 
     public List<RemoteRepository> remoteRepositories() {
+        if (remoteRepositories == null) {
+            remoteRepositories = new ArrayList<RemoteRepository>();
+        }
+
         return remoteRepositories;
     }
 
     public void add(final RemoteRepository repository) {
         assert repository != null;
 
-        if (remoteRepositories == null) {
-            remoteRepositories = new ArrayList<RemoteRepository>();
-        }
-
-        remoteRepositories.add(repository);
+        remoteRepositories().add(repository);
     }
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-model/src/test/java/org/apache/geronimo/gshell/model/application/ApplicationMarshallerTest.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/test/java/org/apache/geronimo/gshell/model/application/ApplicationMarshallerTest.java?rev=659604&r1=659603&r2=659604&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/test/java/org/apache/geronimo/gshell/model/application/ApplicationMarshallerTest.java (original)
+++ geronimo/gshell/trunk/gshell-model/src/test/java/org/apache/geronimo/gshell/model/application/ApplicationMarshallerTest.java Fri May 23 10:45:09 2008
@@ -86,6 +86,8 @@
 
         Application root = marshaller.unmarshal(input);
 
+        root.dependencies(true);
+        
         System.out.println(root);
     }
 
@@ -94,6 +96,8 @@
 
         Application root = marshaller.unmarshal(url);
 
+        root.dependencies(true);
+
         System.out.println(root);
     }
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-model/src/test/resources/org/apache/geronimo/gshell/model/application/application1.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-model/src/test/resources/org/apache/geronimo/gshell/model/application/application1.xml?rev=659604&r1=659603&r2=659604&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-model/src/test/resources/org/apache/geronimo/gshell/model/application/application1.xml (original)
+++ geronimo/gshell/trunk/gshell-model/src/test/resources/org/apache/geronimo/gshell/model/application/application1.xml Fri May 23 10:45:09 2008
@@ -41,6 +41,7 @@
         </remoteRepository>
     </remoteRepositories>
 
+    <!--
     <dependencies>
         <dependency>
             <groupId>a</groupId>
@@ -48,6 +49,7 @@
             <version>c</version>
         </dependency>
     </dependencies>
+    -->
 
     <dependencyGroups>
         <dependencyGroup>