1 19 20 26 package org.netbeans.modules.xml.wsdl.ui.fastmodel.impl; 27 28 import java.io.File ; 29 import java.io.InputStream ; 30 import java.io.Reader ; 31 import java.util.logging.Level ; 32 import java.util.logging.Logger ; 33 34 import javax.xml.namespace.QName ; 35 import javax.xml.parsers.SAXParser ; 36 import javax.xml.parsers.SAXParserFactory ; 37 38 import org.netbeans.modules.xml.wsdl.ui.fastmodel.FastWSDLDefinitions; 39 import org.netbeans.modules.xml.wsdl.ui.fastmodel.FastWSDLDefinitionsFactory; 40 import org.xml.sax.Attributes ; 41 import org.xml.sax.InputSource ; 42 import org.xml.sax.SAXException ; 43 import org.xml.sax.SAXParseException ; 44 import org.xml.sax.helpers.DefaultHandler ; 45 46 52 public class FastWSDLDefinitionsFactoryImpl extends FastWSDLDefinitionsFactory { 53 54 private boolean mParseImports = false; 55 56 57 private Logger logger = Logger.getLogger(this.getClass().getName()); 58 59 @Override 60 public FastWSDLDefinitions newFastWSDLDefinitions(InputStream in, boolean parseImports) { 61 this.mParseImports = parseImports; 62 FastWSDLDefinitionsImpl def = new FastWSDLDefinitionsImpl(); 63 try { 64 SAXParserFactory fac = SAXParserFactory.newInstance(); 65 SAXParser parser = fac.newSAXParser(); 66 FastWSDLDefinitionsHandler handler = new FastWSDLDefinitionsHandler(def); 67 parser.parse(in, handler); 68 69 } catch(Exception ex) { 70 logger.log(Level.SEVERE, "Failed to parse wsdl", ex); 71 def.setParseErrorMessage(ex.getMessage()); 72 } 73 74 return def; 75 } 76 77 @Override 78 public FastWSDLDefinitions newFastWSDLDefinitions(Reader in, boolean parseImports) { 79 this.mParseImports = parseImports; 80 FastWSDLDefinitionsImpl def = new FastWSDLDefinitionsImpl(); 81 try { 82 SAXParserFactory fac = SAXParserFactory.newInstance(); 83 SAXParser parser = fac.newSAXParser(); 84 FastWSDLDefinitionsHandler handler = new FastWSDLDefinitionsHandler(def); 85 InputSource ins = new InputSource (in); 86 parser.parse(ins, handler); 87 88 } catch(Exception ex) { 89 logger.log(Level.SEVERE, "Failed to parse wsdl", ex); 90 def.setParseErrorMessage(ex.getMessage()); 91 } 92 93 return def; 94 } 95 96 @Override 97 public FastWSDLDefinitions newFastWSDLDefinitions(String defFileUrl) { 98 return newFastWSDLDefinitions(defFileUrl, false); 99 } 100 101 @Override 102 public FastWSDLDefinitions newFastWSDLDefinitions(String defFileUrl, 103 boolean parseImports) { 104 File file = new File (defFileUrl); 105 return newFastWSDLDefinitions(file, parseImports); 106 } 107 108 109 @Override 110 public FastWSDLDefinitions newFastWSDLDefinitions(File file) { 111 return newFastWSDLDefinitions(file, false); 112 } 113 114 @Override 115 public FastWSDLDefinitions newFastWSDLDefinitions(File file, boolean parseImports) { 116 this.mParseImports = parseImports; 117 FastWSDLDefinitionsImpl def = new FastWSDLDefinitionsImpl(); 118 119 120 121 try { 122 SAXParserFactory fac = SAXParserFactory.newInstance(); 123 SAXParser parser = fac.newSAXParser(); 124 FastWSDLDefinitionsHandler handler = new FastWSDLDefinitionsHandler(def); 125 parser.parse(file, handler); 126 127 } catch(Exception ex) { 128 logger.log(Level.SEVERE, "Failed to parse "+ file.getAbsolutePath(), ex); 129 def.setParseErrorMessage(ex.getMessage()); 130 } 131 132 return def; 133 } 134 135 public class FastWSDLDefinitionsHandler extends DefaultHandler { 136 137 private String targetNamespace; 138 139 private FastWSDLDefinitionsImpl mDef; 140 141 public FastWSDLDefinitionsHandler(FastWSDLDefinitionsImpl def) { 142 this.mDef = def; 143 } 144 145 public String getTargetNamespace() { 146 return targetNamespace; 147 } 148 149 @Override 150 public void startElement(String uri, 151 String localName, 152 String qName, 153 Attributes attributes) 154 throws SAXException { 155 156 QName wsdlTagQName = new QName (qName); 157 158 if(wsdlTagQName != null && wsdlTagQName.getLocalPart().endsWith("definitions")) { this.mDef.setWSDL(true); 160 for(int i = 0 ; i < attributes.getLength(); i++) { 161 QName attrQName = new QName (attributes.getQName(i)); 162 String attrLocalName = attrQName.getLocalPart(); 163 if(attrLocalName.equals("targetNamespace")) { targetNamespace = attributes.getValue(i); 165 mDef.setTargetNamespace(targetNamespace); 166 break; 167 } 168 } 169 } 170 177 178 } 179 180 @Override 181 public void fatalError(SAXParseException e) 182 throws SAXException { 183 184 } 185 186 @Override 187 public void error(SAXParseException e) 188 throws SAXException { 189 190 } 191 192 } 193 } 194 | Popular Tags |