getNodeDelegate().getLookup()
- which is
* the most compatible behaviour with previous versions. However
* this code has significant potential to deadlocks. That is why the
- * preferred advice is to override the method to:
- * - * class MyDataObject extends {@link MultiDataObject} { - * public Lookup getLookup() { - * return getCookieSet().getLookup(); - * } - * } - *+ * preferred advice is to override the method. *
* Warning: the {@link #getCookie} method and {@link #getLookup}
* method are ment to be interchangable - e.g. if you override one of them
@@ -999,7 +992,7 @@
public Lookup getLookup() {
Class> c = getClass();
if (warnedClasses.add(c)) {
- LOG.warning("Should override getLookup() in " + c + ", e.g.: [MultiDataObject.this.]getCookieSet().getLookup()");
+ LOG.warning("Should override getLookup() in " + c);
}
if (isValid()) {
return getNodeDelegateImpl().getLookup();
diff --git a/openide.loaders/src/org/openide/loaders/DefaultDataObject.java b/openide.loaders/src/org/openide/loaders/DefaultDataObject.java
--- a/openide.loaders/src/org/openide/loaders/DefaultDataObject.java
+++ b/openide.loaders/src/org/openide/loaders/DefaultDataObject.java
@@ -59,7 +59,6 @@
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
import org.openide.nodes.Node;
-import org.openide.util.Lookup;
/** An implementation of a data object which consumes file objects not recognized by any other loaders.
*/
@@ -193,11 +192,6 @@
}
}
- @Override
- public Lookup getLookup() {
- return getCookieSet().getLookup();
- }
-
/** We implement OpenCookie and sometimes we also have cloneable
* editor cookie */
@Override
diff --git a/openide.loaders/src/org/openide/loaders/MultiDataObject.java b/openide.loaders/src/org/openide/loaders/MultiDataObject.java
--- a/openide.loaders/src/org/openide/loaders/MultiDataObject.java
+++ b/openide.loaders/src/org/openide/loaders/MultiDataObject.java
@@ -845,6 +845,14 @@
*/
final void fireCookieChange () {
firePropertyChange (PROP_COOKIE, null, null);
+ }
+
+ /**
+ * Overrides default implementation to use the lookup from {@link #getCookieSet}.
+ * @since org.openide.loaders 7.3
+ */
+ public @Override Lookup getLookup() {
+ return getCookieSet().getLookup();
}
/** Fires property change but in event thread.
diff --git a/openide.loaders/test/unit/src/org/openide/loaders/FileObjectInLookupByMatteoTest.java b/openide.loaders/test/unit/src/org/openide/loaders/FileObjectInLookupByMatteoTest.java
--- a/openide.loaders/test/unit/src/org/openide/loaders/FileObjectInLookupByMatteoTest.java
+++ b/openide.loaders/test/unit/src/org/openide/loaders/FileObjectInLookupByMatteoTest.java
@@ -58,7 +58,6 @@
import org.openide.filesystems.LocalFileSystem;
import org.openide.filesystems.MIMEResolver;
import org.openide.loaders.MultiDataObject.Entry;
-import org.openide.util.Lookup;
/**
@@ -250,13 +249,7 @@
}
protected MultiDataObject createMultiObject(FileObject primaryFile) throws DataObjectExistsException, IOException {
- return new MultiDataObject(primaryFile, this) {
-
- @Override
- public Lookup getLookup() {
- return getCookieSet().getLookup();
- }
- };
+ return new MultiDataObject(primaryFile, this);
}
@Override
diff --git a/openide.loaders/test/unit/src/org/openide/loaders/FileObjectInLookupTest.java b/openide.loaders/test/unit/src/org/openide/loaders/FileObjectInLookupTest.java
--- a/openide.loaders/test/unit/src/org/openide/loaders/FileObjectInLookupTest.java
+++ b/openide.loaders/test/unit/src/org/openide/loaders/FileObjectInLookupTest.java
@@ -206,7 +206,7 @@
return new OwnDataObject(primaryFile, this);
}
}
- private static class OwnDataObject extends MultiDataObject implements Lookup.Provider {
+ private static class OwnDataObject extends MultiDataObject {
public OwnDataObject(FileObject pf, OwnDataLoader loader) throws DataObjectExistsException, IOException {
super(pf, loader);
@@ -219,10 +219,6 @@
return new OwnDataNode(this, getLookup());
}
- @Override
- public Lookup getLookup() {
- return getCookieSet().getLookup();
- }
}
static class OwnDataNode extends DataNode {
diff --git a/openide.loaders/test/unit/src/org/openide/loaders/Sample60M7ProblemWithGetDataObjectTest.java b/openide.loaders/test/unit/src/org/openide/loaders/Sample60M7ProblemWithGetDataObjectTest.java
--- a/openide.loaders/test/unit/src/org/openide/loaders/Sample60M7ProblemWithGetDataObjectTest.java
+++ b/openide.loaders/test/unit/src/org/openide/loaders/Sample60M7ProblemWithGetDataObjectTest.java
@@ -85,8 +85,7 @@
assertEquals("Object is own cookie", obj, obj.getCookie(DataObject.class));
}
- static class Sample60M6DataObject extends MultiDataObject
- implements Lookup.Provider {
+ static class Sample60M6DataObject extends MultiDataObject {
public Sample60M6DataObject(FileObject pf, Sample60M6DataLoader loader) throws DataObjectExistsException, IOException {
super(pf, loader);
@@ -99,10 +98,6 @@
return new Sample60M6DataNode(this, getLookup());
}
- @Override
- public Lookup getLookup() {
- return getCookieSet().getLookup();
- }
}
private static class Sample60M6DataLoader extends UniFileLoader {
diff --git a/ruby.rhtml/nbproject/project.xml b/ruby.rhtml/nbproject/project.xml
--- a/ruby.rhtml/nbproject/project.xml
+++ b/ruby.rhtml/nbproject/project.xml
@@ -169,7 +169,7 @@