- Timestamp:
- 2012-04-19T14:58:44+12:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/XMLTransformer.java
r24472 r25423 42 42 import java.io.StringReader; 43 43 import java.io.StringWriter; 44 import java.io.BufferedReader; 45 import java.io.FileReader; 44 46 import java.io.File; 45 47 import java.util.HashMap; … … 116 118 // Use the TransformerFactory to process the stylesheet Source and generate a Transformer. 117 119 Transformer transformer = this.t_factory.newTransformer(new StreamSource(stylesheet)); 118 transformer.setErrorListener(new TransformErrorListener( ));120 transformer.setErrorListener(new TransformErrorListener(stylesheet)); 119 121 120 122 // Use the Transformer to transform an XML Source and send the output to a Result object. … … 142 144 // Use the TransformerFactory to process the stylesheet Source and generate a Transformer. 143 145 Transformer transformer = this.t_factory.newTransformer(new DOMSource(stylesheet)); 144 transformer.setErrorListener(new TransformErrorListener( ));146 transformer.setErrorListener(new TransformErrorListener(stylesheet)); 145 147 if (parameters != null) { 146 148 Set params = parameters.entrySet(); … … 182 184 Transformer transformer = this.t_factory.newTransformer(new DOMSource(stylesheet)); 183 185 logger.info("XMLTransformer transformer is " + transformer); 184 transformer.setErrorListener(new TransformErrorListener( ));186 transformer.setErrorListener(new TransformErrorListener(stylesheet)); 185 187 if (parameters != null) { 186 188 Set params = parameters.entrySet(); … … 214 216 try { 215 217 Transformer transformer = this.t_factory.newTransformer(new StreamSource(stylesheet)); 216 transformer.setErrorListener(new TransformErrorListener( ));218 transformer.setErrorListener(new TransformErrorListener(stylesheet)); 217 219 DOMResult result = new DOMResult(); 218 220 transformer.transform(new StreamSource(source), result); … … 233 235 try { 234 236 Transformer transformer = this.t_factory.newTransformer(new StreamSource(stylesheet)); 235 transformer.setErrorListener(new TransformErrorListener( ));237 transformer.setErrorListener(new TransformErrorListener(stylesheet)); 236 238 DOMResult result = new DOMResult(docDocType); 237 239 transformer.transform(new StreamSource(source), result); … … 320 322 // be retrieved and be used to generate an xhtml error page. 321 323 static public class TransformErrorListener implements ErrorListener { 322 protected String errorMessage = null; 323 324 // Receive notification of a recoverable error. 325 public void error(TransformerException exception) { 326 handleError("Error:\n", exception); 327 } 328 // Receive notification of a non-recoverable error. 329 public void fatalError(TransformerException exception) { 330 handleError("Fatal Error:\n", exception); 331 } 332 // Receive notification of a warning. 333 public void warning(TransformerException exception) { 334 handleError("Warning:\n", exception); 335 } 324 protected String errorMessage = null; 325 protected String stylesheet = null; 326 protected String file = null; 327 328 public TransformErrorListener(String xslt) { 329 this.stylesheet = xslt; 330 } 331 332 public TransformErrorListener(Document xslt) { 333 //this.stylesheet = GSXML.xmlNodeToString(xslt); 334 this.stylesheet = GSXML.elementToString(xslt.getDocumentElement(), true); 335 } 336 337 public TransformErrorListener(File xslt) { 338 stylesheet = ""; 339 file = xslt.getAbsolutePath(); 340 String error = "Can't locate stylesheet file: " + xslt; 341 342 if(!xslt.exists()) { 343 stylesheet = error; 344 System.err.println("@@@@@@@ " + error); 345 return; 346 } 347 try { 348 BufferedReader in = new BufferedReader(new FileReader(xslt)); 349 String line = ""; 350 while((line = in.readLine()) != null) { 351 stylesheet = stylesheet + line + "\n"; 352 } 353 in.close(); 354 in = null; 355 } catch(Exception e) { 356 stylesheet = error; 357 System.err.println("Exception reading file: " + xslt.getAbsolutePath()); 358 e.printStackTrace(); 359 } 360 } 361 362 // Receive notification of a recoverable error. 363 public void error(TransformerException exception) { 364 handleError("Error:\n", exception); 365 } 366 // Receive notification of a non-recoverable error. 367 public void fatalError(TransformerException exception) { 368 handleError("Fatal Error:\n", exception); 369 } 370 // Receive notification of a warning. 371 public void warning(TransformerException exception) { 372 handleError("Warning:\n", exception); 373 } 336 374 337 public String toString(TransformerException e) { 338 String location = e.getLocationAsString(); 339 if(location == null) { 340 return e.getMessage(); 341 } 342 return e.getMessage() + "\n" + location; 343 } 344 345 // clears the errorPage variable after first call to this method 346 public String getErrorMessage() { 347 String errMsg = this.errorMessage; 348 if(this.errorMessage != null) { 349 this.errorMessage = null; 350 } 351 return errMsg; 352 } 353 354 // sets the errorMessage member variable to the data stored in the exception 355 // and writes the errorMessage to the logger and tomcat's System.err 356 protected void handleError(String errorType, TransformerException exception) { 357 this.errorMessage = errorType + toString(exception); 358 System.err.println("\n****Error transforming xml:\n" + this.errorMessage + "\n****\n"); 359 logger.error(this.errorMessage); 360 } 375 public String toString(TransformerException e) { 376 String msg = "Exception encountered was:\n\t"; 377 String location = e.getLocationAsString(); 378 if(location != null) { 379 msg = msg + "Location: " + location + "\n\t"; 380 } 381 382 return msg + "Message: " + e.getMessage(); 383 } 384 385 // clears the errorPage variable after first call to this method 386 public String getErrorMessage() { 387 String errMsg = this.errorMessage; 388 if(this.errorMessage != null) { 389 this.errorMessage = null; 390 } 391 return errMsg; 392 } 393 394 // sets the errorMessage member variable to the data stored in the exception 395 // and writes the errorMessage to the logger and tomcat's System.err 396 protected void handleError(String errorType, TransformerException exception) { 397 this.errorMessage = errorType + toString(exception); 398 if(file != null) { 399 this.errorMessage = this.errorMessage + "\nfilename: " + file; 400 } 401 this.errorMessage += "\nException CAUSE:\n" + exception.getCause(); 402 System.err.println("\n****Error transforming xml:\n" + this.errorMessage + "\n****\n"); 403 System.err.println("Stylesheet was:\n" + this.stylesheet + "\n\n"); 404 logger.error(this.errorMessage); 405 } 361 406 } 362 407 }
Note:
See TracChangeset
for help on using the changeset viewer.