- Timestamp:
- 05/26/10 18:16:57 (2 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/java/org/jcoderz/commons/taskdefs/XsltBasedTask.java
r1592 r1633 39 39 import java.io.IOException; 40 40 import java.io.InputStream; 41 import java.net.URISyntaxException; 42 import java.net.URL; 41 43 import java.util.Properties; 42 44 … … 57 59 import org.jcoderz.commons.util.IoUtil; 58 60 import org.jcoderz.commons.util.StringUtil; 61 import org.jcoderz.commons.util.XmlUtil; 59 62 import org.xml.sax.EntityResolver; 60 63 import org.xml.sax.InputSource; … … 391 394 throws BuildException 392 395 { 396 StreamResult out = null; 393 397 try 394 398 { 395 final String xmlParserConfig = System396 .getProperty(XML_PARSER_CONFIGURATION_PROPERTY);399 final String xmlParserConfig 400 = System.getProperty(XML_PARSER_CONFIGURATION_PROPERTY); 397 401 if (!XML_PARSER_CONFIG_WITH_XINCLUDE.equals(xmlParserConfig)) 398 402 { 399 System.setProperty(XML_PARSER_CONFIGURATION_PROPERTY, 403 System.setProperty( 404 XML_PARSER_CONFIGURATION_PROPERTY, 400 405 XML_PARSER_CONFIG_WITH_XINCLUDE); 401 406 log("Using XML Parser configuration " … … 404 409 // Xalan2 transformer is required, 405 410 // that why we explicit use this factory 406 final TransformerFactory factory = (TransformerFactory) 407 (loadClass("org.apache.xalan.processor.TransformerFactoryImpl") 408 .newInstance()); 411 final TransformerFactory factory 412 = (TransformerFactory) 413 (loadClass( 414 "org.apache.xalan.processor.TransformerFactoryImpl") 415 .newInstance()); 409 416 410 417 factory.setURIResolver(new JarArchiveUriResolver(this)); 411 final InputStream xslStream = getXslFileAsStream();412 final Transformer transformer = factory413 .newTransformer(new StreamSource(xslStream));418 final StreamSource source = getXslFileAsSource(); 419 final Transformer transformer 420 = factory.newTransformer(source); 414 421 setAdditionalTransformerParameters(transformer); 415 422 transformer.setParameter("outdir", mDestDir != null ? mDestDir 416 423 .getAbsolutePath() : ""); 417 424 final Source xml = getInAsStreamSource(); 418 final StreamResult out = newStreamResult(mOutFile);425 out = XmlUtil.createStreamResult(mOutFile); 419 426 transformer.setErrorListener(new MyErrorListener()); 420 427 transformer.transform(xml, out); … … 426 433 finally 427 434 { 435 if (out != null) 436 { 437 IoUtil.close(out.getOutputStream()); 438 } 428 439 if (mClassLoader != null) 429 440 { … … 457 468 } 458 469 459 private InputStream getXslFileAsStream()460 { 461 final InputStreamresult;470 private StreamSource getXslFileAsSource () 471 { 472 final StreamSource result; 462 473 final InputStream xslStream 463 474 = XsltBasedTask.class.getResourceAsStream(mXslFile); … … 466 477 try 467 478 { 468 final InputStream xslFile = new FileInputStream(mXslFile); 469 result = xslFile; 479 final File file = new File(mXslFile); 480 final InputStream xslFile = new FileInputStream(file); 481 result = new StreamSource(xslFile); 482 result.setSystemId(file.toURI().toASCIIString()); 470 483 } 471 484 catch (FileNotFoundException e) … … 477 490 else 478 491 { 479 result = xslStream; 492 result = new StreamSource(xslStream); 493 final URL url = XsltBasedTask.class.getResource(mXslFile); 494 if (url != null) 495 { 496 try 497 { 498 result.setSystemId(url.toURI().toASCIIString()); 499 } 500 catch (URISyntaxException ex) 501 { 502 log("Failed to set systemId. Got " + ex, 503 Project.MSG_VERBOSE); 504 } 505 } 480 506 } 481 507 return result;
