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 22086
Collapse All | Expand All

(-)java/src/org/netbeans/modules/java/JavaDataObject.java (-12 / +34 lines)
Lines 160-166 Link Here
160
160
161
    private void init() {
161
    private void init() {
162
        MultiDataObject.Entry entry = getPrimaryEntry();
162
        MultiDataObject.Entry entry = getPrimaryEntry();
163
        CookieSet cookies = getCookieSet();
164
163
165
        PrimaryListener l = new PrimaryListener();
164
        PrimaryListener l = new PrimaryListener();
166
	addPropertyChangeListener(l);
165
	addPropertyChangeListener(l);
Lines 168-174 Link Here
168
	fileChangeListener = WeakListener.fileChange(fileChangeListenerHook, entry.getFile());
167
	fileChangeListener = WeakListener.fileChange(fileChangeListenerHook, entry.getFile());
169
        classFileListener = new SecondaryListener();
168
        classFileListener = new SecondaryListener();
170
        lock = new Object();
169
        lock = new Object();
171
170
        
171
        addPropertyChangeListener(new PropertyChangeListener() {
172
                                    public void propertyChange(PropertyChangeEvent evt) {
173
                                        if (evt.getPropertyName().equals(PROP_UPTODATE))
174
                                            updateInstanceCookie((Boolean)(evt.getNewValue()));
175
                                    }
176
        });
177
        addSourceChangeListener(null);
178
        CookieSet cookies = getCookieSet();
172
        Class[] cookieClasses = new Class[] { 
179
        Class[] cookieClasses = new Class[] { 
173
            CompilerCookie.Build.class, 
180
            CompilerCookie.Build.class, 
174
            CompilerCookie.Clean.class, 
181
            CompilerCookie.Clean.class, 
Lines 183-205 Link Here
183
            InstanceCookie.class,
190
            InstanceCookie.class,
184
        };
191
        };
185
        cookies.add(cookieClasses, this);
192
        cookies.add(cookieClasses, this);
186
        
193
        //XXX should convert JDO to implement ChangeListener directly. 
187
        addPropertyChangeListener(new PropertyChangeListener() {
194
        //Commenting out for now - no need to create a useless change listener -TDB
188
                                    public void propertyChange(PropertyChangeEvent evt) {
195
        /*
189
                                        if (evt.getPropertyName().equals(PROP_UPTODATE))
190
                                            updateInstanceCookie((Boolean)(evt.getNewValue()));
191
                                    }
192
        });
193
        cookies.addChangeListener(new ChangeListener() {
196
        cookies.addChangeListener(new ChangeListener() {
194
                                      public void stateChanged(ChangeEvent evt) {
197
                                      public void stateChanged(ChangeEvent evt) {
195
                                          // PENDING: fire cookies change on 
198
                                          // PENDING: fire cookies change on 
196
                                          // individual Elements.
199
                                          // individual Elements.
197
                                      }
200
                                      }
198
                                  });
201
                                  });
199
        addSourceChangeListener(null);
202
         */
200
        initialized = true;
203
        initialized = true;
201
    }
204
    }
202
    
205
    
206
    private boolean cookiesInitialized=false;
207
    public Node.Cookie getCookie (Class clazz) {
208
        if ((clazz == DataObject.class) || (clazz == JavaDataObject.class)) {
209
            return this;
210
        }
211
//        System.err.println("COOKIE REQUEST: " + clazz + " on " + getName());
212
//        Thread.dumpStack();
213
        return super.getCookie(clazz); 
214
    }
215
    
203
    /**
216
    /**
204
     * This overriden version will try to search for children on the first
217
     * This overriden version will try to search for children on the first
205
     * invocation.
218
     * invocation.
Lines 965-971 Link Here
965
            String propName = evt.getPropertyName();
978
            String propName = evt.getPropertyName();
966
            if ((propName == null) || (propName.equals(PROP_FILES))) {
979
            if ((propName == null) || (propName.equals(PROP_FILES))) {
967
                lissenToClasses();
980
                lissenToClasses();
968
                checkUpToDate();
981
                if (!isTemplate()) {
982
                      //commented code below useful for tracing property changes:
983
//                    System.err.println ("PROPERTY CHANGE: " + propName + " on " + getName() + "\n" + evt);
984
//                    RuntimeException rx = new RuntimeException ("foo");
985
//                    ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL,  rx);
986
                    checkUpToDate();
987
//                    throw rx;
988
                }
969
            } else if (PROP_PRIMARY_FILE.equals(propName)) {
989
            } else if (PROP_PRIMARY_FILE.equals(propName)) {
970
                primaryFileMoved((FileObject)evt.getOldValue(), (FileObject)evt.getNewValue());
990
                primaryFileMoved((FileObject)evt.getOldValue(), (FileObject)evt.getNewValue());
971
            } else if (PROP_NAME.equals(propName)) {
991
            } else if (PROP_NAME.equals(propName)) {
Lines 1198-1207 Link Here
1198
        return "[JDO for " + getPrimaryFile() + "]"; // NOI18N
1218
        return "[JDO for " + getPrimaryFile() + "]"; // NOI18N
1199
    }
1219
    }
1200
    
1220
    
1201
    /** Getter for property upToDate.
1221
    /** Getter for property upToDate.  If isTemplate() is true,
1222
     *  will always return <code>Boolean.TRUE</code>
1202
     * @return Value of property upToDate.
1223
     * @return Value of property upToDate.
1203
     */
1224
     */
1204
    Boolean isUpToDate() {
1225
    Boolean isUpToDate() {
1226
        if (this.isTemplate()) return Boolean.TRUE;
1205
        if (upToDate == null)
1227
        if (upToDate == null)
1206
            checkUpToDate();
1228
            checkUpToDate();
1207
        return upToDate;
1229
        return upToDate;
(-)java/src/org/netbeans/modules/java/JavaNode.java (-16 / +41 lines)
Lines 122-133 Link Here
122
    * @param jdo the data object to represent
122
    * @param jdo the data object to represent
123
    */
123
    */
124
    public JavaNode (JavaDataObject jdo) {
124
    public JavaNode (JavaDataObject jdo) {
125
        this(jdo, new SourceChildren(JavaDataObject.getExplorerFactory(), jdo.getSource()));
125
        this (jdo, new JavaSourceChildren (jdo));
126
        currentBadges = new HashSet();
126
        currentBadges = new HashSet();
127
    }
127
    }
128
 
129
    //Workaround for issue #28623 - aggresively creating source element, classloading
130
    private static final class JavaSourceChildren extends SourceChildren {
131
        JavaDataObject jdo;
132
        public JavaSourceChildren (JavaDataObject jdo) {
133
            super (JavaDataObject.getExplorerFactory());
134
            this.jdo = jdo;
135
        }
136
        protected void addNotify() {
137
            setElement (jdo.getSource());
138
            super.addNotify();
139
        }
140
        protected void removeNotify() {
141
            super.removeNotify();
142
            setElement (null);
143
        }
144
    }
128
    
145
    
146
    boolean hasParser=false;
129
    private JavaParser findParser() {
147
    private JavaParser findParser() {
130
        return (JavaParser)getDataObject().getCookie(JavaParser.class);
148
        JavaParser result = (JavaParser)getDataObject().getCookie(JavaParser.class);
149
        if ((!hasParser) && (result != null)){
150
            result.addChangeListener(WeakListener.change(mixedListener, result));
151
            hasParser=true;
152
        }
153
        return result;
131
    }
154
    }
132
    
155
    
133
    /**
156
    /**
Lines 181-204 Link Here
181
            StateUpdater.getInstance().updateNode(this);
204
            StateUpdater.getInstance().updateNode(this);
182
        }
205
        }
183
    }
206
    }
184
    
207
185
    private PropL mixedListener;
208
    private PropL mixedListener;
186
    
209
    
187
    private void initialize () {
210
    private void initialize () {
188
        setIconBase(getBareIconBase());
211
        setIconBase(getBareIconBase());
189
212
190
        JavaDataObject jdo = getJavaDataObject();
213
        JavaDataObject jdo = getJavaDataObject();
191
        SourceElement source = jdo.getSource();
214
//        SourceElement source = jdo.getSource();
192
        // add a source property change listener that will modify the node's icon
215
        // add a source property change listener that will modify the node's icon
193
        // as the source's status change.
216
        // as the source's status change.
194
        mixedListener = new PropL();
217
        mixedListener = new PropL();
195
        jdo.addPropertyChangeListener(WeakListener.propertyChange(mixedListener, jdo));
218
        jdo.addPropertyChangeListener(WeakListener.propertyChange(mixedListener, jdo));
196
        
219
        
197
        JavaParser p = findParser();
198
        if (p != null) {
199
            p.addChangeListener(WeakListener.change(mixedListener, p));
200
        }
201
        
202
        StateUpdater.getInstance().registerNode(this);
220
        StateUpdater.getInstance().registerNode(this);
203
    }
221
    }
204
222
Lines 399-414 Link Here
399
    }
417
    }
400
    
418
    
401
    public Image getIcon(int type) {
419
    public Image getIcon(int type) {
402
        preparseSource();
420
        String[] badges=null;
403
      
421
        if (!getJavaDataObject().isTemplate()) {
404
        // assume setIconBase was already called.
422
            preparseSource();
405
        String[] badges = getBadges();
423
            // assume setIconBase was already called.
424
            badges = getBadges();
425
        }
406
        return iconCache.getIcon(super.getIcon(type), badges);
426
        return iconCache.getIcon(super.getIcon(type), badges);
407
    }
427
    }
408
    
428
    
409
    public Image getOpenedIcon(int type) {
429
    public Image getOpenedIcon(int type) {
410
        preparseSource();
430
        String[] badges = null;
411
        String[] badges = getBadges();
431
        if (!getJavaDataObject().isTemplate()) {
432
            preparseSource();
433
            badges = getBadges();
434
        }
412
        return iconCache.getIcon(super.getOpenedIcon(type), badges);
435
        return iconCache.getIcon(super.getOpenedIcon(type), badges);
413
    }
436
    }
414
    
437
    
Lines 518-526 Link Here
518
    */
541
    */
519
    protected void resolveIcons() {
542
    protected void resolveIcons() {
520
        JavaDataObject jdo = getJavaDataObject();
543
        JavaDataObject jdo = getJavaDataObject();
544
        boolean isTemplate = jdo.isTemplate();
545
        //TDB - avoid classloading by turning off parsing for templates, bug 28623
546
        if (isTemplate) return;
521
        SourceElement source = jdo.getSource();
547
        SourceElement source = jdo.getSource();
522
        String desc = null;
548
        String desc = null;
523
        boolean isTemplate = jdo.isTemplate();
524
        java.util.Collection badges = new java.util.ArrayList(3);
549
        java.util.Collection badges = new java.util.ArrayList(3);
525
        int status;
550
        int status;
526
        
551
        

Return to bug 22086