This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 200711
Collapse All | Expand All

(-)a/projectapi/test/unit/src/org/netbeans/spi/project/support/DelegatingLookupImplTest.java (+34 lines)
Lines 38-43 Link Here
38
38
39
package org.netbeans.spi.project.support;
39
package org.netbeans.spi.project.support;
40
40
41
import java.util.Collection;
42
import java.util.concurrent.atomic.AtomicInteger;
41
import javax.swing.JButton;
43
import javax.swing.JButton;
42
import javax.swing.JCheckBox;
44
import javax.swing.JCheckBox;
43
import javax.swing.JComboBox;
45
import javax.swing.JComboBox;
Lines 138-141 Link Here
138
        }
140
        }
139
    }
141
    }
140
142
143
    public void testNestedComposites() throws Exception { // #200711
144
        final AtomicInteger count = new AtomicInteger();
145
        final Runnable orig = new Runnable() {
146
            @Override public void run() {
147
                count.incrementAndGet();
148
            }
149
        };
150
        class RunnableMerger implements LookupMerger<Runnable> {
151
            @Override public Class<Runnable> getMergeableClass() {return Runnable.class;}
152
            @Override public Runnable merge(final Lookup lookup) {
153
                return new Runnable() {
154
                    @Override public void run() {
155
                        orig.run();
156
                        for (Runnable r : lookup.lookupAll(Runnable.class)) {
157
                            assertFalse(r == orig);
158
                            assertFalse(r == this);
159
                            r.run();
160
                        }
161
                    }
162
                };
163
            }
164
        }
165
        Lookup base = Lookups.fixed(new RunnableMerger());
166
        Lookup nested1 = new DelegatingLookupImpl(base, Lookup.EMPTY, null);
167
        assertEquals(1, nested1.lookupAll(Runnable.class).size());
168
        Lookup nested2 = new DelegatingLookupImpl(nested1, Lookup.EMPTY, null);
169
        Collection<? extends Runnable> rs = nested2.lookupAll(Runnable.class);
170
        assertEquals(1, rs.size());
171
        rs.iterator().next().run();
172
        assertEquals(1, count.get());
173
    }
174
141
}
175
}
(-)a/projectuiapi/src/org/netbeans/spi/project/ui/support/UILookupMergerSupport.java (-2 / +2 lines)
Lines 196-202 Link Here
196
                ProjectOpenedTrampoline.DEFAULT.projectOpened(defaultInstance);
196
                ProjectOpenedTrampoline.DEFAULT.projectOpened(defaultInstance);
197
            }
197
            }
198
            for (ProjectOpenedHook poh : lkp.lookupAll(ProjectOpenedHook.class)) {
198
            for (ProjectOpenedHook poh : lkp.lookupAll(ProjectOpenedHook.class)) {
199
                if (poh != defaultInstance && /* XXX #200500: should be: poh != this */!(poh instanceof OpenHookImpl)) {
199
                if (poh != defaultInstance && poh != this) {
200
                    ProjectOpenedTrampoline.DEFAULT.projectOpened(poh);
200
                    ProjectOpenedTrampoline.DEFAULT.projectOpened(poh);
201
                }
201
                }
202
            }
202
            }
Lines 207-213 Link Here
207
                ProjectOpenedTrampoline.DEFAULT.projectClosed(defaultInstance);
207
                ProjectOpenedTrampoline.DEFAULT.projectClosed(defaultInstance);
208
            }
208
            }
209
            for (ProjectOpenedHook poh : lkp.lookupAll(ProjectOpenedHook.class)) {
209
            for (ProjectOpenedHook poh : lkp.lookupAll(ProjectOpenedHook.class)) {
210
                if (poh != defaultInstance && !(poh instanceof OpenHookImpl)) {
210
                if (poh != defaultInstance && poh != this) {
211
                    ProjectOpenedTrampoline.DEFAULT.projectClosed(poh);
211
                    ProjectOpenedTrampoline.DEFAULT.projectClosed(poh);
212
                }
212
                }
213
            }
213
            }

Return to bug 200711