Added
Link Here
|
1 |
/* |
2 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
3 |
* |
4 |
* Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved. |
5 |
* |
6 |
* The contents of this file are subject to the terms of either the GNU |
7 |
* General Public License Version 2 only ("GPL") or the Common |
8 |
* Development and Distribution License("CDDL") (collectively, the |
9 |
* "License"). You may not use this file except in compliance with the |
10 |
* License. You can obtain a copy of the License at |
11 |
* http://www.netbeans.org/cddl-gplv2.html |
12 |
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the |
13 |
* specific language governing permissions and limitations under the |
14 |
* License. When distributing the software, include this License Header |
15 |
* Notice in each file and include the License file at |
16 |
* nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this |
17 |
* particular file as subject to the "Classpath" exception as provided |
18 |
* by Sun in the GPL Version 2 section of the License file that |
19 |
* accompanied this code. If applicable, add the following below the |
20 |
* License Header, with the fields enclosed by brackets [] replaced by |
21 |
* your own identifying information: |
22 |
* "Portions Copyrighted [year] [name of copyright owner]" |
23 |
* |
24 |
* Contributor(s): |
25 |
* |
26 |
* The Original Software is NetBeans. The Initial Developer of the Original |
27 |
* Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun |
28 |
* Microsystems, Inc. All Rights Reserved. |
29 |
* |
30 |
* If you wish your version of this file to be governed by only the CDDL |
31 |
* or only the GPL Version 2, indicate your decision by adding |
32 |
* "[Contributor] elects to include this software in this distribution |
33 |
* under the [CDDL or GPL Version 2] license." If you do not indicate a |
34 |
* single choice of license, a recipient has the option to distribute |
35 |
* your version of this file under either the CDDL, the GPL Version 2 or |
36 |
* to extend the choice of license to its licensees as provided above. |
37 |
* However, if you add GPL Version 2 code and therefore, elected the GPL |
38 |
* Version 2 license, then the option applies only if the new code is |
39 |
* made subject to such option by the copyright holder. |
40 |
*/ |
41 |
|
42 |
package org.openide.loaders; |
43 |
|
44 |
import java.util.Enumeration; |
45 |
import org.openide.filesystems.*; |
46 |
import java.io.*; |
47 |
import java.lang.ref.Reference; |
48 |
import java.lang.ref.WeakReference; |
49 |
import java.security.Permission; |
50 |
import java.util.Arrays; |
51 |
import java.util.Collection; |
52 |
import java.util.Collections; |
53 |
import java.util.HashMap; |
54 |
import java.util.Map; |
55 |
import java.util.Set; |
56 |
import java.util.TreeSet; |
57 |
import java.util.logging.Level; |
58 |
import junit.framework.Assert; |
59 |
import org.netbeans.junit.Log; |
60 |
import org.netbeans.junit.MockServices; |
61 |
import org.netbeans.junit.RandomlyFails; |
62 |
import org.openide.cookies.*; |
63 |
import org.openide.loaders.MultiDataObject.Entry; |
64 |
import org.openide.nodes.Node; |
65 |
import org.openide.util.Enumerations; |
66 |
import org.openide.util.RequestProcessor; |
67 |
import org.openide.xml.XMLUtil; |
68 |
import org.xml.sax.InputSource; |
69 |
import org.xml.sax.SAXParseException; |
70 |
|
71 |
/** |
72 |
* |
73 |
* @author Jaroslav Tulach |
74 |
*/ |
75 |
public class XMLDataObjectSubclassTest extends org.netbeans.junit.NbTestCase { |
76 |
private FileObject data; |
77 |
private CharSequence log; |
78 |
|
79 |
public XMLDataObjectSubclassTest (String name) { |
80 |
super (name); |
81 |
} |
82 |
|
83 |
@Override |
84 |
protected void setUp () throws Exception { |
85 |
clearWorkDir(); |
86 |
MockServices.setServices(Pool.class); |
87 |
|
88 |
log = Log.enable("org.openide.loaders", Level.WARNING); |
89 |
|
90 |
super.setUp (); |
91 |
String fsstruct [] = new String [] { |
92 |
}; |
93 |
FileSystem fs = TestUtilHid.createLocalFileSystem (getWorkDir(), fsstruct); |
94 |
data = FileUtil.createData ( |
95 |
fs.getRoot (), |
96 |
"kuk/test/my.xml" |
97 |
); |
98 |
FileLock lock = data.lock (); |
99 |
OutputStream os = data.getOutputStream (lock); |
100 |
PrintStream p = new PrintStream (os); |
101 |
|
102 |
p.println ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); |
103 |
p.println ("<root>"); |
104 |
p.println ("</root>"); |
105 |
|
106 |
p.close (); |
107 |
lock.releaseLock (); |
108 |
|
109 |
} |
110 |
|
111 |
public void testCheckNoCookies() throws Exception { |
112 |
DataObject obj = DataObject.find(data); |
113 |
assertEquals("Correct obj type", MyXMLObject.class, obj.getClass()); |
114 |
|
115 |
assertNull("No open cookie", obj.getLookup().lookup(OpenCookie.class)); |
116 |
assertNull("No edit cookie", obj.getLookup().lookup(EditCookie.class)); |
117 |
assertNull("No print cookie", obj.getLookup().lookup(PrintCookie.class)); |
118 |
assertNull("No close cookie", obj.getLookup().lookup(CloseCookie.class)); |
119 |
} |
120 |
|
121 |
public static final class Pool extends DataLoaderPool { |
122 |
|
123 |
@Override |
124 |
protected Enumeration<? extends DataLoader> loaders() { |
125 |
return Enumerations.singleton(DataLoader.getLoader(MyXMLLoader.class)); |
126 |
} |
127 |
} |
128 |
|
129 |
public static final class MyXMLLoader extends UniFileLoader { |
130 |
|
131 |
public MyXMLLoader() { |
132 |
super(MyXMLObject.class.getName()); |
133 |
getExtensions().addExtension("xml"); |
134 |
} |
135 |
|
136 |
@Override |
137 |
protected MultiDataObject createMultiObject(FileObject primaryFile) throws DataObjectExistsException, IOException { |
138 |
return new MyXMLObject(primaryFile, this); |
139 |
} |
140 |
} |
141 |
|
142 |
public static final class MyXMLObject extends XMLDataObject { |
143 |
|
144 |
public MyXMLObject(FileObject fo, MultiFileLoader loader) throws DataObjectExistsException { |
145 |
super(fo, loader, false); |
146 |
} |
147 |
|
148 |
} |
149 |
} |