001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the "License"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 /* 019 * $Id: MsgMgr.java 468645 2006-10-28 06:57:24Z minchau $ 020 */ 021 package org.apache.xalan.transformer; 022 023 import javax.xml.transform.ErrorListener; 024 import javax.xml.transform.SourceLocator; 025 import javax.xml.transform.TransformerException; 026 027 import org.apache.xalan.res.XSLMessages; 028 029 import org.w3c.dom.Node; 030 031 /** 032 * This class will manage error messages, warning messages, and other types of 033 * message events. 034 */ 035 public class MsgMgr 036 { 037 038 /** 039 * Create a message manager object. 040 * 041 * @param transformer non transformer instance 042 */ 043 public MsgMgr(TransformerImpl transformer) 044 { 045 m_transformer = transformer; 046 } 047 048 /** Transformer instance */ 049 private TransformerImpl m_transformer; 050 051 /** 052 * Warn the user of a problem. 053 * This is public for access by extensions. 054 * 055 * @param msg The message text to issue 056 * @param terminate Flag indicating whether to terminate this process 057 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 058 * the error condition is severe enough to halt processing. 059 * 060 * @throws TransformerException 061 */ 062 public void message(SourceLocator srcLctr, String msg, boolean terminate) throws TransformerException 063 { 064 065 ErrorListener errHandler = m_transformer.getErrorListener(); 066 067 if (null != errHandler) 068 { 069 errHandler.warning(new TransformerException(msg, srcLctr)); 070 } 071 else 072 { 073 if (terminate) 074 throw new TransformerException(msg, srcLctr); 075 else 076 System.out.println(msg); 077 } 078 } 079 080 /** 081 * Warn the user of a problem. 082 * 083 * @param msg Message text to issue 084 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 085 * the error condition is severe enough to halt processing. 086 * 087 * @throws TransformerException 088 * @xsl.usage internal 089 */ 090 public void warn(SourceLocator srcLctr, String msg) throws TransformerException 091 { 092 warn(srcLctr, null, null, msg, null); 093 } 094 095 /** 096 * Warn the user of a problem. 097 * 098 * @param msg Message text to issue 099 * @param args Arguments to pass to the message 100 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 101 * the error condition is severe enough to halt processing. 102 * 103 * @throws TransformerException 104 * @xsl.usage internal 105 */ 106 public void warn(SourceLocator srcLctr, String msg, Object[] args) throws TransformerException 107 { 108 warn(srcLctr, null, null, msg, args); 109 } 110 111 /** 112 * Warn the user of a problem. 113 * 114 * 115 * @param styleNode Stylesheet node 116 * @param sourceNode Source tree node 117 * @param msg Message text to issue 118 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 119 * the error condition is severe enough to halt processing. 120 * 121 * @throws TransformerException 122 * @xsl.usage internal 123 */ 124 public void warn(SourceLocator srcLctr, Node styleNode, Node sourceNode, String msg) 125 throws TransformerException 126 { 127 warn(srcLctr, styleNode, sourceNode, msg, null); 128 } 129 130 /** 131 * Warn the user of a problem. 132 * 133 * @param styleNode Stylesheet node 134 * @param sourceNode Source tree node 135 * @param msg Message text to issue 136 * @param args Arguments to pass to the message 137 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 138 * the error condition is severe enough to halt processing. 139 * 140 * @throws TransformerException 141 * @xsl.usage internal 142 */ 143 public void warn(SourceLocator srcLctr, Node styleNode, Node sourceNode, String msg, Object args[]) 144 throws TransformerException 145 { 146 147 String formattedMsg = XSLMessages.createWarning(msg, args); 148 ErrorListener errHandler = m_transformer.getErrorListener(); 149 150 if (null != errHandler) 151 errHandler.warning(new TransformerException(formattedMsg, srcLctr)); 152 else 153 System.out.println(formattedMsg); 154 } 155 156 /* This method is not properly i18nized. We need to use the following method 157 * Tell the user of an error, and probably throw an 158 * exception. 159 * 160 * @param msg Message text to issue 161 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 162 * the error condition is severe enough to halt processing. 163 * 164 * @throws TransformerException 165 * 166 public void error(SourceLocator srcLctr, String msg) throws TransformerException 167 { 168 169 // Locator locator = m_stylesheetLocatorStack.isEmpty() 170 // ? null : 171 // ((Locator)m_stylesheetLocatorStack.peek()); 172 // Locator locator = null; 173 ErrorListener errHandler = m_transformer.getErrorListener(); 174 175 if (null != errHandler) 176 errHandler.fatalError(new TransformerException(msg, srcLctr)); 177 else 178 throw new TransformerException(msg, srcLctr); 179 } 180 181 * @xsl.usage internal 182 */ 183 184 /** 185 * Tell the user of an error, and probably throw an 186 * exception. 187 * 188 * @param msg Message text to issue 189 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 190 * the error condition is severe enough to halt processing. 191 * 192 * @throws TransformerException 193 * @xsl.usage internal 194 */ 195 public void error(SourceLocator srcLctr, String msg) throws TransformerException 196 { 197 error(srcLctr, null, null, msg, null); 198 } 199 200 /** 201 * Tell the user of an error, and probably throw an 202 * exception. 203 * 204 * @param msg Message text to issue 205 * @param args Arguments to be passed to the message 206 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 207 * the error condition is severe enough to halt processing. 208 * 209 * @throws TransformerException 210 * @xsl.usage internal 211 */ 212 public void error(SourceLocator srcLctr, String msg, Object[] args) throws TransformerException 213 { 214 error(srcLctr, null, null, msg, args); 215 } 216 217 /** 218 * Tell the user of an error, and probably throw an 219 * exception. 220 * 221 * @param msg Message text to issue 222 * @param e Exception to throw 223 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 224 * the error condition is severe enough to halt processing. 225 * 226 * @throws TransformerException 227 * @xsl.usage internal 228 */ 229 public void error(SourceLocator srcLctr, String msg, Exception e) throws TransformerException 230 { 231 error(srcLctr, msg, null, e); 232 } 233 234 /** 235 * Tell the user of an error, and probably throw an 236 * exception. 237 * 238 * @param msg Message text to issue 239 * @param args Arguments to use in message 240 * @param e Exception to throw 241 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 242 * the error condition is severe enough to halt processing. 243 * 244 * @throws TransformerException 245 * @xsl.usage internal 246 */ 247 public void error(SourceLocator srcLctr, String msg, Object args[], Exception e) throws TransformerException 248 { 249 250 //msg = (null == msg) ? XSLTErrorResources.ER_PROCESSOR_ERROR : msg; 251 String formattedMsg = XSLMessages.createMessage(msg, args); 252 253 // Locator locator = m_stylesheetLocatorStack.isEmpty() 254 // ? null : 255 // ((Locator)m_stylesheetLocatorStack.peek()); 256 // Locator locator = null; 257 ErrorListener errHandler = m_transformer.getErrorListener(); 258 259 if (null != errHandler) 260 errHandler.fatalError(new TransformerException(formattedMsg, srcLctr)); 261 else 262 throw new TransformerException(formattedMsg, srcLctr); 263 } 264 265 /** 266 * Tell the user of an error, and probably throw an 267 * exception. 268 * 269 * @param styleNode Stylesheet node 270 * @param sourceNode Source tree node 271 * @param msg Message text to issue 272 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 273 * the error condition is severe enough to halt processing. 274 * 275 * @throws TransformerException 276 * @xsl.usage internal 277 */ 278 public void error(SourceLocator srcLctr, Node styleNode, Node sourceNode, String msg) 279 throws TransformerException 280 { 281 error(srcLctr, styleNode, sourceNode, msg, null); 282 } 283 284 /** 285 * Tell the user of an error, and probably throw an 286 * exception. 287 * 288 * @param styleNode Stylesheet node 289 * @param sourceNode Source tree node 290 * @param msg Message text to issue 291 * @param args Arguments to use in message 292 * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide 293 * the error condition is severe enough to halt processing. 294 * 295 * @throws TransformerException 296 * @xsl.usage internal 297 */ 298 public void error(SourceLocator srcLctr, Node styleNode, Node sourceNode, String msg, Object args[]) 299 throws TransformerException 300 { 301 302 String formattedMsg = XSLMessages.createMessage(msg, args); 303 304 // Locator locator = m_stylesheetLocatorStack.isEmpty() 305 // ? null : 306 // ((Locator)m_stylesheetLocatorStack.peek()); 307 // Locator locator = null; 308 ErrorListener errHandler = m_transformer.getErrorListener(); 309 310 if (null != errHandler) 311 errHandler.fatalError(new TransformerException(formattedMsg, srcLctr)); 312 else 313 throw new TransformerException(formattedMsg, srcLctr); 314 } 315 }