001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.commons.scxml.env; 018 019 import java.io.Serializable; 020 021 import org.apache.commons.scxml.ErrorReporter; 022 import org.apache.commons.scxml.SCXMLListener; 023 import org.apache.commons.scxml.model.Transition; 024 import org.apache.commons.scxml.model.TransitionTarget; 025 import org.xml.sax.ErrorHandler; 026 import org.xml.sax.SAXException; 027 import org.xml.sax.SAXParseException; 028 029 /** 030 * A simple tracer connected to Apache Commons Logging. 031 * 032 */ 033 public class Tracer implements ErrorHandler, ErrorReporter, 034 SCXMLListener, Serializable { 035 036 /** Serial version UID. */ 037 private static final long serialVersionUID = 1L; 038 /** ErrorHandler delegate. */ 039 private ErrorHandler errHandler; 040 /** ErrorReporter delegate. */ 041 private ErrorReporter errReporter; 042 /** SCXMLListener delegate. */ 043 private SCXMLListener scxmlListener; 044 045 /** 046 * Constructor. 047 */ 048 public Tracer() { 049 super(); 050 errHandler = new SimpleErrorHandler(); 051 errReporter = new SimpleErrorReporter(); 052 scxmlListener = new SimpleSCXMLListener(); 053 } 054 055 /** 056 * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException) 057 */ 058 public void warning(final SAXParseException exception) 059 throws SAXException { 060 errHandler.warning(exception); 061 } 062 063 /** 064 * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException) 065 */ 066 public void error(final SAXParseException exception) 067 throws SAXException { 068 errHandler.error(exception); 069 } 070 071 /** 072 * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException) 073 */ 074 public void fatalError(final SAXParseException exception) 075 throws SAXException { 076 errHandler.fatalError(exception); 077 } 078 079 /** 080 * @see ErrorReporter#onError(String, String, Object) 081 */ 082 public void onError(final String errCode, final String errDetail, 083 final Object errCtx) { 084 errReporter.onError(errCode, errDetail, errCtx); 085 } 086 087 /** 088 * @see SCXMLListener#onEntry(TransitionTarget) 089 */ 090 public void onEntry(final TransitionTarget target) { 091 scxmlListener.onEntry(target); 092 } 093 094 /** 095 * @see SCXMLListener#onExit(TransitionTarget) 096 */ 097 public void onExit(final TransitionTarget target) { 098 scxmlListener.onExit(target); 099 } 100 101 /** 102 * @see SCXMLListener#onTransition(TransitionTarget,TransitionTarget,Transition) 103 */ 104 public void onTransition(final TransitionTarget from, 105 final TransitionTarget to, final Transition transition) { 106 scxmlListener.onTransition(from, to, transition); 107 } 108 109 } 110