- Timestamp:
- 2012-05-16T09:35:37+12:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/XMLTransformer.java
r25603 r25604 130 130 try 131 131 { 132 TransformErrorListener transformerErrorListener = (TransformErrorListener) this.t_factory.getErrorListener();133 transformerErrorListener.setStylesheet(stylesheet); 132 TransformErrorListener transformerErrorListener = (TransformErrorListener) this.t_factory.getErrorListener(); 133 transformerErrorListener.setStylesheet(stylesheet); 134 134 // Use the TransformerFactory to process the stylesheet Source and generate a Transformer. 135 135 Transformer transformer = this.t_factory.newTransformer(new StreamSource(stylesheet)); … … 165 165 try 166 166 { 167 TransformErrorListener transformerErrorListener = (TransformErrorListener) this.t_factory.getErrorListener();167 TransformErrorListener transformerErrorListener = (TransformErrorListener) this.t_factory.getErrorListener(); 168 168 transformerErrorListener.setStylesheet(stylesheet); 169 169 // Use the TransformerFactory to process the stylesheet Source and generate a Transformer. … … 223 223 public Node transform(Document stylesheet, Document source, HashMap parameters, Document docDocType) 224 224 { 225 System.err.println("1");226 225 return transform(stylesheet, source, parameters, docDocType, null); 227 226 } … … 231 230 try 232 231 { 233 System.err.println("1.1");234 232 // Use the TransformerFactory to process the stylesheet Source and generate a Transformer. 235 TransformErrorListener transformerErrorListener = (TransformErrorListener) this.t_factory.getErrorListener();233 TransformErrorListener transformerErrorListener = (TransformErrorListener) this.t_factory.getErrorListener(); 236 234 transformerErrorListener.setStylesheet(stylesheet); 237 Transformer transformer = this.t_factory.newTransformer(new DOMSource(stylesheet)); 238 239 System.err.println("1.2"); 235 Transformer transformer = this.t_factory.newTransformer(new DOMSource(stylesheet)); 236 240 237 //logger.info("XMLTransformer transformer is " + transformer); //done in ErrorListener 241 238 if (parameters != null) … … 249 246 } 250 247 } 251 System.err.println("1.3"); 248 252 249 // When we transform the DOMResult, we need to make sure the result of 253 250 // the transformation has a DocType. For that to happen, we need to create … … 261 258 } 262 259 DOMSource domSource = new DOMSource(source); 263 System.err.println("2");264 260 transformer.setErrorListener(new TransformErrorListener(stylesheet, domSource)); 265 System.err.println("4");266 261 transformer.transform(domSource, result); 267 System.err.println("5");268 262 return result.getNode(); // pass the entire document 269 263 } … … 292 286 try 293 287 { 294 TransformErrorListener transformerErrorListener = (TransformErrorListener) this.t_factory.getErrorListener();288 TransformErrorListener transformerErrorListener = (TransformErrorListener) this.t_factory.getErrorListener(); 295 289 transformerErrorListener.setStylesheet(stylesheet); 296 290 Transformer transformer = this.t_factory.newTransformer(new StreamSource(stylesheet)); … … 403 397 protected Source source = null; // can be DOMSource or StreamSource 404 398 protected boolean debugAsFile = true; // true if xslt or source are not real physical files 405 399 406 400 // *********** METHODS TO BE CALLED WHEN SETTING AN ERROR LISTENER ON TRANSFORMERFACTORY OBJECTS 407 401 // The default constructor is only for when setting an ErrorListener on TransformerFactory objects 408 public TransformErrorListener() { 402 public TransformErrorListener() 403 { 409 404 this.stylesheet = null; 410 405 this.source = null; 411 406 XMLTransformer.debugFileCount++; 412 407 } 413 414 public void setStylesheet(Document xslt) 408 409 public void setStylesheet(Document xslt) 415 410 { 416 411 this.debugAsFile = true; … … 418 413 this.source = null; 419 414 } 420 421 public void setStylesheet(String xslt) 415 416 public void setStylesheet(String xslt) 422 417 { 423 418 this.debugAsFile = true; … … 425 420 this.source = null; 426 421 } 427 428 public void setStylesheet(File xslt) 422 423 public void setStylesheet(File xslt) 429 424 { 430 425 this.debugAsFile = false; // if this constructor is called, we're dealing with physical files for both xslt and source … … 458 453 459 454 // *********** METHODS CALLED AUTOMATICALLY ON ERROR 460 455 461 456 // Receive notification of a recoverable error. 462 457 public void error(TransformerException exception) … … 532 527 // since !debugAsFile, we are dealing with physical files, 533 528 // variable stylesheet would have stored the filename instead of contents 534 this.errorMessage = this.errorMessage + "\nstylesheet filename: " + stylesheet; 535 529 this.errorMessage = this.errorMessage + "\nstylesheet filename: " + stylesheet; 530 536 531 this.errorMessage += "\nException CAUSE:\n" + exception.getCause(); 537 532 System.err.println("\n****Error transforming xml:\n" + this.errorMessage + "\n****\n"); … … 544 539 } 545 540 } 546 541 547 542 // This method will redo the transformation that went wrong with *real* files: 548 543 // it writes out the stylesheet and source XML to files first, then performs the transformation … … 557 552 File styleFile = new File(webLogsTmpFolder + File.separator + "stylesheet" + XMLTransformer.debugFileCount + ".xml"); 558 553 File sourceFile = new File(webLogsTmpFolder + File.separator + "source" + XMLTransformer.debugFileCount + ".xml"); 559 560 554 561 555 try … … 572 566 } 573 567 574 if(this.source != null) { // ErrorListener was set on a Transformer object 568 if (this.source != null) 569 { // ErrorListener was set on a Transformer object 575 570 try 576 571 { … … 606 601 System.err.println("*****************************************"); 607 602 System.err.println("Look for stylesheet in: " + styleFile.getAbsolutePath()); 608 if(this.source != null) { // ErrorListener was set on a Transformer object 603 if (this.source != null) 604 { // ErrorListener was set on a Transformer object 609 605 System.err.println("Look for source XML in: " + sourceFile.getAbsolutePath()); 610 } 606 } 611 607 612 608 // now perform the transform again, which will assign another TransformErrorListener 613 609 // but since debuggingAsFile is turned off, we won't recurse into this section of 614 610 // handling the error again 615 if(this.source != null) { // ErrorListener was set on a Transformer object 611 if (this.source != null) 612 { // ErrorListener was set on a Transformer object 616 613 XMLTransformer.this.transform(styleFile, sourceFile); // calls the File, File version, so debugAsFile will be false 617 } 618 619 else { // ErrorListener was set on a TransformerFactory object 620 614 } 615 616 else 617 { // ErrorListener was set on a TransformerFactory object 618 621 619 // The recursive step in this case is to perform the instantiation 622 620 // of the Transformer object again. … … 627 625 // Therefore, the debugAsFile state for the single TransformerFactory's 628 626 // TransformerHandler changes each time also. 629 630 try { 627 628 try 629 { 631 630 debugAsFile = false; 632 this.stylesheet = styleFile.getAbsolutePath(); 631 this.stylesheet = styleFile.getAbsolutePath(); 633 632 //TransformErrorListener transformerErrorListener = (TransformErrorListener)XMLTransformer.this.t_factory.getErrorListener(); 634 633 //transformerErrorListener.setStylesheet(styleFile); 635 634 Transformer transformer = XMLTransformer.this.t_factory.newTransformer(new StreamSource(styleFile)); 636 if(transformer == null) { 635 if (transformer == null) 636 { 637 637 String msg = "XMLTransformer transformer is " + transformer; 638 638 logger.info(msg); 639 639 System.out.println(msg + "\n****\n"); 640 640 } 641 } catch (TransformerConfigurationException e) 641 } 642 catch (TransformerConfigurationException e) 642 643 { 643 String message = "Couldn't create transformer object: " + e.getMessageAndLocation(); 644 String message = "Couldn't create transformer object: " + e.getMessageAndLocation(); 644 645 logger.error(message); 645 646 logger.error(e.getLocationAsString()); … … 648 649 catch (TransformerException e) 649 650 { 650 String message = "Couldn't transform the source: " + e.getMessageAndLocation(); 651 String message = "Couldn't transform the source: " + e.getMessageAndLocation(); 651 652 logger.error(message); 652 653 System.out.println(message); 653 654 } 654 } 655 } 655 656 656 657 }
Note:
See TracChangeset
for help on using the changeset viewer.