Index: ant/manifest.mf =================================================================== RCS file: /cvs/ant/manifest.mf,v retrieving revision 1.41 diff -u -r1.41 manifest.mf --- ant/manifest.mf 13 Feb 2002 13:33:25 -0000 1.41 +++ ant/manifest.mf 14 Feb 2002 17:51:04 -0000 @@ -7,7 +7,7 @@ OpenIDE-Module-Layer: org/apache/tools/ant/module/resources/AntModuleLayer.xml OpenIDE-Module-Module-Dependencies: org.netbeans.modules.javahelp/1 > 1.0 OpenIDE-Module-IDE-Dependencies: IDE/1 > 2.3 -OpenIDE-Module-Package-Dependencies: [org.apache.tools.ant.Location], [org.apache.xerces.parsers.DOMParser] +OpenIDE-Module-Package-Dependencies: [org.apache.tools.ant.Location], [org.apache.xerces.parsers.DOMParser], [org.apache.xml.serialize.EncodingInfo] Class-Path: ext/ant-1.4.1.jar ext/ant-optional-1.4.1.jar Name: org/apache/tools/ant/module/loader/AntProjectDataLoader.class Index: apisupport/manifest.mf =================================================================== RCS file: /cvs/apisupport/manifest.mf,v retrieving revision 1.58 diff -u -r1.58 manifest.mf --- apisupport/manifest.mf 29 Jan 2002 14:38:12 -0000 1.58 +++ apisupport/manifest.mf 14 Feb 2002 17:51:04 -0000 @@ -6,7 +6,7 @@ OpenIDE-Module-Implementation-Version: @BUILD_NUMBER_SUBST@ OpenIDE-Module-Module-Dependencies: org.netbeans.modules.apisupport.lite/1 > 0.1, org.netbeans.modules.jarpackager/2 > 1.8, org.netbeans.modules.javahelp/1 > 1.0 OpenIDE-Module-IDE-Dependencies: IDE/1 > 2.3 -OpenIDE-Module-Package-Dependencies: [org.apache.xerces.parsers.DOMParser] +OpenIDE-Module-Package-Dependencies: [org.apache.xerces.parsers.DOMParser], [org.apache.xml.serialize.EncodingInfo] Class-Path: docs/apisupport-manual.zip Name: org/netbeans/modules/apisupport/ManifestDataLoader.class Index: corba/manifest.mf =================================================================== RCS file: /cvs/corba/manifest.mf,v retrieving revision 1.41 diff -u -r1.41 manifest.mf --- corba/manifest.mf 29 Nov 2001 15:56:56 -0000 1.41 +++ corba/manifest.mf 14 Feb 2002 17:51:07 -0000 @@ -6,6 +6,7 @@ OpenIDE-Module-Implementation-Version: @BUILD_NUMBER_SUBST@ OpenIDE-Module-Module-Dependencies: org.netbeans.modules.java/1 OpenIDE-Module-IDE-Dependencies: IDE/1 > 1.24 +OpenIDE-Module-Package-Dependencies: org.apache.regexp[RE] Class-Path: docs/corba.jar Name: org/netbeans/modules/corba/IDLDataLoader.class Index: core/src/org/netbeans/core/modules/Module.java =================================================================== RCS file: /cvs/core/src/org/netbeans/core/modules/Module.java,v retrieving revision 1.20 diff -u -r1.20 Module.java --- core/src/org/netbeans/core/modules/Module.java 14 Feb 2002 11:35:36 -0000 1.20 +++ core/src/org/netbeans/core/modules/Module.java 14 Feb 2002 17:51:13 -0000 @@ -849,6 +849,7 @@ protected PermissionCollection getPermissions(CodeSource cs) { return getAllPermission(); } + /** look for JNI libraries also in modules/bin/ */ protected String findLibrary(String libname) { String mapped = System.mapLibraryName(libname); @@ -859,6 +860,20 @@ return null; } } + + protected boolean shouldDelegateResource(String pkg, ClassLoader parent) { + if (!super.shouldDelegateResource(pkg, parent)) { + return false; + } + Module other; + if (parent instanceof Util.ModuleProvider) { + other = ((Util.ModuleProvider)parent).getModule(); + } else { + other = null; + } + return mgr.shouldDelegateResource(Module.this, other, pkg); + } + public String toString() { return super.toString() + "[" + getCodeNameBase() + "]"; // NOI18N } Index: core/src/org/netbeans/core/modules/ModuleInstaller.java =================================================================== RCS file: /cvs/core/src/org/netbeans/core/modules/ModuleInstaller.java,v retrieving revision 1.3 diff -u -r1.3 ModuleInstaller.java --- core/src/org/netbeans/core/modules/ModuleInstaller.java 22 Jan 2002 13:45:23 -0000 1.3 +++ core/src/org/netbeans/core/modules/ModuleInstaller.java 14 Feb 2002 17:51:13 -0000 @@ -92,8 +92,29 @@ * getDependencies on this module nor attempt to directly change it * in any way; overriders may ask for module code name, version, etc. * @param dependencies a set of Dependency's; mutable, entries may be added or removed + * during the dynamic scope of this call * @since org.netbeans.core/1 1.2 */ public void refineDependencies(Module m, Set dependencies) {} + /** Optionally mask package use in a module classloader. + * For example, an installer might decide that a given module may not + * use a given package from another module because that package is not + * intended to be publically exposed. Or that a module may not use a + * package in the application classpath because it is an unguaranteed + * implementation package and the module has not explicitly requested + * to use it. + * @param m the module requesting use of a given package + * @param parent the module which might possibly supply that package, or + * null if the possible provider is not a module (i.e. application + * classpath) + * @param pkg the name of the package in use, in the form "org/netbeans/modules/foo/" + * (i.e. slash-separated and ending in a slash as well) + * The default implementation always approves delegation. + * @since org.netbeans.core/1 1.3 + */ + public boolean shouldDelegateResource(Module m, Module parent, String pkg) { + return true; + } + } Index: core/src/org/netbeans/core/modules/ModuleManager.java =================================================================== RCS file: /cvs/core/src/org/netbeans/core/modules/ModuleManager.java,v retrieving revision 1.21 diff -u -r1.21 ModuleManager.java --- core/src/org/netbeans/core/modules/ModuleManager.java 13 Feb 2002 13:39:34 -0000 1.21 +++ core/src/org/netbeans/core/modules/ModuleManager.java 14 Feb 2002 17:51:15 -0000 @@ -324,6 +324,18 @@ void refineDependencies(Module m, Set dependencies) { installer.refineDependencies(m, dependencies); } + /** Use by OneModuleClassLoader to communicate with the ModuleInstaller re. masking. */ + boolean shouldDelegateResource(Module m, Module parent, String pkg) { + boolean r = installer.shouldDelegateResource(m, parent, pkg); + if (!r && Util.err.isLoggable(ErrorManager.INFORMATIONAL)) { + // Note that this is usually harmless. Typical case: Introspector.getBeanInfo + // is called on some module-supplied class; this looks in the module's classloader + // for org.netbeans.beaninfo.ModuleClassBeanInfo, which of course would not be + // found anyway. + Util.err.log("Refusing to load " + pkg + " for " + m + " from parent module " + parent); + } + return r; + } private void subCreate(Module m) throws DuplicateException { Util.err.log("created: " + m); Index: core/src/org/netbeans/core/modules/ModuleSystem.java =================================================================== RCS file: /cvs/core/src/org/netbeans/core/modules/ModuleSystem.java,v retrieving revision 1.15 diff -u -r1.15 ModuleSystem.java --- core/src/org/netbeans/core/modules/ModuleSystem.java 29 Jan 2002 14:38:13 -0000 1.15 +++ core/src/org/netbeans/core/modules/ModuleSystem.java 14 Feb 2002 17:51:16 -0000 @@ -100,6 +100,7 @@ } list = new ModuleList(mgr, modulesFolder, scandirs, ev); ((NbInstaller)installer).registerList(list); + ((NbInstaller)installer).registerManager(mgr); } ev.log(Events.CREATED_MODULE_SYSTEM); } Index: core/src/org/netbeans/core/modules/NbInstaller.java =================================================================== RCS file: /cvs/core/src/org/netbeans/core/modules/NbInstaller.java,v retrieving revision 1.26 diff -u -r1.26 NbInstaller.java --- core/src/org/netbeans/core/modules/NbInstaller.java 11 Feb 2002 12:24:19 -0000 1.26 +++ core/src/org/netbeans/core/modules/NbInstaller.java 14 Feb 2002 17:51:31 -0000 @@ -57,6 +57,10 @@ private final Events ev; /** associated controller of module list; needed for handling ModuleInstall ser */ private ModuleList moduleList; + /** associated manager */ + private ModuleManager mgr; + /** set of permitted core or package dependencies from a module */ + private final Map kosherPackages = new HashMap(100); // Map> public NbInstaller(Events ev) { this.ev = ev; @@ -67,6 +71,10 @@ if (moduleList != null) throw new IllegalStateException(); moduleList = list; } + void registerManager(ModuleManager manager) { + if (mgr != null) throw new IllegalStateException(); + mgr = manager; + } public void prepare(Module m) throws InvalidException { ev.log(Events.PREPARE, m); @@ -176,6 +184,7 @@ installs.remove(m); layers.remove(m); helpsets.remove(m); + kosherPackages.remove(m); } public void load(List modules) { @@ -674,6 +683,115 @@ "org.netbeans.api.javahelp.Help")); // NOI18N } } + } + + // Cf. #19621, #19622 + public boolean shouldDelegateResource(Module m, Module parent, String pkg) { + // XXX implement #19621: support OpenIDE-Module-Public-Packages + if (pkg.startsWith("META-INF/")) { // NOI18N + // Modules should not make direct reference to metainfo dirs of + // other modules. + return false; + } + if (parent == null) { + // Application classpath checks. + if (m.getCodeNameBase().equals("org.netbeans.modules.icebrowser") && // NOI18N + pkg.equals("org/w3c/dom/events/")) { // NOI18N + // XXX delete this clause later. Currently ICE browser JAR includes a copy + // of many XML classes, including two classes in org.w3c.dom.events + // (MouseEvent & UIEvent) which are not in Xerces for some reason. + // This is a temporary workaround to permit these two classes to be loaded + // by the ICE browser even though there is package skew going on. + // When dom.jar is created and added to the classpath, it will include + // the full DOM API including these classes and org.w3c.dom.views. + return false; + } + for (int i = 0; i < CLASSPATH_PACKAGES.length; i++) { + if (pkg.startsWith(CLASSPATH_PACKAGES[i]) && + !findKosher(m).contains(CLASSPATH_PACKAGES[i])) { + // Undeclared use of a classpath package. Refuse it. + return false; + } + } + } + return true; + } + + private static final String[] CLASSPATH_PACKAGES = new String[] { + // core.jar, various portions + // XXX when platform_feb_2002 is merged, this can be made more precise + // (and when core submodules are autoloads not on the classpath, those + // package prefixes can simply be deleted) + "org/netbeans/core/", // NOI18N + "org/netbeans/beaninfo/", // NOI18N + // terminalemulator.jar + "org/netbeans/lib/terminalemulator/", // NOI18N + // regexp.jar + "org/apache/regexp/", // NOI18N + // crimson.jar + // Note that under JDK 1.4 this might be in the JRE bootclasspath too. + // Tough luck - a module should not be using undocumented rt.jar classes anyway. + "org/apache/crimson/", // NOI18N + // xerces.jar - parser impl + "org/apache/xerces/", // NOI18N + // xerces.jar - serializer library + "org/apache/xml/serialize/", // NOI18N + }; + + private Set/**/ findKosher(Module m) { + Set s = (Set)kosherPackages.get(m); + if (s == null) { + s = new HashSet(); // Set + Dependency[] deps = m.getDependenciesArray(); + for (int i = 0; i < deps.length; i++) { + // Extend this for other classpath modules: + if (deps[i].getType() == Dependency.TYPE_MODULE && + deps[i].getName().equals("org.netbeans.core/1")) { // NOI18N + // Legitimate in some cases, e.g. apisupport or autoupdate. + s.add("org/netbeans/core/"); // NOI18N + s.add("org/netbeans/beaninfo/"); // NOI18N + } else if (deps[i].getType() == Dependency.TYPE_MODULE) { + // Module dependency. If a package was kosher for A and B depends + // on A, we let B use it undeclared. Cf. javacvs -> vcscore & RE. + String name = deps[i].getName(); + int idx = name.indexOf('/'); + if (idx != -1) { + name = name.substring(0, idx); + } + Module other = mgr.get(name); + if (other == null) throw new IllegalStateException("Should have found dep " + deps[i] + " from " + m); // NOI18N + s.addAll(findKosher(other)); + } else if (deps[i].getType() == Dependency.TYPE_PACKAGE) { + String depname = deps[i].getName(); + String req; + int idx = depname.indexOf('['); // NOI18N + if (idx == -1) { + // depname = org.apache.xerces.parsers + // req = org/apache/xerces/parsers/ + req = depname.replace('.', '/').concat("/"); // NOI18N + } else if (idx == 0) { + // depname = [org.apache.xerces.parsers.DOMParser] + // req = org/apache/xerces/parsers/ + int idx2 = depname.lastIndexOf('.'); + req = depname.substring(1, idx2).replace('.', '/').concat("/"); // NOI18N + } else { + // depname = org.apache.xerces.parsers[DOMParser] + // req = org/apache/xerces/parsers/ + req = depname.substring(0, idx).replace('.', '/').concat("/"); // NOI18N + } + for (int j = 0; j < CLASSPATH_PACKAGES.length; j++) { + if (req.startsWith(CLASSPATH_PACKAGES[j])) { + // Module requested this exact package or some subpackage or + // a class in one of these packages; it is kosher. + s.add(CLASSPATH_PACKAGES[j]); + } + } + } + } + if (s.isEmpty()) s = Collections.EMPTY_SET; + kosherPackages.put(m, s); + } + return s; } } Index: core/src/org/netbeans/core/modules/ProxyClassLoader.java =================================================================== RCS file: /cvs/core/src/org/netbeans/core/modules/ProxyClassLoader.java,v retrieving revision 1.9 diff -u -r1.9 ProxyClassLoader.java --- core/src/org/netbeans/core/modules/ProxyClassLoader.java 5 Feb 2002 12:34:30 -0000 1.9 +++ core/src/org/netbeans/core/modules/ProxyClassLoader.java 14 Feb 2002 17:51:32 -0000 @@ -18,8 +18,7 @@ import java.io.IOException; import org.openide.ErrorManager; import org.openide.util.WeakSet; -import org.openide.util.enum.ArrayEnumeration; -import org.openide.util.enum.SequenceEnumeration; +import org.openide.util.enum.*; /** * A class loader that has multiple parents and uses them for loading @@ -34,6 +33,7 @@ public class ProxyClassLoader extends ClassLoader { // Map + // packages are given in format "org/netbeans/modules/foo/" private final Map domainsByPackage = new HashMap(); // Map private HashMap packages = new HashMap(); @@ -116,9 +116,12 @@ protected synchronized final Class loadClass(String name, boolean resolve) throws ClassNotFoundException { zombieCheck(name); - final int dotIdx = name.lastIndexOf('.'); - if (dotIdx == -1) throw new ClassNotFoundException("Will not load classes from default package"); // NOI18N - Class c = smartLoadClass(name, dotIdx); + // XXX this section is a candidate for local optimization: + String filename = name.replace('.', '/').concat(".class"); // NOI18N + int idx = filename.lastIndexOf('/'); // NOI18N + if (idx == -1) throw new ClassNotFoundException("Will not load classes from default package"); // NOI18N + String pkg = filename.substring(0, idx + 1); // "org/netbeans/modules/foo/" + Class c = smartLoadClass(name, filename, pkg); if(c == null) throw new ClassNotFoundException(name); if (resolve) resolveClass(c); return c; @@ -160,9 +163,14 @@ public final URL getResource(final String name) { zombieCheck(name); - if (isSpecialResource(name)) { + final int slashIdx = name.lastIndexOf('/'); + if (slashIdx == -1) return null; // won't load from the default package + final String pkg = name.substring(0, slashIdx + 1); + + if (isSpecialResource(pkg)) { // Disable domain cache for this one, do a simple check. for (int i = 0; i < parents.length; i++) { + if (!shouldDelegateResource(pkg, parents[i])) continue; URL u; if (parents[i] instanceof ProxyClassLoader) { u = ((ProxyClassLoader)parents[i]).findResource(name); @@ -174,12 +182,10 @@ return findResource(name); } - final int slashIdx = name.lastIndexOf('/'); - if (slashIdx == -1) return null; // won't load from the default package - final String pkg = name.substring(0, slashIdx); ClassLoader owner = (ClassLoader)domainsByPackage.get(pkg); if (owner != null) { // known package + // Note that shouldDelegateResource should already be true for this! if (owner instanceof ProxyClassLoader) { return ((ProxyClassLoader)owner).findResource(name); // we have its parents, skip them } else { @@ -191,13 +197,13 @@ URL retVal = null; for (int i = 0; i < parents.length; i++) { owner = parents[i]; + if (!shouldDelegateResource(pkg, owner)) continue; if (owner instanceof ProxyClassLoader) { retVal = ((ProxyClassLoader)owner).findResource(name); // skip parents (checked already) } else { retVal = owner.getResource(name); // know nothing about this loader and his structure } if (retVal != null) { - domainsByPackage.put(pkg.replace('/', '.'), owner); domainsByPackage.put(pkg, owner); return retVal; } @@ -206,7 +212,6 @@ // try it ourself retVal = findResource(name); if (retVal != null) { - domainsByPackage.put(pkg.replace('/', '.'), this); domainsByPackage.put(pkg, this); } return retVal; @@ -235,10 +240,18 @@ */ protected final synchronized Enumeration findResources(String name) throws IOException { zombieCheck(name); + final int slashIdx = name.lastIndexOf('/'); + if (slashIdx == -1) return EmptyEnumeration.EMPTY; // won't load from the default package + final String pkg = name.substring(0, slashIdx + 1); + // Don't bother optimizing this call by domains. // It is mostly used for resources for which isSpecialResource would be true anyway. Enumeration[] es = new Enumeration[parents.length + 1]; for (int i = 0; i < parents.length; i++) { + if (!shouldDelegateResource(pkg, parents[i])) { + es[i] = EmptyEnumeration.EMPTY; + continue; + } if (parents[i] instanceof ProxyClassLoader) { es[i] = ((ProxyClassLoader)parents[i]).simpleFindResources(name); } else { @@ -276,13 +289,18 @@ */ protected Package getPackage(String name) { zombieCheck(name); + + int idx = name.lastIndexOf('.'); + if (idx == -1) return null; + String spkg = name.substring(0, idx + 1).replace('.', '/'); + synchronized (packages) { Package pkg = (Package)packages.get(name); if (pkg != null) return pkg; for (int i = 0; i < parents.length; i++) { ClassLoader par = parents[i]; - if (par instanceof ProxyClassLoader) { + if (par instanceof ProxyClassLoader && shouldDelegateResource(spkg, par)) { pkg = ((ProxyClassLoader)par).getPackage(name); if(pkg != null) break; } @@ -322,6 +340,7 @@ for (int i = 0; i < parents.length; i++) { ClassLoader par = parents[i]; if (par instanceof ProxyClassLoader) { + // XXX should ideally use shouldDelegateResource here... addPackages(all, ((ProxyClassLoader)par).getPackages()); } } @@ -404,26 +423,25 @@ /** A method that finds a class either in itself or in parents. * It uses dual signaling for class not found: it can either return null * or throw CNFE itself. - * + * @param name class name, e.g. "org.netbeans.modules.foo.Clazz" + * @param fileName resource name, e.g. "org/netbeans/modules/foo/Clazz.class" + * @param pkg package component, e.g. "org/netbeans/modules/foo/" * @return a class or null if not found. It can also throw an exception. * @throws ClassNotFoundException in case it doesn't found a class * and a parent eglible for loading it thrown it already. */ - private final Class smartLoadClass(String name, final int dotIdx) throws ClassNotFoundException { + private final Class smartLoadClass(String name, String fileName, String pkg) throws ClassNotFoundException { // First, check if the class has already been loaded Class c = findLoadedClass(name); if(c != null) return c; - // next check the package caches - final String pkg = name.substring(0, dotIdx); - String fileName = name.replace('.', '/').concat(".class"); // NOI18N - - final ClassLoader owner = isSpecialResource(fileName) ? null : (ClassLoader)domainsByPackage.get(pkg); - if (owner != null) { + final ClassLoader owner = isSpecialResource(pkg) ? null : (ClassLoader)domainsByPackage.get(pkg); + if (owner == this) { + return simpleFindClass(name,fileName); + } + if (owner != null) { + // Note that shouldDelegateResource should already be true as we hit this pkg before. if (owner instanceof ProxyClassLoader) { - if(owner == this) { - return simpleFindClass(name,fileName); - } return ((ProxyClassLoader)owner).fullFindClass(name,fileName); } else { return owner.loadClass(name); // May throw CNFE, will be propagated @@ -431,21 +449,21 @@ } // Virgin package, do the parent scan - c = loadInOrder(name,fileName); + c = loadInOrder(name, fileName, pkg); if (c != null) { final ClassLoader owner2 = c.getClassLoader(); // who got it? domainsByPackage.put(pkg, owner2); - domainsByPackage.put(pkg.replace('.', '/'), owner2); } return c; } - private final Class loadInOrder( String name, String fileName ) throws ClassNotFoundException { + private final Class loadInOrder( String name, String fileName, String pkg ) throws ClassNotFoundException { ClassNotFoundException cached = null; for (int i = 0; i < parents.length; i++) { ClassLoader par = parents[i]; + if (!shouldDelegateResource(pkg, par)) continue; if (par instanceof ProxyClassLoader) { Class c = ((ProxyClassLoader)par).fullFindClass(name,fileName); if (c != null) return c; @@ -478,18 +496,32 @@ /** Test whether a given resource name is something that any JAR might * have, and for which the domain cache should be disabled. - * @param the tested resource name + * The result must not change from one call to the next with the same argument. + * By default the domain cache is disabled only for META-INF/* JAR information. + * @param pkg the package component of the resource path ending with a slash, + * e.g. "org/netbeans/modules/foo/" * @return true if it is a special resource, false for normal domain-cached resource + * @since org.netbeans.core/1 1.3 */ - protected boolean isSpecialResource(String name) { - if (name.startsWith("META-INF/")) return true; // NOI18N - // XXX fix later! - // Currently ICE browser JAR includes a copy of many XML classes, including - // two classes in org.w3c.dom.events which are not in Xerces for some reason. - // This is a temporary workaround to permit these two classes to be loaded - // by the ICE browser even though there is package skew going on. - if (name.startsWith("org/w3c/dom/events/")) return true; // NOI18N + protected boolean isSpecialResource(String pkg) { + if (pkg.startsWith("META-INF/")) return true; // NOI18N return false; + } + + /** Test whether a given resource request (for a class or not) should be + * searched for in the specified parent classloader or not. + * The result must not change from one call to the next with the same arguments. + * By default, always true. Subclasses may override to "mask" certain + * packages from view, possibly according to the classloader chain. + * @param pkg the package component of the resource path ending with a slash, + * e.g. "org/netbeans/modules/foo/" + * @param parent a classloader which is a direct or indirect parent of this one + * @return true if the request should be delegated to this parent; false to + * only search elsewhere (other parents, this loader's own namespace) + * @since org.netbeans.core/1 1.3 + */ + protected boolean shouldDelegateResource(String pkg, ClassLoader parent) { + return true; } } Index: debuggercore/src/org/netbeans/modules/debugger/support/nodes/DebuggerWindow.java =================================================================== RCS file: /cvs/debuggercore/src/org/netbeans/modules/debugger/support/nodes/DebuggerWindow.java,v retrieving revision 1.25 diff -u -r1.25 DebuggerWindow.java --- debuggercore/src/org/netbeans/modules/debugger/support/nodes/DebuggerWindow.java 6 Feb 2002 21:25:56 -0000 1.25 +++ debuggercore/src/org/netbeans/modules/debugger/support/nodes/DebuggerWindow.java 14 Feb 2002 17:51:51 -0000 @@ -119,9 +119,12 @@ cListener = new CListener (); setName (DebuggerNode.getLocalizedString ("CTL_Debugger_Window")); // NOI18N setToolTipText(DebuggerNode.getLocalizedString ("CTL_Debugger_Window")); // NOI18N - setIcon (new ImageIcon (DebuggerWindow.class.getResource ( - "/org/netbeans/core/resources/debuggerView.gif" // NOI18N - )).getImage ()); + try { + // XXX do not use core resources! must move to module + setIcon (new ImageIcon (new java.net.URL("nbresboot:/org/netbeans/core/resources/debuggerView.gif")).getImage ()); + } catch (java.net.MalformedURLException mfue) { + mfue.printStackTrace(); + } GUIManager.getDefault ().addPropertyChangeListener ( new GUIManagerListener (this) ); Index: editor/manifest.mf =================================================================== RCS file: /cvs/editor/manifest.mf,v retrieving revision 1.42 diff -u -r1.42 manifest.mf --- editor/manifest.mf 29 Nov 2001 15:56:54 -0000 1.42 +++ editor/manifest.mf 14 Feb 2002 17:51:52 -0000 @@ -5,6 +5,7 @@ OpenIDE-Module-Implementation-Version: @BUILD_NUMBER_SUBST@ OpenIDE-Module-Layer: org/netbeans/modules/editor/resources/layer.xml OpenIDE-Module-IDE-Dependencies: IDE/1 > 1.24 +OpenIDE-Module-Module-Dependencies: org.netbeans.core/1 > 1.0 Class-Path: ext/nb-editor.jar Name: org/netbeans/modules/editor/java/JCUpdateAction.class Index: externaleditor/manifest.mf =================================================================== RCS file: /cvs/externaleditor/manifest.mf,v retrieving revision 1.10 diff -u -r1.10 manifest.mf --- externaleditor/manifest.mf 1 Dec 2001 04:09:06 -0000 1.10 +++ externaleditor/manifest.mf 14 Feb 2002 17:51:54 -0000 @@ -4,5 +4,5 @@ OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/externaleditor/Bundle.properties OpenIDE-Module-Install: org/netbeans/modules/externaleditor/ExtEdModule.class OpenIDE-Module-IDE-Dependencies: IDE/1 > 1.33 -OpenIDE-Module-Module-Dependencies: org.netbeans.modules.editor/1 +OpenIDE-Module-Module-Dependencies: org.netbeans.modules.editor/1, org.netbeans.core/1 > 1.0 OpenIDE-Module-Layer: org/netbeans/modules/externaleditor/resources/mf-layer.xml Index: form/manifest.mf =================================================================== RCS file: /cvs/form/manifest.mf,v retrieving revision 1.46 diff -u -r1.46 manifest.mf --- form/manifest.mf 29 Nov 2001 15:56:54 -0000 1.46 +++ form/manifest.mf 14 Feb 2002 17:52:20 -0000 @@ -4,7 +4,7 @@ OpenIDE-Module-Implementation-Version: @BUILD_NUMBER_SUBST@ OpenIDE-Module-Install: org/netbeans/modules/form/FormEditorModule.class OpenIDE-Module-IDE-Dependencies: IDE/1 > 1.24 -OpenIDE-Module-Module-Dependencies: org.netbeans.modules.java/1 +OpenIDE-Module-Module-Dependencies: org.netbeans.modules.java/1, org.netbeans.core/1 > 1.0 OpenIDE-Module-Layer: org/netbeans/modules/form/resources/layer.xml Class-Path: ext/AbsoluteLayout.jar Index: i18n/manifest.mf =================================================================== RCS file: /cvs/i18n/manifest.mf,v retrieving revision 1.44 diff -u -r1.44 manifest.mf --- i18n/manifest.mf 29 Nov 2001 15:56:55 -0000 1.44 +++ i18n/manifest.mf 14 Feb 2002 17:52:22 -0000 @@ -1,7 +1,7 @@ OpenIDE-Module: org.netbeans.modules.i18n/1 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/i18n/Bundle.properties OpenIDE-Module-IDE-Dependencies: IDE/1 > 1.24 -OpenIDE-Module-Module-Dependencies: org.netbeans.modules.properties/1 +OpenIDE-Module-Module-Dependencies: org.netbeans.modules.properties/1, org.netbeans.core/1 > 1.0 OpenIDE-Module-Specification-Version: 1.10 OpenIDE-Module-Implementation-Version: @BUILD_NUMBER_SUBST@ OpenIDE-Module-Layer: org/netbeans/modules/i18n/Layer.xml Index: jarpackager/manifest.mf =================================================================== RCS file: /cvs/jarpackager/manifest.mf,v retrieving revision 1.45 diff -u -r1.45 manifest.mf --- jarpackager/manifest.mf 29 Nov 2001 15:56:55 -0000 1.45 +++ jarpackager/manifest.mf 14 Feb 2002 17:52:23 -0000 @@ -2,6 +2,7 @@ OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/jarpackager/Bundle.properties OpenIDE-Module-Display-Category: Tools OpenIDE-Module-IDE-Dependencies: IDE/1 > 1.31 +OpenIDE-Module-Package-Dependencies: org.apache.regexp[RE] OpenIDE-Module-Specification-Version: 1.10 OpenIDE-Module-Implementation-Version: @BUILD_NUMBER_SUBST@ OpenIDE-Module-Layer: org/netbeans/modules/jarpackager/resources/mf-layer.xml Index: java/manifest.mf =================================================================== RCS file: /cvs/java/manifest.mf,v retrieving revision 1.51 diff -u -r1.51 manifest.mf --- java/manifest.mf 29 Nov 2001 15:56:55 -0000 1.51 +++ java/manifest.mf 14 Feb 2002 17:52:23 -0000 @@ -5,7 +5,7 @@ OpenIDE-Module-IDE-Dependencies: IDE/1 > 1.24 OpenIDE-Module-Specification-Version: 1.8 OpenIDE-Module-Implementation-Version: @BUILD_NUMBER_SUBST@ -OpenIDE-Module-Package-Dependencies: [org.netbeans.modules.java.gj.JavaCompilerType], [org.netbeans.lib.javac.Main] +OpenIDE-Module-Package-Dependencies: [org.netbeans.modules.java.gj.JavaCompilerType], [org.netbeans.lib.javac.Main], org.apache.regexp[RE] Class-Path: ext/javac.jar ext/java-gj.jar Name: org/netbeans/modules/java/JavaDataLoader.class Index: objectbrowser/manifest.mf =================================================================== RCS file: /cvs/objectbrowser/manifest.mf,v retrieving revision 1.41 diff -u -r1.41 manifest.mf --- objectbrowser/manifest.mf 29 Nov 2001 15:56:55 -0000 1.41 +++ objectbrowser/manifest.mf 14 Feb 2002 17:52:59 -0000 @@ -4,7 +4,7 @@ OpenIDE-Module-Specification-Version: 1.8 OpenIDE-Module-Implementation-Version: @BUILD_NUMBER_SUBST@ OpenIDE-Module-Layer: org/netbeans/modules/objectbrowser/resources/mf-layer.xml -OpenIDE-Module-Package-Dependencies: [javax.infobus.InfoBus] +OpenIDE-Module-Package-Dependencies: [javax.infobus.InfoBus], org.apache.regexp[RE] Class-Path: ext/infobus.jar docs/objectbrowser-manual.zip OpenIDE-Module-IDE-Dependencies: IDE/1 > 1.24 Index: web/advanced/manifest.mf =================================================================== RCS file: /cvs/web/advanced/manifest.mf,v retrieving revision 1.46 diff -u -r1.46 manifest.mf --- web/advanced/manifest.mf 29 Jan 2002 14:23:33 -0000 1.46 +++ web/advanced/manifest.mf 14 Feb 2002 17:54:20 -0000 @@ -15,7 +15,8 @@ org.netbeans.modules.schema2beans/1, com.sun.forte4j.modules.depclass/1 > 2.0, org.netbeans.modules.html/1, - org.openidex.util/2 + org.openidex.util/2, + org.netbeans.core/1 > 1.0 OpenIDE-Module-Description: org.netbeans.modules.web.ie.docs.jsp Class-Path: docs/jspie.jar Index: web/taglibed/manifest.mf =================================================================== RCS file: /cvs/web/taglibed/manifest.mf,v retrieving revision 1.7 diff -u -r1.7 manifest.mf --- web/taglibed/manifest.mf 7 Feb 2002 13:46:45 -0000 1.7 +++ web/taglibed/manifest.mf 14 Feb 2002 17:54:22 -0000 @@ -4,7 +4,7 @@ OpenIDE-Module-Layer: org/netbeans/modules/web/taglibed/layer.xml OpenIDE-Module-Specification-Version: 1.5 OpenIDE-Module-Implementation-Version: @BUILD_NUMBER_SUBST@ -OpenIDE-Module-Module-Dependencies: org.netbeans.modules.web.core/1, org.netbeans.modules.jarpackager/2, org.netbeans.modules.xml.core/1, org.netbeans.modules.servletapi/1 +OpenIDE-Module-Module-Dependencies: org.netbeans.modules.web.core/1, org.netbeans.modules.jarpackager/2, org.netbeans.modules.xml.core/1, org.netbeans.modules.servletapi/1, org.netbeans.core/1 > 1.0 OpenIDE-Module-IDE-Dependencies: IDE/1 > 1.24 Name: org/netbeans/modules/web/taglibed/TLDLoader.class Index: webl/manifest.mf =================================================================== RCS file: /cvs/webl/manifest.mf,v retrieving revision 1.1 diff -u -r1.1 manifest.mf --- webl/manifest.mf 24 May 2001 16:07:04 -0000 1.1 +++ webl/manifest.mf 14 Feb 2002 17:54:49 -0000 @@ -6,7 +6,7 @@ OpenIDE-Module-Implementation-Version: @BUILD_NUMBER_SUBST@ OpenIDE-Module-Layer: org/netbeans/modules/webl/Layer.xml OpenIDE-Module-Short-Description: Enables the IDE to work with WebL files.. -OpenIDE-Module-Module-Dependencies: org.netbeans.modules.java/1 > 1.2 +OpenIDE-Module-Module-Dependencies: org.netbeans.modules.java/1 > 1.2, org.netbeans.core/1 > 1.0 Name: org/netbeans/modules/webl/WebLDataLoader.class OpenIDE-Module-Class: Loader Index: workspaceswitcher/manifest.mf =================================================================== RCS file: /cvs/workspaceswitcher/manifest.mf,v retrieving revision 1.1 diff -u -r1.1 manifest.mf --- workspaceswitcher/manifest.mf 20 Nov 2001 15:04:28 -0000 1.1 +++ workspaceswitcher/manifest.mf 14 Feb 2002 17:54:49 -0000 @@ -4,6 +4,7 @@ OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/comboswitcher/Bundle.properties OpenIDE-Module-Install: org/netbeans/modules/comboswitcher/ComboInstaller.class OpenIDE-Module: org.netbeans.modules.comboswitcher +OpenIDE-Module-Module-Dependencies: org.netbeans.core/1 > 1.0 OpenIDE-Module-Layer: org/netbeans/modules/comboswitcher/layer.xml OpenIDE-Module-Name: Workspace Combo Switcher