KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > wsdl > refactoring > TestCatalogModel


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-2007 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.modules.xml.wsdl.refactoring;
21
22 import java.io.File JavaDoc;
23 import java.io.FileInputStream JavaDoc;
24 import java.io.IOException JavaDoc;
25 import java.net.URI JavaDoc;
26 import java.util.HashMap JavaDoc;
27 import java.util.Map JavaDoc;
28 import java.util.logging.Logger JavaDoc;
29 import javax.swing.text.Document JavaDoc;
30 import org.netbeans.modules.xml.retriever.catalog.impl.CatalogFileWrapperDOMImpl;
31 import org.netbeans.modules.xml.retriever.catalog.impl.CatalogWriteModelImpl;
32 import org.netbeans.modules.xml.schema.model.SchemaModel;
33 import org.netbeans.modules.xml.schema.model.SchemaModelFactory;
34 import org.netbeans.modules.xml.wsdl.model.WSDLModel;
35 import org.netbeans.modules.xml.wsdl.model.WSDLModelFactory;
36 import org.netbeans.modules.xml.xam.locator.CatalogModel;
37 import org.netbeans.modules.xml.xam.locator.CatalogModelException;
38 import org.netbeans.modules.xml.xam.ModelSource;
39 import org.openide.filesystems.FileObject;
40 import org.openide.filesystems.FileUtil;
41 import org.openide.loaders.DataObject;
42 import org.openide.loaders.DataObjectNotFoundException;
43 import org.openide.util.Lookup;
44 import org.openide.util.lookup.Lookups;
45
46 /**
47  *
48  * @author girix
49  */

50
51 public class TestCatalogModel extends CatalogWriteModelImpl{
52     private TestCatalogModel(File JavaDoc file) throws IOException JavaDoc{
53         super(file);
54     }
55     
56     static TestCatalogModel singletonCatMod = null;
57     public static TestCatalogModel getDefault(){
58         if (singletonCatMod == null){
59             CatalogFileWrapperDOMImpl.TEST_ENVIRONMENT = true;
60             try {
61                 singletonCatMod = new TestCatalogModel(new File JavaDoc(System.getProperty("java.io.tmpdir")));
62                 FileObject catalogFO = singletonCatMod.getCatalogFileObject();
63                 File JavaDoc catFile = FileUtil.toFile(catalogFO);
64                 catFile.deleteOnExit();
65                 initCatalogFile();
66             } catch (Exception JavaDoc ex) {
67                 ex.printStackTrace();
68                 return null;
69             }
70         }
71         return singletonCatMod;
72     }
73     
74     
75     
76        /**
77         * This method could be overridden by the Unit testcase to return a special
78         * ModelSource object for a FileObject with custom impl of classes added to the lookup.
79         * This is optional if both getDocument(FO) and createCatalogModel(FO) are overridden.
80         */

81     protected ModelSource createModelSource(final FileObject thisFileObj, boolean editable) throws CatalogModelException{
82         assert thisFileObj != null : "Null file object.";
83         final CatalogModel catalogModel = createCatalogModel(thisFileObj);
84         final DataObject dobj;
85         try {
86             dobj = DataObject.find(thisFileObj);
87         } catch (DataObjectNotFoundException ex) {
88             throw new CatalogModelException(ex);
89         }
90         Lookup proxyLookup = Lookups.proxy(
91                 new Lookup.Provider() {
92             public Lookup getLookup() {
93                 Document JavaDoc document = null;
94                 Logger JavaDoc l = Logger.getLogger(getClass().getName());
95                 document = getDocument(thisFileObj);
96                 return Lookups.fixed(new Object JavaDoc[] {
97                     thisFileObj,
98                     document,
99                     dobj,
100                     catalogModel
101                 });
102             }
103         }
104         );
105         return new ModelSource(proxyLookup, editable);
106     }
107     
108     
109     private Document JavaDoc getDocument(FileObject fo) {
110         Document JavaDoc result = null;
111         if (documentPooling) {
112             result = documentPool().get(fo);
113         }
114         if (result != null) return result;
115
116         FileInputStream JavaDoc fis = null;
117         try {
118             File JavaDoc file = FileUtil.toFile(fo);
119             fis = new FileInputStream JavaDoc(file);
120             byte buffer[] = new byte[fis.available()];
121                 result = new org.netbeans.editor.BaseDocument(
122                         org.netbeans.modules.xml.text.syntax.XMLKit.class, false);
123             result.remove(0, result.getLength());
124             fis.read(buffer);
125             String JavaDoc str = new String JavaDoc(buffer);
126             result.insertString(0,str,null);
127             
128         } catch (Exception JavaDoc dObjEx) {
129             return null;
130         } finally {
131             try { if (fis != null) fis.close(); } catch(IOException JavaDoc ioe) {}
132         }
133         if (documentPooling) {
134             documentPool().put(fo, result);
135         }
136         return result;
137     }
138     
139     protected CatalogModel createCatalogModel(FileObject fo) throws CatalogModelException{
140         return getDefault();
141     }
142     
143     public ModelSource createTestModelSource(FileObject thisFileObj, boolean readOnly) throws CatalogModelException{
144         Lookup lookup = Lookups.fixed(new Object JavaDoc[]{
145             thisFileObj,
146             getDocument(thisFileObj),
147             createCatalogModel(thisFileObj)
148         });
149         return new ModelSource(lookup, readOnly);
150     }
151     
152     public void addNamespace(NamespaceLocation nl) throws Exception JavaDoc {
153         this.addURI(nl.getLocationURI(), nl.getResourceURI());
154     }
155     
156     public SchemaModel getSchemaModel(NamespaceLocation nl) throws Exception JavaDoc {
157         nl.refreshResourceFile();
158         return getSchemaModel(nl.getLocationURI());
159     }
160     
161     public SchemaModel getSchemaModel(URI JavaDoc lcationURI) throws Exception JavaDoc {
162         SchemaModel model = SchemaModelFactory.getDefault().getModel(
163                 singletonCatMod.getModelSource(lcationURI));
164         if (! documentPooling) {
165             model.sync(); // resync to restored to origin content
166
}
167         return model;
168     }
169     
170     private Map JavaDoc<FileObject,Document JavaDoc> fileToDocumentMap;
171     private Map JavaDoc<FileObject,Document JavaDoc> documentPool() {
172         if (fileToDocumentMap == null) {
173             fileToDocumentMap = new HashMap JavaDoc<FileObject,Document JavaDoc>();
174         }
175         return fileToDocumentMap;
176     }
177     private boolean documentPooling = false;
178     
179     public void setDocumentPooling(boolean v) {
180         documentPooling = v;
181         if (! documentPooling) {
182             fileToDocumentMap = null;
183         }
184     }
185     
186     private static void initCatalogFile() throws Exception JavaDoc {
187         TestCatalogModel instance = singletonCatMod;
188         for (NamespaceLocation nl:NamespaceLocation.values()) {
189             instance.addNamespace(nl);
190         }
191     }
192     
193     public WSDLModel getWSDLModel(URI JavaDoc locationURI) throws Exception JavaDoc {
194         ModelSource source = getDefault().getModelSource(locationURI);
195         WSDLModel model = WSDLModelFactory.getDefault().getModel(source);
196         return model;
197     }
198     
199     public WSDLModel getWSDLModel(NamespaceLocation nl) throws Exception JavaDoc {
200         nl.refreshResourceFile();
201         return getWSDLModel(nl.getLocationURI());
202     }
203     
204     public String JavaDoc toString(){
205         return "TestCatalogModel"+super.toString();
206     }
207 }
208
209
Popular Tags