JdbcMapper/beehive-netui-compiler/src/main/java/org/apache/beehive/netui/compiler/model/ExceptionModel.java

177 lines
4.7 KiB
Java

/*
* 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.
*
* $Header:$
*/
package org.apache.beehive.netui.compiler.model;
import org.apache.beehive.netui.compiler.JpfLanguageConstants;
import org.w3c.dom.Element;
public class ExceptionModel
extends StrutsElementSupport
implements JpfLanguageConstants
{
private String _type;
private String _path;
private String _handlerMethod;
private String _message;
private String _messageKey;
private String _handlerClass;
private boolean _readonly = false;
private static final String EXCEPTION_CONFIG_CLASSNAME = PAGEFLOW_PACKAGE + ".config.PageFlowExceptionConfig";
protected ExceptionModel( StrutsApp parentApp )
{
super( parentApp );
}
public ExceptionModel( String type, String path, String handlerMethod, String message,
String messageKey, StrutsApp parentApp )
{
super( parentApp );
_type = type;
_path = path;
_handlerMethod = handlerMethod;
_message = message;
_messageKey = messageKey;
}
public String getType()
{
return _type;
}
public void setType( String type )
{
_type = type;
}
public String getPath()
{
return _path;
}
public void setPath( String path )
{
_path = path;
}
public String getHandlerMethod()
{
return _handlerMethod;
}
public void setHandlerMethod( String handlerMethod )
{
_handlerMethod = handlerMethod;
}
public String getMessage()
{
return _message;
}
public void setMessage( String message )
{
_message = message;
}
public String getMessageKey()
{
return _messageKey;
}
public void setMessageKey( String messageKey )
{
_messageKey = messageKey;
}
public String getHandlerClass()
{
return _handlerClass;
}
public void setHandlerClass( String handlerClass )
{
_handlerClass = handlerClass;
}
protected void writeToElement(XmlModelWriter xw, Element element)
{
element.setAttribute("type", _type);
if ( _path != null )
{
boolean relativeToModule = ! _path.startsWith( "/" );
if ( relativeToModule )
{
// struts wants "/" -- assumes this is module-relative path
setElementAttribute(element, "path", '/' + _path);
}
else
{
setElementAttributeMayBeEmpty(element, "path", _path);
addSetProperty(xw, element, "isPathContextRelative", "true" );
}
}
//
// Set the message key. If there isn't one, use the typename as the message key.
setElementAttribute(element, "key", _messageKey);
if (_messageKey == null) setElementAttribute(element, "key", _type);
//
// Struts doesn't support "message" directly -- we'll add this as a custom property.
//
addSetProperty(xw, element, "defaultMessage", _message );
//
// Note that we're setting the handler *method* as the handler. This would break Struts.
//
if ( _handlerMethod != null && _handlerClass == null ) {
setElementAttribute(element, "handler", _handlerMethod);
addSetProperty(xw, element, "isHandlerMethod", "true" );
}
else {
setElementAttribute(element, "handler", _handlerClass);
}
if ( _readonly ) addSetProperty(xw, element, "readonly", "true" );
writeAdditionalSetProperties(xw, element);
}
protected void addSetProperty( XmlModelWriter xw, Element element, String propertyName, String propertyValue )
{
setCustomProperty(xw, element, propertyName, propertyValue, EXCEPTION_CONFIG_CLASSNAME);
}
public boolean isReadonly()
{
return _readonly;
}
public void setReadonly( boolean readonly )
{
_readonly = readonly;
}
}