1 package org.wamblee.xmlrouter.impl;
3 import java.util.logging.Level;
4 import java.util.logging.Logger;
6 import javax.xml.transform.dom.DOMSource;
8 import org.wamblee.xml.XMLDocument;
9 import org.wamblee.xmlrouter.common.Id;
10 import org.wamblee.xmlrouter.config.Transformation;
12 public class RobustTransformation implements Transformation {
14 private static final Logger LOGGER = Logger
15 .getLogger(RobustTransformation.class.getName());
17 private Id<Transformation> id;
18 private Transformation transformation;
20 public RobustTransformation(Id<Transformation> aId,
21 Transformation aTransformation) {
23 transformation = aTransformation;
27 public String getFromType() {
29 String from = transformation.getFromType();
31 logTypeReturnedNull("from");
32 return Constants.UNKNOWN_DOCUMENT_TYPE.toString();
35 } catch (Exception e) {
36 logTypeThrewException("from", e);
37 return Constants.UNKNOWN_DOCUMENT_TYPE.toString();
42 public String getToType() {
44 String to = transformation.getToType();
46 logTypeReturnedNull("to");
47 return Constants.UNKNOWN_DOCUMENT_TYPE.toString();
50 } catch (Exception e) {
51 logTypeThrewException("to", e);
52 return Constants.UNKNOWN_DOCUMENT_TYPE.toString();
57 public DOMSource transform(DOMSource aDocument) {
59 DOMSource res = transformation.transform(aDocument);
61 logTransformationReturnedNull(aDocument);
65 } catch (Exception e) {
66 logTranformationThrewException(aDocument, e);
71 private void logTypeThrewException(String aFromTo, Exception aE) {
72 LOGGER.log(Level.WARNING, "get" + aFromTo +
73 " threw exception, returning default value " +
74 Constants.UNKNOWN_DOCUMENT_TYPE, aE);
77 private void logTypeReturnedNull(String aFromTo) {
78 LOGGER.log(Level.WARNING, "get" + aFromTo +
79 " returned null, returning default value " +
80 Constants.UNKNOWN_DOCUMENT_TYPE);
83 private void logTranformationThrewException(DOMSource aEvent, Exception aE) {
84 LOGGER.log(Level.WARNING,
85 "transformation " + id + " threw exception for event " +
86 new XMLDocument(aEvent).print(true), aE);
89 private void logTransformationReturnedNull(DOMSource aEvent) {
90 LOGGER.log(Level.WARNING, "transformation " + id +
91 " returned null for event " + new XMLDocument(aEvent).print(true));