You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2009/09/05 01:37:23 UTC

svn commit: r811571 - in /felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver: Main.java felix/FelixResolver.java

Author: rickhall
Date: Fri Sep  4 23:37:22 2009
New Revision: 811571

URL: http://svn.apache.org/viewvc?rev=811571&view=rev
Log:
Made it easier to run different scenarios.

Modified:
    felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/Main.java
    felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/felix/FelixResolver.java

Modified: felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/Main.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/Main.java?rev=811571&r1=811570&r2=811571&view=diff
==============================================================================
--- felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/Main.java (original)
+++ felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/Main.java Fri Sep  4 23:37:22 2009
@@ -6,9 +6,9 @@
  *  to you 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
@@ -18,6 +18,8 @@
  */
 package org.apache.felix.resolver;
 
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -29,21 +31,33 @@
 public class Main
 {
     public static void main(String[] args)
+        throws NoSuchMethodException, IllegalAccessException,
+            IllegalArgumentException, InvocationTargetException
     {
-        List<Module> moduleList = new ArrayList<Module>();
-
-        Module module = scenario5(moduleList);
-
-        Resolver resolver;
-        if ((args.length == 1) && (args[0].equals("-legacy")))
+        if (args.length > 2)
         {
-            resolver = new FelixResolver(moduleList);
+            System.out.println("[-legacy] [scenario-number]");
+            System.exit(0);
         }
-        else
+
+        List<Module> moduleList = new ArrayList<Module>();
+        String scenario = "1";
+
+        Resolver resolver = new ProtoResolver(moduleList);
+        for (int i = 0; i < args.length; i++)
         {
-            resolver = new ProtoResolver(moduleList);
+            if (args[i].equals("-legacy"))
+            {
+                resolver = new FelixResolver(moduleList);
+            }
+            else
+            {
+                scenario = args[i];
+            }
         }
 
+        Module module = setupScenario(moduleList, scenario);
+
         try
         {
             long starttime = System.currentTimeMillis();
@@ -71,6 +85,17 @@
         }
     }
 
+    private static Module setupScenario(List<Module> moduleList, String scenario)
+        throws NoSuchMethodException, IllegalAccessException,
+            IllegalArgumentException, InvocationTargetException
+    {
+        int i = Integer.parseInt(scenario);
+        String methodName = "scenario" + i;
+        System.out.println(methodName + ":\n");
+        Method method = Main.class.getDeclaredMethod(methodName, new Class<?>[] { List.class });
+        return (Module) method.invoke(null, moduleList);
+    }
+
     // SOLUTION:
     // A: bar->B, baz->E
     // B: woz->D

Modified: felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/felix/FelixResolver.java
URL: http://svn.apache.org/viewvc/felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/felix/FelixResolver.java?rev=811571&r1=811570&r2=811571&view=diff
==============================================================================
--- felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/felix/FelixResolver.java (original)
+++ felix/sandbox/rickhall/resolver/src/main/java/org/apache/felix/resolver/felix/FelixResolver.java Fri Sep  4 23:37:22 2009
@@ -33,23 +33,21 @@
 public class FelixResolver implements Resolver
 {
     private final List<Module> m_moduleList;
-    private final Module[] m_modules;
     private final FelixResolverImpl m_resolver = new FelixResolverImpl();
     private final ResolverStateImpl m_state = new ResolverStateImpl();
 
     public FelixResolver(List<Module> moduleList)
     {
         m_moduleList = moduleList;
-        m_modules = (Module[]) moduleList.toArray(new Module[moduleList.size()]);
     }
 
     public Module getModule(String name)
     {
-        for (int i = 0; i < m_modules.length; i++)
+        for (int i = 0; i < m_moduleList.size(); i++)
         {
-            if (m_modules[i].getName().equals(name))
+            if (m_moduleList.get(i).getName().equals(name))
             {
-                return m_modules[i];
+                return m_moduleList.get(i);
             }
         }
         return null;
@@ -74,7 +72,7 @@
     {
         public Module[] getModules()
         {
-            return m_modules;
+            return (Module[]) m_moduleList.toArray(new Module[m_moduleList.size()]);
         }
 
         public PackageSource[] getResolvedCandidates(ImportedPackage req)
@@ -85,14 +83,14 @@
         public PackageSource[] getUnresolvedCandidates(ImportedPackage req)
         {
             List<PackageSource> ps = new ArrayList<PackageSource>();
-            for (int modIdx = 0; modIdx < m_modules.length; modIdx++)
+            for (int modIdx = 0; modIdx < m_moduleList.size(); modIdx++)
             {
-                List<ExportedPackage> exports = m_modules[modIdx].getExports();
+                List<ExportedPackage> exports = m_moduleList.get(modIdx).getExports();
                 for (int expIdx = 0; expIdx < exports.size(); expIdx++)
                 {
                     if (req.isSatistfiedBy(exports.get(expIdx)))
                     {
-                        ps.add(new PackageSource(m_modules[modIdx], exports.get(expIdx)));
+                        ps.add(new PackageSource(m_moduleList.get(modIdx), exports.get(expIdx)));
                     }
                 }
             }