diff -r ba47909a9f7d autoupdate.services/src/org/netbeans/modules/autoupdate/services/Utilities.java --- a/autoupdate.services/src/org/netbeans/modules/autoupdate/services/Utilities.java Tue Apr 10 15:20:04 2012 +0200 +++ b/autoupdate.services/src/org/netbeans/modules/autoupdate/services/Utilities.java Tue Apr 10 15:33:17 2012 +0200 @@ -59,10 +59,12 @@ import java.util.logging.Logger; import java.util.prefs.Preferences; import org.netbeans.Module; +import org.netbeans.ModuleInstaller; import org.netbeans.ModuleManager; import org.netbeans.api.autoupdate.UpdateElement; import org.netbeans.api.autoupdate.UpdateManager; import org.netbeans.api.autoupdate.UpdateUnit; +import org.netbeans.core.startup.AutomaticDependencies; import org.netbeans.core.startup.Main; import org.netbeans.core.startup.TopLogging; import org.netbeans.modules.autoupdate.updateprovider.DummyModuleInfo; @@ -663,6 +665,10 @@ UpdateElement el, boolean agressive) { Set res = new HashSet (); + AutomaticDependencies.Report rep = AutomaticDependencies.getDefault().refineDependenciesAndReport(el.getCodeName(), original); + if (rep.isModified()) { + err.warning(rep.toString()); + } for (Dependency dep : original) { Collection requestedElements = handleDependency (el, dep, availableInfos, brokenDependencies, agressive); if (requestedElements != null) { diff -r ba47909a9f7d core.startup/apichanges.xml --- a/core.startup/apichanges.xml Tue Apr 10 15:20:04 2012 +0200 +++ b/core.startup/apichanges.xml Tue Apr 10 15:33:17 2012 +0200 @@ -56,6 +56,21 @@ + + + getDefault + + + + + +

+ Returns instance of AutomaticDependencies based on default + list of transformations. +

+
+ +
isShowInAutoUpdateClient diff -r ba47909a9f7d core.startup/manifest.mf --- a/core.startup/manifest.mf Tue Apr 10 15:20:04 2012 +0200 +++ b/core.startup/manifest.mf Tue Apr 10 15:33:17 2012 +0200 @@ -3,5 +3,5 @@ OpenIDE-Module-Localizing-Bundle: org/netbeans/core/startup/Bundle.properties OpenIDE-Module-Layer: org/netbeans/core/startup/layer.xml OpenIDE-Module-Provides: org.openide.modules.InstalledFileLocator -OpenIDE-Module-Specification-Version: 1.38 +OpenIDE-Module-Specification-Version: 1.39 diff -r ba47909a9f7d core.startup/src/org/netbeans/core/startup/AutomaticDependencies.java --- a/core.startup/src/org/netbeans/core/startup/AutomaticDependencies.java Tue Apr 10 15:20:04 2012 +0200 +++ b/core.startup/src/org/netbeans/core/startup/AutomaticDependencies.java Tue Apr 10 15:33:17 2012 +0200 @@ -63,6 +63,8 @@ import java.util.logging.Logger; import org.netbeans.ModuleInstaller; import org.netbeans.Util; +import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; import org.openide.modules.Dependency; import org.openide.modules.SpecificationVersion; import org.openide.xml.XMLUtil; @@ -87,6 +89,7 @@ */ public final class AutomaticDependencies { private static final Logger LOG = Logger.getLogger(AutomaticDependencies.class.getName()); + private static AutomaticDependencies INSTANCE; private AutomaticDependencies() {} @@ -98,6 +101,46 @@ return new AutomaticDependencies(); } + /** Create default list of transformations. + * This is now all handled from declarative configuration files: + * in the system filesystem, ModuleAutoDeps/*.xml may be added + * according to the DTD "-//NetBeans//DTD Module Automatic Dependencies 1.0//EN". + * + * @since 1.39 + * @return the default list + */ + public static AutomaticDependencies getDefault() { + if (INSTANCE != null) { + return INSTANCE; + } + + FileObject depsFolder = FileUtil.getConfigFile("ModuleAutoDeps"); + if (depsFolder != null) { + FileObject[] kids = depsFolder.getChildren(); + List urls = new ArrayList(Math.max(kids.length, 1)); + for (FileObject kid : kids) { + if (kid.hasExt("xml")) { // NOI18N + urls.add(kid.toURL()); + } + } + try { + INSTANCE = AutomaticDependencies.parse(urls.toArray(new URL[urls.size()])); + } catch (IOException e) { + Util.err.log(Level.WARNING, null, e); + } catch (SAXException e) { + Util.err.log(Level.WARNING, null, e); + } + } + if (INSTANCE == null) { + // Parsing failed, or no files. + INSTANCE = AutomaticDependencies.empty(); + } + if (Util.err.isLoggable(Level.FINE)) { + Util.err.fine("Auto deps: " + INSTANCE); + } + return INSTANCE; + } + /** * Create a list of transformations based on some XML files. * They must be valid (this method may not validate them). diff -r ba47909a9f7d core.startup/src/org/netbeans/core/startup/NbInstaller.java --- a/core.startup/src/org/netbeans/core/startup/NbInstaller.java Tue Apr 10 15:20:04 2012 +0200 +++ b/core.startup/src/org/netbeans/core/startup/NbInstaller.java Tue Apr 10 15:33:17 2012 +0200 @@ -727,8 +727,6 @@ } - private AutomaticDependencies autoDepsHandler = null; - /** Overridden to perform automatic API upgrades. * That is, should do nothing on new modules, but for older ones will * automatically make them depend on things they need. @@ -748,33 +746,7 @@ // Skip them all - useful for unit tests. return; } - if (autoDepsHandler == null) { - FileObject depsFolder = FileUtil.getConfigFile("ModuleAutoDeps"); - if (depsFolder != null) { - FileObject[] kids = depsFolder.getChildren(); - List urls = new ArrayList(Math.max(kids.length, 1)); - for (FileObject kid : kids) { - if (kid.hasExt("xml")) { // NOI18N - urls.add(kid.toURL()); - } - } - try { - autoDepsHandler = AutomaticDependencies.parse(urls.toArray(new URL[urls.size()])); - } catch (IOException e) { - Util.err.log(Level.WARNING, null, e); - } catch (SAXException e) { - Util.err.log(Level.WARNING, null, e); - } - } - if (autoDepsHandler == null) { - // Parsing failed, or no files. - autoDepsHandler = AutomaticDependencies.empty(); - } - if (Util.err.isLoggable(Level.FINE)) { - Util.err.fine("Auto deps: " + autoDepsHandler); - } - } - AutomaticDependencies.Report rep = autoDepsHandler.refineDependenciesAndReport(m.getCodeNameBase(), dependencies); + AutomaticDependencies.Report rep = AutomaticDependencies.getDefault().refineDependenciesAndReport(m.getCodeNameBase(), dependencies); if (rep.isModified()) { Util.err.warning(rep.toString()); }