This is an automated email from the ASF dual-hosted git repository.
sdedic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new efae804 [NETBEANS-1481] Fix handling of eager module fragments
(regression against netbeans 9.0) (#978)
efae804 is described below
commit efae804a8fec48cb57c0c0c2425a2d78f4c4112d
Author: Florian Vogler <[email protected]>
AuthorDate: Tue Nov 13 20:10:59 2018 +0100
[NETBEANS-1481] Fix handling of eager module fragments (regression against
netbeans 9.0) (#978)
---
.../src/org/netbeans/ModuleManager.java | 6 ++--
.../data/jars/fragment-module-missing-token.mf | 5 +++
.../org/foo2/FragmentContent.java | 26 +++++++++++++++
.../unit/src/org/netbeans/ModuleManagerTest.java | 38 ++++++++++++++++++++++
4 files changed, 73 insertions(+), 2 deletions(-)
diff --git a/platform/o.n.bootstrap/src/org/netbeans/ModuleManager.java
b/platform/o.n.bootstrap/src/org/netbeans/ModuleManager.java
index 4db13c7..2a48209 100644
--- a/platform/o.n.bootstrap/src/org/netbeans/ModuleManager.java
+++ b/platform/o.n.bootstrap/src/org/netbeans/ModuleManager.java
@@ -1681,7 +1681,9 @@ public final class ModuleManager extends Modules {
private void maybeAddToEnableList(Set<Module> willEnable, Set<Module>
mightEnable, Module m, boolean okToFail) {
if (! missingDependencies(m).isEmpty()) {
- assert okToFail : "Module " + m + " had unexpected problems: " +
missingDependencies(m) + " (willEnable: " + willEnable + " mightEnable: " +
mightEnable + ")";
+ if (!okToFail) {
+ Util.err.warning("Module " + m + " had unexpected problems: "
+ missingDependencies(m) + " (willEnable: " + willEnable + " mightEnable: " +
mightEnable + ")");
+ }
// Cannot satisfy its dependencies, exclude it.
return;
}
@@ -1747,7 +1749,7 @@ public final class ModuleManager extends Modules {
Collection<Module> frags = getAttachedFragments(m);
for (Module fragMod : frags) {
if (! fragMod.isEnabled()) {
- maybeAddToEnableList(willEnable, mightEnable, fragMod, false);
+ maybeAddToEnableList(willEnable, mightEnable, fragMod,
fragMod.isEager());
}
}
}
diff --git
a/platform/o.n.bootstrap/test/unit/data/jars/fragment-module-missing-token.mf
b/platform/o.n.bootstrap/test/unit/data/jars/fragment-module-missing-token.mf
new file mode 100644
index 0000000..bb2ed93
--- /dev/null
+++
b/platform/o.n.bootstrap/test/unit/data/jars/fragment-module-missing-token.mf
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+OpenIDE-Module: org.foo.fragment.missing.token
+OpenIDE-Module-Fragment-Host: org.foo.host
+OpenIDE-Module-Name: Fragment Content Module with missing token
+OpenIDE-Module-Requires: missing.token
diff --git
a/platform/o.n.bootstrap/test/unit/data/jars/fragment-module-missing-token/org/foo2/FragmentContent.java
b/platform/o.n.bootstrap/test/unit/data/jars/fragment-module-missing-token/org/foo2/FragmentContent.java
new file mode 100644
index 0000000..9591f2c
--- /dev/null
+++
b/platform/o.n.bootstrap/test/unit/data/jars/fragment-module-missing-token/org/foo2/FragmentContent.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * 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
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.foo;
+// Does not do anything, just needs to be here & loadable.
+public class FragmentContent {
+ protected String something() {
+ return "I am an added fragment with missing token";
+ }
+}
diff --git
a/platform/o.n.bootstrap/test/unit/src/org/netbeans/ModuleManagerTest.java
b/platform/o.n.bootstrap/test/unit/src/org/netbeans/ModuleManagerTest.java
index 187c779..343edfa 100644
--- a/platform/o.n.bootstrap/test/unit/src/org/netbeans/ModuleManagerTest.java
+++ b/platform/o.n.bootstrap/test/unit/src/org/netbeans/ModuleManagerTest.java
@@ -2760,6 +2760,44 @@ public class ModuleManagerTest extends SetupHid {
Module client = mgr.create(jar, null, false, false, false);
assertEquals(1, client.getProblems().size());
}
+
+ public void testEnableHostWithEagerFragment() throws Exception {
+ MockModuleInstaller installer = new MockModuleInstaller();
+ MockEvents ev = new MockEvents();
+ ModuleManager mgr = new ModuleManager(installer, ev);
+ mgr.mutexPrivileged().enterWriteAccess();
+
+ Module host = mgr.create(new File(jars, "host-module.jar"), null,
false, false, false);
+ Module fragment = mgr.create(new File(jars, "fragment-module.jar"),
null, false, false, true);
+
+ assertTrue("Host is known", mgr.getModules().contains(host));
+ assertTrue("Fragment is known", mgr.getModules().contains(fragment));
+
+ mgr.enable(host);
+
+ assertTrue("Host must be enabled",
mgr.getEnabledModules().contains(host));
+ assertTrue("Fragment must be enabled",
mgr.getEnabledModules().contains(fragment));
+ }
+
+ public void testEnableHostWithEagerFragmentUnsatisfied() throws Exception {
+ MockModuleInstaller installer = new MockModuleInstaller();
+ MockEvents ev = new MockEvents();
+ ModuleManager mgr = new ModuleManager(installer, ev);
+ mgr.mutexPrivileged().enterWriteAccess();
+
+ createTestJAR(data, jars, "fragment-module-missing-token", null);
+
+ Module host = mgr.create(new File(jars, "host-module.jar"), null,
false, false, false);
+ Module fragment = mgr.create(new File(jars,
"fragment-module-missing-token.jar"), null, false, false, true);
+
+ assertTrue("Host is known", mgr.getModules().contains(host));
+ assertTrue("Fragment is known", mgr.getModules().contains(fragment));
+
+ mgr.enable(host);
+
+ assertTrue("Host must be enabled",
mgr.getEnabledModules().contains(host));
+ assertTrue("Fragment must not be enabled",
!mgr.getEnabledModules().contains(fragment));
+ }
public void testEnableFragmentBeforeItsHost() throws Exception {
MockModuleInstaller installer = new MockModuleInstaller();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists