Index: ant/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/ant/manifest.mf,v retrieving revision 1.82 diff -u -r1.82 manifest.mf --- ant/manifest.mf 3 Nov 2005 15:13:48 -0000 1.82 +++ ant/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -5,8 +5,7 @@ OpenIDE-Module-Install: org/apache/tools/ant/module/AntModule.class OpenIDE-Module-Layer: org/apache/tools/ant/module/resources/AntModuleLayer.xml OpenIDE-Module-Requires: - org.openide.execution.ExecutionEngine, - org.openide.windows.IOProvider + org.openide.execution.ExecutionEngine Name: org/apache/tools/ant/module/loader/AntProjectDataLoader.class OpenIDE-Module-Class: Loader Index: ant/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/ant/nbproject/project.xml,v retrieving revision 1.31 diff -u -r1.31 project.xml --- ant/nbproject/project.xml 13 Jun 2006 12:33:07 -0000 1.31 +++ ant/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -132,7 +132,7 @@ - 1.5 + 1.11 Index: contrib/docbook/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/contrib/docbook/manifest.mf,v retrieving revision 1.6 diff -u -r1.6 manifest.mf --- contrib/docbook/manifest.mf 7 Sep 2005 20:04:27 -0000 1.6 +++ contrib/docbook/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -1,6 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.docbook -OpenIDE-Module-Requires: org.openide.windows.IOProvider OpenIDE-Module-Java-Dependencies: Java > 1.4 OpenIDE-Module-Specification-Version: 1.4 OpenIDE-Module-Layer: org/netbeans/modules/docbook/layer.xml Index: contrib/docbook/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/contrib/docbook/nbproject/project.xml,v retrieving revision 1.6 diff -u -r1.6 project.xml --- contrib/docbook/nbproject/project.xml 25 Mar 2006 16:12:21 -0000 1.6 +++ contrib/docbook/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -81,7 +81,7 @@ - 1.0 + 1.11 Index: core/bootstrap/src/org/netbeans/Module.java =================================================================== RCS file: /shared/data/ccvs/repository/core/bootstrap/src/org/netbeans/Module.java,v retrieving revision 1.15 diff -u -r1.15 Module.java --- core/bootstrap/src/org/netbeans/Module.java 22 Jun 2006 07:22:09 -0000 1.15 +++ core/bootstrap/src/org/netbeans/Module.java 29 Jun 2006 09:11:53 -0000 @@ -393,6 +393,7 @@ dependencies.addAll(Dependency.create(Dependency.TYPE_PACKAGE, pkgdeps)); // NOI18N } dependencies.addAll(Dependency.create(Dependency.TYPE_REQUIRES, attr.getValue("OpenIDE-Module-Requires"))); // NOI18N + dependencies.addAll(Dependency.create(Dependency.TYPE_NEEDS, attr.getValue("OpenIDE-Module-Needs"))); // NOI18N // Permit the concrete installer to make some changes: mgr.refineDependencies(this, dependencies); dependenciesA = dependencies.toArray(new Dependency[dependencies.size()]); Index: core/bootstrap/src/org/netbeans/ModuleManager.java =================================================================== RCS file: /shared/data/ccvs/repository/core/bootstrap/src/org/netbeans/ModuleManager.java,v retrieving revision 1.16 diff -u -r1.16 ModuleManager.java --- core/bootstrap/src/org/netbeans/ModuleManager.java 6 Jun 2006 14:41:18 -0000 1.16 +++ core/bootstrap/src/org/netbeans/ModuleManager.java 29 Jun 2006 09:11:53 -0000 @@ -1065,7 +1065,7 @@ if (! other.isEnabled()) { maybeAddToEnableList(willEnable, mightEnable, other, false); } - } else if (dep.getType() == Dependency.TYPE_REQUIRES) { + } else if (dep.getType() == Dependency.TYPE_REQUIRES || dep.getType() == Dependency.TYPE_NEEDS) { String token = dep.getName(); Set providers = providersOf.get(token); if (providers == null) throw new IllegalStateException("Should have found a provider of: " + token); // NOI18N @@ -1235,7 +1235,7 @@ // No need to scan the rest of its dependencies. break; } - } else if (dep.getType() == Dependency.TYPE_REQUIRES) { + } else if (dep.getType() == Dependency.TYPE_REQUIRES || dep.getType() == Dependency.TYPE_NEEDS) { if (m.provides(dep.getName())) { // Careful. There may be some third module still enabled which // provides this same token too. @@ -1309,10 +1309,60 @@ // where moduleProblems are used are write-mutex only and so do not have // to worry about contention. synchronized (moduleProblems) { - return _missingDependencies(probed); + Set> result; + ArrayList check = new ArrayList(); + result = _missingDependencies(probed, check); + LOOP: while (result.isEmpty()) { + for (NeedsCheck needs : check) { + String token = needs.dep.getName(); + Set providers = providersOf.get(token); + if (providers == null) { + // Nobody provides it. This dep failed. + result.add(Union2.createFirst(needs.dep)); + } else { + // We have some possible providers. Check that at least one is good. + boolean foundOne = false; + Set possibleModules = new HashSet(); + for (Module other : providers) { + if (other.isEnabled()) { + foundOne = true; + break LOOP; + } + } + if (!foundOne) { + for (Module m : providers) { + ArrayList arr = new ArrayList(); + if (!_missingDependencies(m, arr).isEmpty()) { + continue; + } + + if (!arr.isEmpty()) { + check.addAll(arr); + // restart the check + continue LOOP; + } + } + + } + } + } + break LOOP; + } + return result; + } + } + + private static class NeedsCheck { + public final Module module; + public final Dependency dep; + + public NeedsCheck(Module m, Dependency d) { + this.module = m; + this.dep = d; } } - private Set> _missingDependencies(Module probed) { + + private Set> _missingDependencies(Module probed, Collection nonOrderingCheck) { Set> probs = moduleProblems.get(probed); if (probs == null) { probs = new HashSet>(8); @@ -1382,7 +1432,7 @@ if (! other.isEnabled()) { // Need to make sure the other one is not missing anything either. // Nor that it depends (directly on indirectly) on this one. - if (! _missingDependencies(other).isEmpty()) { + if (! _missingDependencies(other, nonOrderingCheck).isEmpty()) { // This is a little subtle. Either the other module had real // problems, in which case our dependency on it is not legit. // Or, the other actually depends cyclically on this one. In @@ -1416,7 +1466,7 @@ if (other.isEnabled()) { foundOne = true; } else { - if (_missingDependencies(other).isEmpty()) { + if (_missingDependencies(other, nonOrderingCheck).isEmpty()) { // See comment above for regular module deps // re. use of PROBING_IN_PROCESS. foundOne = true; @@ -1428,6 +1478,8 @@ probs.add(Union2.createFirst(dep)); } } + } else if (dep.getType() == Dependency.TYPE_NEEDS) { + nonOrderingCheck.add(new NeedsCheck(probed, dep)); } else { assert dep.getType() == Dependency.TYPE_JAVA; // Java dependency. Fixed for whole VM session, safe to check once and keep. Index: core/execution/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/core/execution/manifest.mf,v retrieving revision 1.26 diff -u -r1.26 manifest.mf --- core/execution/manifest.mf 10 Jan 2006 18:55:57 -0000 1.26 +++ core/execution/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -4,5 +4,4 @@ OpenIDE-Module-Layer: org/netbeans/core/execution/resources/layer.xml OpenIDE-Module-Install: org/netbeans/core/execution/Install.class OpenIDE-Module-Provides: org.openide.execution.ExecutionEngine -OpenIDE-Module-Requires: org.openide.windows.IOProvider Index: core/execution/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/core/execution/nbproject/project.xml,v retrieving revision 1.10 diff -u -r1.10 project.xml --- core/execution/nbproject/project.xml 6 Jun 2006 14:41:18 -0000 1.10 +++ core/execution/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -88,7 +88,7 @@ - 1.0 + 1.11 Index: core/output/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/core/output/nbproject/project.xml,v retrieving revision 1.6 diff -u -r1.6 project.xml --- core/output/nbproject/project.xml 4 Jun 2005 05:10:57 -0000 1.6 +++ core/output/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -18,15 +18,15 @@ org.netbeans.core.output - org.openide.util + org.netbeans.lib.terminalemulator - 6.2 + 1.0 - org.openide.nodes + org.openide.actions @@ -42,7 +42,7 @@ - org.openide.dialogs + org.openide.compat @@ -50,7 +50,7 @@ - org.openide.compat + org.openide.dialogs @@ -58,15 +58,15 @@ - org.openide.options + org.openide.io - 6.2 + 1.11 - org.openide.windows + org.openide.nodes @@ -74,7 +74,7 @@ - org.openide.actions + org.openide.options @@ -82,19 +82,19 @@ - org.openide.io + org.openide.util - 1.0 + 6.2 - org.netbeans.lib.terminalemulator + org.openide.windows - 1.0 + 6.2 Index: core/output2/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/core/output2/nbproject/project.xml,v retrieving revision 1.6 diff -u -r1.6 project.xml --- core/output2/nbproject/project.xml 4 Jun 2005 05:10:58 -0000 1.6 +++ core/output2/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -18,7 +18,7 @@ org.netbeans.core.output2 - org.openide.util + org.openide.actions @@ -34,15 +34,15 @@ - org.openide.options + org.openide.io - 6.2 + 1.11 - org.openide.windows + org.openide.options @@ -50,7 +50,7 @@ - org.openide.actions + org.openide.util @@ -58,11 +58,11 @@ - org.openide.io + org.openide.windows - 1.5 + 6.2 Index: core/startup/src/org/netbeans/core/startup/AutomaticDependencies.java =================================================================== RCS file: /shared/data/ccvs/repository/core/startup/src/org/netbeans/core/startup/AutomaticDependencies.java,v retrieving revision 1.7 diff -u -r1.7 AutomaticDependencies.java --- core/startup/src/org/netbeans/core/startup/AutomaticDependencies.java 2 Jun 2006 21:49:47 -0000 1.7 +++ core/startup/src/org/netbeans/core/startup/AutomaticDependencies.java 29 Jun 2006 09:11:53 -0000 @@ -192,6 +192,9 @@ case Dependency.TYPE_REQUIRES: tokDeps.put(d.getName(), d); break; + case Dependency.TYPE_NEEDS: + tokDeps.put(d.getName(), d); + break; case Dependency.TYPE_JAVA: // ignored break; Index: core/startup/src/org/netbeans/core/startup/NbProblemDisplayer.java =================================================================== RCS file: /shared/data/ccvs/repository/core/startup/src/org/netbeans/core/startup/NbProblemDisplayer.java,v retrieving revision 1.4 diff -u -r1.4 NbProblemDisplayer.java --- core/startup/src/org/netbeans/core/startup/NbProblemDisplayer.java 3 May 2006 12:15:42 -0000 1.4 +++ core/startup/src/org/netbeans/core/startup/NbProblemDisplayer.java 29 Jun 2006 09:11:53 -0000 @@ -106,6 +106,7 @@ } } case Dependency.TYPE_REQUIRES: + case Dependency.TYPE_NEEDS: polite = (String)m.getLocalizedAttribute("OpenIDE-Module-Requires-Message"); // NOI18N if (polite != null) { return polite; Index: core/startup/test/unit/src/org/netbeans/core/startup/ModuleManagerTest.java =================================================================== RCS file: /shared/data/ccvs/repository/core/startup/test/unit/src/org/netbeans/core/startup/ModuleManagerTest.java,v retrieving revision 1.6 diff -u -r1.6 ModuleManagerTest.java --- core/startup/test/unit/src/org/netbeans/core/startup/ModuleManagerTest.java 1 Jun 2006 15:03:58 -0000 1.6 +++ core/startup/test/unit/src/org/netbeans/core/startup/ModuleManagerTest.java 29 Jun 2006 09:11:53 -0000 @@ -49,6 +49,7 @@ import org.openide.util.Lookup; import org.openide.util.LookupEvent; import org.openide.util.LookupListener; +import org.openide.util.TopologicalSortException; import org.openide.util.Utilities; /** Test the module manager as well as the Module class. @@ -1018,6 +1019,101 @@ assertEquals(4, toEnable.size()); assertTrue(toEnable.get(0) != m2); assertTrue(toEnable.get(0) != m3); + } finally { + mgr.mutexPrivileged().exitWriteAccess(); + } + } + + public void testSimpleProvNeeds() throws Exception { + doSimpleProvNeeds(false); + } + + public void testSimpleProvNeedsReversed() throws Exception { + doSimpleProvNeeds(true); + } + + private void doSimpleProvNeeds(boolean reverseOrder) throws Exception { + FakeModuleInstaller installer = new FakeModuleInstaller(); + FakeEvents ev = new FakeEvents(); + ModuleManager mgr = new ModuleManager(installer, ev); + mgr.mutexPrivileged().enterWriteAccess(); + try { + Module m1 = mgr.create(new File(jars, "prov-foo-depends-needs_foo.jar"), null, false, false, false); + Module m2 = mgr.create(new File(jars, "needs-foo.jar"), null, false, false, false); + assertEquals(Collections.singletonList("foo"), Arrays.asList(m1.getProvides())); + assertEquals(Collections.EMPTY_LIST, Arrays.asList(m2.getProvides())); + assertEquals(1, m1.getDependencies().size()); + assertEquals(Dependency.create(Dependency.TYPE_NEEDS, "foo"), m2.getDependencies()); + Map modulesByName = new HashMap(); + modulesByName.put(m1.getCodeNameBase(), m1); + modulesByName.put(m2.getCodeNameBase(), m2); + Map> providersOf = new HashMap>(); + providersOf.put("foo", Collections.singleton(m1)); + List m1m2 = Arrays.asList(new Module[] {m1, m2}); + List m2m1 = Arrays.asList(new Module[] {m2, m1}); + Map> deps = Util.moduleDependencies(m1m2, modulesByName, providersOf); + assertEquals(Collections.singletonList(m2), deps.get(m1)); +/* assertEquals(Collections.singletonList(m1), deps.get(m2)); + + try { + Utilities.topologicalSort(m1m2, deps); + } catch (TopologicalSortException ex) { + Set[] arr = ex.unsortableSets(); + assertEquals("One unsortable set", 1, arr.length); + assertEquals("It contains two elements", 2, arr[0].size()); + assertTrue("m1 is there", arr[0].contains(m1)); + assertTrue("m2 is there", arr[0].contains(m2)); + }*/ + Set m1PlusM2 = new LinkedHashSet(); + if (reverseOrder) { + m1PlusM2.add(m2); + m1PlusM2.add(m1); + } else { + m1PlusM2.add(m1); + m1PlusM2.add(m2); + } + List toEnable = mgr.simulateEnable(m1PlusM2); + assertEquals("correct result of simulateEnable", Arrays.asList(new Module[] {m2, m1}), toEnable); + toEnable = mgr.simulateEnable(Collections.singleton(m1)); + assertEquals("correct result of simulateEnable #2", Arrays.asList(new Module[] {m2, m1}), toEnable); + toEnable = mgr.simulateEnable(Collections.singleton(m2)); + assertEquals("correct result of simulateEnable #3", Arrays.asList(new Module[] {m2, m1}), toEnable); + mgr.enable(m1PlusM2); + assertEquals(Arrays.asList(new String[] { + "prepare", + "prepare", + "load" + }), installer.actions); + assertEquals(Arrays.asList(new Object[] { + m2, + m1, + Arrays.asList(new Module[] {m2, m1}) + }), installer.args); + Class testclazz = Class.forName("org.prov_foo.Clazz", true, m1.getClassLoader()); + try { + Class.forName("org.prov_foo.Clazz", true, m2.getClassLoader()); + fail("Should not be able to access classes due to prov-req deps only"); + } catch (ClassNotFoundException cnfe) { + // OK, good. + } + installer.clear(); + List toDisable = mgr.simulateDisable(Collections.singleton(m1)); + assertEquals("correct result of simulateDisable", Arrays.asList(new Module[] {m1, m2}), toDisable); + toDisable = mgr.simulateDisable(m1PlusM2); + assertEquals("correct result of simulateDisable #2", Arrays.asList(new Module[] {m1, m2}), toDisable); + mgr.disable(m1PlusM2); + assertFalse(m1.isEnabled()); + assertFalse(m2.isEnabled()); + assertEquals(Arrays.asList(new String[] { + "unload", + "dispose", + "dispose" + }), installer.actions); + assertEquals(Arrays.asList(new Object[] { + Arrays.asList(new Module[] {m1, m2}), + m1, + m2 + }), installer.args); } finally { mgr.mutexPrivileged().exitWriteAccess(); } Index: core/startup/test/unit/src/org/netbeans/core/startup/build.xml =================================================================== RCS file: /shared/data/ccvs/repository/core/startup/test/unit/src/org/netbeans/core/startup/build.xml,v retrieving revision 1.3 diff -u -r1.3 build.xml --- core/startup/test/unit/src/org/netbeans/core/startup/build.xml 16 Sep 2005 13:08:42 -0000 1.3 +++ core/startup/test/unit/src/org/netbeans/core/startup/build.xml 29 Jun 2006 09:11:53 -0000 @@ -152,6 +152,11 @@ + + + + + Index: db/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/db/manifest.mf,v retrieving revision 1.62 diff -u -r1.62 manifest.mf --- db/manifest.mf 24 Sep 2005 00:37:01 -0000 1.62 +++ db/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -3,6 +3,6 @@ OpenIDE-Module-Install: org/netbeans/modules/db/DatabaseModule.class OpenIDE-Module-Implementation-Version: 3 OpenIDE-Module-Layer: org/netbeans/modules/db/resources/mf-layer.xml -OpenIDE-Module-Requires: org.netbeans.api.javahelp.Help, org.openide.windows.IOProvider +OpenIDE-Module-Requires: org.netbeans.api.javahelp.Help OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/db/resources/Bundle.properties Index: db/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/db/nbproject/project.xml,v retrieving revision 1.13 diff -u -r1.13 project.xml --- db/nbproject/project.xml 26 Dec 2005 23:35:58 -0000 1.13 +++ db/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -72,7 +72,7 @@ - 1.7 + 1.11 Index: ide/golden/cluster-deps.txt =================================================================== RCS file: /shared/data/ccvs/repository/ide/golden/cluster-deps.txt,v retrieving revision 1.48 diff -u -r1.48 cluster-deps.txt --- ide/golden/cluster-deps.txt 13 Jun 2006 12:33:05 -0000 1.48 +++ ide/golden/cluster-deps.txt 29 Jun 2006 09:11:53 -0000 @@ -33,7 +33,6 @@ REQUIRES org.openide.text (platform) REQUIRES org.openide.util (platform) REQUIRES org.openide.windows (platform) - REQUIRES org.netbeans.core.output2/1 (platform) GROUP j2ee REQUIRES javax.jmi.model/1 (ide) REQUIRES javax.jmi.reflect/1 (ide) @@ -104,7 +103,6 @@ REQUIRES org.openide.util (platform) REQUIRES org.netbeans.modules.httpserver/2 (ide) REQUIRES org.openide.windows (platform) - REQUIRES org.netbeans.core.output2/1 (platform) GROUP nb REQUIRES org.netbeans.core.windows/2 (platform) REQUIRES org.netbeans.modules.autoupdate/1 (platform) Index: ide/golden/deps.txt =================================================================== RCS file: /shared/data/ccvs/repository/ide/golden/deps.txt,v retrieving revision 1.291 diff -u -r1.291 deps.txt --- ide/golden/deps.txt 22 Jun 2006 17:32:14 -0000 1.291 +++ ide/golden/deps.txt 29 Jun 2006 09:11:53 -0000 @@ -27,7 +27,6 @@ REQUIRES org.openide.text (platform) REQUIRES org.openide.util (platform) REQUIRES org.openide.windows (platform) - REQUIRES org.netbeans.core.output2/1 (platform) MODULE org.jdesktop.layout/1 (platform) REQUIRES org.openide.modules.ModuleFormat1 MODULE org.netbeans.api.debugger/1 (ide) @@ -113,7 +112,6 @@ REQUIRES org.openide.nodes (platform) REQUIRES org.openide.util (platform) REQUIRES org.openide.windows (platform) - REQUIRES org.netbeans.core.output2/1 (platform) MODULE org.netbeans.core.ide/1 (ide) REQUIRES org.netbeans.core/2 (platform) REQUIRES org.netbeans.core.ui/1 (platform) @@ -388,7 +386,6 @@ REQUIRES org.openide.text (platform) REQUIRES org.openide.util (platform) REQUIRES org.openide.windows (platform) - REQUIRES org.netbeans.core.output2/1 (platform) MODULE org.netbeans.modules.db/0 (ide) REQUIRES org.jdesktop.layout/1 (platform) REQUIRES org.netbeans.modules.javahelp/1 (platform) @@ -405,7 +402,6 @@ REQUIRES org.openide.options (platform) REQUIRES org.openide.util (platform) REQUIRES org.openide.windows (platform) - REQUIRES org.netbeans.core.output2/1 (platform) MODULE org.netbeans.modules.db.core (ide) REQUIRES org.netbeans.api.progress/1 (platform) REQUIRES org.netbeans.modules.db/0 (ide) @@ -1922,7 +1918,6 @@ REQUIRES org.openide.text (platform) REQUIRES org.openide.util (platform) REQUIRES org.openide.windows (platform) - REQUIRES org.netbeans.core.output2/1 (platform) REQUIRES org.openidex.util/3 (ide) MODULE org.netbeans.modules.utilities.project/1 (ide) REQUIRES org.netbeans.modules.projectapi/1 (ide) @@ -2121,7 +2116,6 @@ REQUIRES org.openide.modules.ModuleFormat1 REQUIRES org.openide.text (platform) REQUIRES org.openide.util (platform) - REQUIRES org.netbeans.core.output2/1 (platform) MODULE org.netbeans.modules.web.jstl11/1 (j2ee) REQUIRES org.netbeans.modules.web.project (j2ee) REQUIRES org.openide.modules.ModuleFormat1 @@ -2355,7 +2349,6 @@ REQUIRES org.openide.text (platform) REQUIRES org.openide.util (platform) REQUIRES org.openide.windows (platform) - REQUIRES org.netbeans.core.output2/1 (platform) MODULE org.netbeans.modules.xml.multiview/1 (j2ee) REQUIRES org.netbeans.core.multiview/1 (platform) REQUIRES org.netbeans.modules.xml.core/2 (ide) Index: openide/io/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/openide/io/manifest.mf,v retrieving revision 1.13 diff -u -r1.13 manifest.mf --- openide/io/manifest.mf 12 Dec 2005 15:40:13 -0000 1.13 +++ openide/io/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -1,5 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.openide.io -OpenIDE-Module-Specification-Version: 1.10 +OpenIDE-Module-Specification-Version: 1.11 OpenIDE-Module-Localizing-Bundle: org/openide/io/Bundle.properties +OpenIDE-Module-Needs: org.openide.windows.IOProvider Index: openide/io/api/doc/changes/changes.xml =================================================================== RCS file: /shared/data/ccvs/repository/openide/io/api/doc/changes/changes.xml,v retrieving revision 1.5 diff -u -r1.5 changes.xml --- openide/io/api/doc/changes/changes.xml 6 Sep 2005 12:26:51 -0000 1.5 +++ openide/io/api/doc/changes/changes.xml 29 Jun 2006 09:11:53 -0000 @@ -75,6 +75,25 @@ + + + No need to require IOProvider token anymore + + + + + +

If your module depends on org.openide.io > 1.11 or higher + there is no need to specify that it also requires an implementation of + the API by use of OpenIDE-Module-Requires: org.openide.windows.IOProvider, + this token will be requested automatically by the org.openide.io + module itself. +

+
+ + +
+ Added API to add actions to output's toolbar Index: openide/io/src/org/openide/windows/IOProvider.java =================================================================== RCS file: /shared/data/ccvs/repository/openide/io/src/org/openide/windows/IOProvider.java,v retrieving revision 1.7 diff -u -r1.7 IOProvider.java --- openide/io/src/org/openide/windows/IOProvider.java 18 Jul 2005 18:09:38 -0000 1.7 +++ openide/io/src/org/openide/windows/IOProvider.java 29 Jun 2006 09:11:53 -0000 @@ -39,10 +39,6 @@ * instance in lookup, a fallback instance is created which just uses the * standard system I/O streams. This is useful for unit tests and perhaps * for standalone usage of various libraries. - *

- * Assuming you want to ensure that a real output window implementation is actually - * installed and enabled, you must require the token org.openide.windows.IOProvider - * from the module calling this method. * @return the default instance (never null) */ public static IOProvider getDefault() { @@ -61,7 +57,7 @@ * the output window. Streams for reading/writing can be accessed via * getters on the returned instance. * - * @param name A localized display name for the tab + * @param name A localised display name for the tab * @param newIO if true, a new InputOutput is returned, else an existing InputOutput of the same name may be returned * @return an InputOutput instance for accessing the new tab * @see InputOutput Index: openide/modules/apichanges.xml =================================================================== RCS file: /shared/data/ccvs/repository/openide/modules/apichanges.xml,v retrieving revision 1.6 diff -u -r1.6 apichanges.xml --- openide/modules/apichanges.xml 22 Mar 2006 06:37:52 -0000 1.6 +++ openide/modules/apichanges.xml 29 Jun 2006 09:11:53 -0000 @@ -18,6 +18,22 @@ Modules API + + +

Requires/Provides and Needs + + + + + + It is possible to require some implementation using + OpenIDE-Module-Needs: token which is slightly + less restrictive than usual + OpenIDE-Module-Requires: token as + explain in the documentation. + + +
Generified Interfaces Index: openide/modules/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/openide/modules/manifest.mf,v retrieving revision 1.11 diff -u -r1.11 manifest.mf --- openide/modules/manifest.mf 22 Mar 2006 06:37:52 -0000 1.11 +++ openide/modules/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -1,5 +1,5 @@ Manifest-Version: 1.0 OpenIDE-Module: org.openide.modules OpenIDE-Module-Localizing-Bundle: org/openide/modules/Bundle.properties -OpenIDE-Module-Specification-Version: 7.0 +OpenIDE-Module-Specification-Version: 7.1 Index: openide/modules/src/org/openide/modules/Dependency.java =================================================================== RCS file: /shared/data/ccvs/repository/openide/modules/src/org/openide/modules/Dependency.java,v retrieving revision 1.5 diff -u -r1.5 Dependency.java --- openide/modules/src/org/openide/modules/Dependency.java 22 Mar 2006 06:37:52 -0000 1.5 +++ openide/modules/src/org/openide/modules/Dependency.java 29 Jun 2006 09:11:53 -0000 @@ -47,6 +47,12 @@ */ public final static int TYPE_REQUIRES = 5; + /** Dependency on a token, but without need to have token provider be initialised sooner. + * @see ModuleInfo#getProvides + * @since 7.1 + */ + public final static int TYPE_NEEDS = 6; + /** Comparison by specification version. */ public final static int COMPARE_SPEC = 1; @@ -310,6 +316,12 @@ } else if (type == Dependency.TYPE_REQUIRES) { if (comparison != Dependency.COMPARE_ANY) { throw new IllegalArgumentException("Cannot give a comparison for a token requires dep: " + body); // NOI18N + } + + checkCodeName(name, false); + } else if (type == Dependency.TYPE_NEEDS) { + if (comparison != Dependency.COMPARE_ANY) { + throw new IllegalArgumentException("Cannot give a comparison for a token needs dep: " + body); // NOI18N } checkCodeName(name, false); Index: openide/modules/src/org/openide/modules/doc-files/api.html =================================================================== RCS file: /shared/data/ccvs/repository/openide/modules/src/org/openide/modules/doc-files/api.html,v retrieving revision 1.9 diff -u -r1.9 api.html --- openide/modules/src/org/openide/modules/doc-files/api.html 21 Apr 2006 19:30:44 -0000 1.9 +++ openide/modules/src/org/openide/modules/doc-files/api.html 29 Jun 2006 09:11:53 -0000 @@ -768,7 +768,15 @@ be supplied to the lookup system, though there could be other meanings. A module may also require one or more tokens. A module which requires some tokens may only be enabled by the system if for each such token, there is at least one other -module which provides that token and is already enabled. +module which provides that token and is already enabled. + + +Since version 7.1 there is also support for OpenIDE-Module-Needs +which is a weaker version of requires as it does not impose any restriction on +the ordering of module. The OpenIDE-Module-Needs is useful for +modules that define some API and require an implementation of it. Just +specify the need for an implementation and make other modules depend +on your module and OpenIDE-Module-Provides the implementation token. Index: platform/samples/minicomposer/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/platform/samples/minicomposer/manifest.mf,v retrieving revision 1.2 diff -u -r1.2 manifest.mf --- platform/samples/minicomposer/manifest.mf 19 Jul 2005 11:59:24 -0000 1.2 +++ platform/samples/minicomposer/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -2,7 +2,7 @@ OpenIDE-Module: org.netbeans.examples.modules.minicomposer OpenIDE-Module-Localizing-Bundle: org/netbeans/examples/modules/minicomposer/resources/Bundle.properties OpenIDE-Module-Specification-Version: 1.2 -OpenIDE-Module-Requires: org.netbeans.api.javahelp.Help, org.openide.windows.IOProvider +OpenIDE-Module-Requires: org.netbeans.api.javahelp.Help OpenIDE-Module-Layer: org/netbeans/examples/modules/minicomposer/resources/layer.xml Name: org/netbeans/examples/modules/minicomposer/ScoreDataLoader.class Index: platform/samples/minicomposer/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/platform/samples/minicomposer/nbproject/project.xml,v retrieving revision 1.2 diff -u -r1.2 project.xml --- platform/samples/minicomposer/nbproject/project.xml 19 Jul 2005 11:49:59 -0000 1.2 +++ platform/samples/minicomposer/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -98,7 +98,7 @@ - 1.0 + 1.11
Index: utilities/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/utilities/manifest.mf,v retrieving revision 1.62 diff -u -r1.62 manifest.mf --- utilities/manifest.mf 12 Dec 2005 15:40:31 -0000 1.62 +++ utilities/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -4,7 +4,7 @@ OpenIDE-Module-Specification-Version: 1.22 OpenIDE-Module-Install: org/netbeans/modules/utilities/Installer.class OpenIDE-Module-Layer: org/netbeans/modules/utilities/Layer.xml -OpenIDE-Module-Requires: org.openide.windows.IOProvider, org.openide.modules.InstalledFileLocator +OpenIDE-Module-Requires: org.openide.modules.InstalledFileLocator Name: org/netbeans/modules/url/URLDataLoader.class OpenIDE-Module-Class: Loader Index: utilities/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/utilities/nbproject/project.xml,v retrieving revision 1.17 diff -u -r1.17 project.xml --- utilities/nbproject/project.xml 23 Jun 2006 20:46:51 -0000 1.17 +++ utilities/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -79,7 +79,7 @@ - 1.0 + 1.11 Index: vcscore/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/vcscore/manifest.mf,v retrieving revision 1.57 diff -u -r1.57 manifest.mf --- vcscore/manifest.mf 9 Apr 2005 16:09:04 -0000 1.57 +++ vcscore/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -3,6 +3,5 @@ OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/vcscore/Bundle.properties OpenIDE-Module-Implementation-Version: 42 OpenIDE-Module-Layer: org/netbeans/modules/vcscore/resources/mf-layer.xml -OpenIDE-Module-Requires: org.openide.windows.IOProvider OpenIDE-Module-Install: org/netbeans/modules/vcscore/VcsModule.class Index: vcscore/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/vcscore/nbproject/project.xml,v retrieving revision 1.15 diff -u -r1.15 project.xml --- vcscore/nbproject/project.xml 2 Feb 2006 15:16:30 -0000 1.15 +++ vcscore/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -18,23 +18,25 @@ org.netbeans.modules.vcscore - org.openide.filesystems + org.netbeans.modules.masterfs - 6.2 + 1 + 1.1 - org.openide.util + org.netbeans.modules.queries - 6.2 + 1 + 1.4 - org.openide.modules + org.openide.actions @@ -42,7 +44,7 @@ - org.openide.nodes + org.openide.awt @@ -50,7 +52,7 @@ - org.openide.explorer + org.openide.compat @@ -58,7 +60,7 @@ - org.openide.awt + org.openide.dialogs @@ -66,15 +68,15 @@ - org.openide.dialogs + org.openide.execution - 6.2 + 1.2 - org.openide.compat + org.openide.explorer @@ -82,7 +84,7 @@ - org.openide.options + org.openide.filesystems @@ -90,23 +92,23 @@ - org.openide.windows + org.openide.io - 6.2 + 1.11 - org.openide.text + org.openide.loaders - 6.2 + 4.11 - org.openide.actions + org.openide.modules @@ -114,53 +116,51 @@ - org.openide.execution + org.openide.nodes - 1.2 + 6.2 - org.openide.io + org.openide.options - 1.0 + 6.2 - org.openide.loaders + org.openide.text - 4.11 + 6.2 - org.openidex.util + org.openide.util - 2-3 + 6.2 - org.netbeans.modules.masterfs + org.openide.windows - 1 - 1.1 + 6.2 - org.netbeans.modules.queries + org.openidex.util - 1 - 1.4 + 2-3 Index: vcsgeneric/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/vcsgeneric/manifest.mf,v retrieving revision 1.79 diff -u -r1.79 manifest.mf --- vcsgeneric/manifest.mf 10 Aug 2005 14:44:38 -0000 1.79 +++ vcsgeneric/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -1,7 +1,7 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.modules.vcs.advanced/1 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/vcs/advanced/config/Bundle.properties -OpenIDE-Module-Requires: org.openide.windows.IOProvider, org.netbeans.modules.vcscore.javacorebridge, org.netbeans.modules.refactoring.vcs +OpenIDE-Module-Requires: org.netbeans.modules.vcscore.javacorebridge, org.netbeans.modules.refactoring.vcs OpenIDE-Module-Layer: org/netbeans/modules/vcs/advanced/config/mf-layer.xml OpenIDE-Module-Install: org/netbeans/modules/vcs/advanced/ModuleLifecycleManager.class Index: vcsgeneric/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/vcsgeneric/nbproject/project.xml,v retrieving revision 1.5 diff -u -r1.5 project.xml --- vcsgeneric/nbproject/project.xml 4 Jun 2005 05:17:07 -0000 1.5 +++ vcsgeneric/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -18,31 +18,34 @@ org.netbeans.modules.vcs.advanced - org.openide.filesystems + org.netbeans.modules.diff - 6.2 + 1 + - org.openide.util + org.netbeans.modules.queries - 6.2 + 1 + 1.3 - org.openide.modules + org.netbeans.modules.vcscore - 6.2 + 1 + - org.openide.nodes + org.openide.actions @@ -50,7 +53,7 @@ - org.openide.explorer + org.openide.awt @@ -58,7 +61,7 @@ - org.openide.awt + org.openide.compat @@ -74,7 +77,7 @@ - org.openide.compat + org.openide.explorer @@ -82,7 +85,7 @@ - org.openide.options + org.openide.filesystems @@ -90,62 +93,59 @@ - org.openide.windows + org.openide.io - 6.2 + 1.11 - org.openide.actions + org.openide.loaders - 6.2 + 4.11 - org.netbeans.modules.vcscore + org.openide.modules - 1 - + 6.2 - org.netbeans.modules.diff + org.openide.nodes - 1 - + 6.2 - org.openide.io + org.openide.options - 1.0 + 6.2 - org.openide.loaders + org.openide.util - 4.11 + 6.2 - org.netbeans.modules.queries + org.openide.windows - 1 - 1.3 + 6.2 Index: web/jspparser/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/web/jspparser/manifest.mf,v retrieving revision 1.31 diff -u -r1.31 manifest.mf --- web/jspparser/manifest.mf 12 Dec 2005 15:40:35 -0000 1.31 +++ web/jspparser/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -3,5 +3,4 @@ OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/web/jspparser/Bundle.properties OpenIDE-Module-Layer: org/netbeans/modules/web/jspparser/layer.xml OpenIDE-Module-Specification-Version: 2.6 -OpenIDE-Module-Requires: org.openide.windows.IOProvider Index: xml/core/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/xml/core/manifest.mf,v retrieving revision 1.39 diff -u -r1.39 manifest.mf --- xml/core/manifest.mf 9 Apr 2005 16:09:17 -0000 1.39 +++ xml/core/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -4,7 +4,6 @@ OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/xml/core/resources/Bundle.properties OpenIDE-Module-Install: org/netbeans/modules/xml/core/CoreModuleInstall.class OpenIDE-Module-Layer: org/netbeans/modules/xml/core/resources/mf-layer.xml -OpenIDE-Module-Requires: org.openide.windows.IOProvider Name: org/netbeans/modules/xml/core/XMLDataLoader.class OpenIDE-Module-Class: Loader Index: xml/core/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/xml/core/nbproject/project.xml,v retrieving revision 1.7 diff -u -r1.7 project.xml --- xml/core/nbproject/project.xml 26 Dec 2005 23:35:55 -0000 1.7 +++ xml/core/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -18,21 +18,24 @@ org.netbeans.modules.xml.core - org.openide.loaders + org.netbeans.api.xml - + + 1 + 1.10 + - org.openide.filesystems + org.netbeans.spi.navigator - 6.2 + 1 - org.openide.util + org.openide.actions @@ -40,7 +43,7 @@ - org.openide.modules + org.openide.awt @@ -48,7 +51,7 @@ - org.openide.nodes + org.openide.dialogs @@ -56,7 +59,7 @@ - org.openide.awt + org.openide.filesystems @@ -64,23 +67,21 @@ - org.openide.dialogs + org.openide.io - 6.2 + 1.11 - org.openide.options + org.openide.loaders - - 6.2 - + - org.openide.windows + org.openide.modules @@ -88,7 +89,7 @@ - org.openide.text + org.openide.nodes @@ -96,7 +97,7 @@ - org.openide.actions + org.openide.options @@ -104,30 +105,29 @@ - org.openide.io + org.openide.text - 1.0 + 6.2 - org.netbeans.api.xml + org.openide.util - 1 - 1.10 + 6.2 - org.netbeans.spi.navigator + org.openide.windows - 1 + 6.2 - + org.netbeans.modules.xml.api Index: xml/css/manifest.mf =================================================================== RCS file: /shared/data/ccvs/repository/xml/css/manifest.mf,v retrieving revision 1.24 diff -u -r1.24 manifest.mf --- xml/css/manifest.mf 12 Dec 2005 15:40:41 -0000 1.24 +++ xml/css/manifest.mf 29 Jun 2006 09:11:53 -0000 @@ -4,7 +4,6 @@ OpenIDE-Module-Install: org/netbeans/modules/css/CSSModuleInstall.class OpenIDE-Module-Layer: org/netbeans/modules/css/resources/mf-layer.xml OpenIDE-Module-Specification-Version: 1.12 -OpenIDE-Module-Requires: org.openide.windows.IOProvider Name: org/netbeans/modules/css/CSSLoader.class OpenIDE-Module-Class: Loader Index: xml/css/nbproject/project.xml =================================================================== RCS file: /shared/data/ccvs/repository/xml/css/nbproject/project.xml,v retrieving revision 1.4 diff -u -r1.4 project.xml --- xml/css/nbproject/project.xml 4 Jun 2005 05:17:18 -0000 1.4 +++ xml/css/nbproject/project.xml 29 Jun 2006 09:11:53 -0000 @@ -35,7 +35,7 @@ - org.openide.filesystems + org.openide.actions @@ -43,7 +43,7 @@ - org.openide.util + org.openide.awt @@ -51,7 +51,7 @@ - org.openide.modules + org.openide.filesystems @@ -59,23 +59,21 @@ - org.openide.nodes + org.openide.io - 6.2 + 1.11 - org.openide.awt + org.openide.loaders - - 6.2 - + - org.openide.options + org.openide.modules @@ -83,7 +81,7 @@ - org.openide.windows + org.openide.nodes @@ -91,7 +89,7 @@ - org.openide.text + org.openide.options @@ -99,7 +97,7 @@ - org.openide.actions + org.openide.text @@ -107,18 +105,20 @@ - org.openide.io + org.openide.util - 1.0 + 6.2 - org.openide.loaders + org.openide.windows - + + 6.2 +