blob: e2d12250242135d20594031ca8c07a0308bb5cec [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.scxml2.env;
import java.io.Serializable;
import javax.xml.stream.Location;
import javax.xml.stream.XMLReporter;
import javax.xml.stream.XMLStreamException;
import org.apache.commons.scxml2.ErrorReporter;
import org.apache.commons.scxml2.SCXMLListener;
import org.apache.commons.scxml2.model.EnterableState;
import org.apache.commons.scxml2.model.Transition;
import org.apache.commons.scxml2.model.TransitionTarget;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
/**
* A simple tracer connected to Apache Commons Logging.
*
*/
public class Tracer implements ErrorHandler, ErrorReporter,
SCXMLListener, Serializable, XMLReporter {
/** Serial version UID. */
private static final long serialVersionUID = 1L;
/** ErrorHandler delegate. */
private final ErrorHandler errHandler;
/** ErrorReporter delegate. */
private final ErrorReporter errReporter;
/** SCXMLListener delegate. */
private final SCXMLListener scxmlListener;
/** XMLReporter delegate. */
private final XMLReporter xmlReporter;
/**
* Constructor.
*/
public Tracer() {
errHandler = new SimpleErrorHandler();
errReporter = new SimpleErrorReporter();
scxmlListener = new SimpleSCXMLListener();
xmlReporter = new SimpleXMLReporter();
}
/**
* @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException)
*/
public void warning(final SAXParseException exception)
throws SAXException {
errHandler.warning(exception);
}
/**
* @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException)
*/
public void error(final SAXParseException exception)
throws SAXException {
errHandler.error(exception);
}
/**
* @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException)
*/
public void fatalError(final SAXParseException exception)
throws SAXException {
errHandler.fatalError(exception);
}
/**
* @see ErrorReporter#onError(String, String, Object)
*/
public void onError(final String errCode, final String errDetail,
final Object errCtx) {
errReporter.onError(errCode, errDetail, errCtx);
}
/**
* @see SCXMLListener#onEntry(EnterableState)
*/
public void onEntry(final EnterableState state) {
scxmlListener.onEntry(state);
}
/**
* @see SCXMLListener#onExit(EnterableState)
*/
public void onExit(final EnterableState state) {
scxmlListener.onExit(state);
}
/**
* @see SCXMLListener#onTransition(TransitionTarget,TransitionTarget,Transition,String)
*/
public void onTransition(final TransitionTarget from,
final TransitionTarget to, final Transition transition, final String event) {
scxmlListener.onTransition(from, to, transition, event);
}
/**
* @see XMLReporter#report(String, String, Object, Location)
*/
public void report(final String message, final String errorType, final Object relatedInformation,
final Location location)
throws XMLStreamException {
xmlReporter.report(message, errorType, relatedInformation, location);
}
}