KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > java > source > classpath > CacheSourceForBinaryQueryImpl


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.modules.java.source.classpath;
20
21
22 import java.net.URL JavaDoc;
23 import javax.swing.event.ChangeListener JavaDoc;
24 import org.netbeans.api.java.queries.SourceForBinaryQuery;
25 import org.netbeans.modules.java.source.usages.Index;
26 import org.netbeans.spi.java.queries.SourceForBinaryQueryImplementation;
27 import org.openide.filesystems.FileObject;
28 import org.openide.filesystems.URLMapper;
29
30 /**
31  *
32  * @author Tomas Zezula
33  */

34 public class CacheSourceForBinaryQueryImpl implements SourceForBinaryQueryImplementation {
35
36     private String JavaDoc FILE_PROTOCOL = "file"; //NOI18N
37

38     /** Creates a new instance of CacheSourceForBinaryQueryImpl */
39     public CacheSourceForBinaryQueryImpl() {
40     }
41
42     public SourceForBinaryQuery.Result findSourceRoots(URL JavaDoc binaryRoot) {
43         if (!FILE_PROTOCOL.equals (binaryRoot.getProtocol())) {
44             return null;
45         }
46         URL JavaDoc sourceURL = Index.getSourceRootForClassFolder(binaryRoot);
47         if (sourceURL != null) {
48             return new R (sourceURL);
49         }
50         return null;
51     }
52     
53     private static class R implements SourceForBinaryQuery.Result {
54         
55         private final FileObject sourceRoot;
56         
57         public R (final URL JavaDoc sourceRootURL) {
58             assert sourceRootURL != null;
59             this.sourceRoot = URLMapper.findFileObject(sourceRootURL);
60         }
61
62         public void removeChangeListener(ChangeListener JavaDoc l) {
63             //Imutable, not needed
64
}
65
66         public void addChangeListener(ChangeListener JavaDoc l) {
67             //Imutable, not needed
68
}
69
70         public FileObject[] getRoots() {
71             if (this.sourceRoot == null) {
72                 return new FileObject[0];
73             }
74             else {
75                 return new FileObject[] {this.sourceRoot};
76             }
77         }
78     }
79 }
80
Popular Tags