patterntesting.exception.ExceptionFactoryMBean Maven / Gradle / Ivy
/*
* $Id: ExceptionFactoryMBean.java,v 1.8 2011/01/01 17:57:15 oboehm Exp $
*
* Copyright (c) 2009 by Oliver Boehm
*
* Licensed 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 patterntesting.exception;
import patterntesting.runtime.jmx.Description;
/**
* The Interface ExceptionFactoryMBean.
*/
@Description("ExceptionFactory to control exceptions")
public interface ExceptionFactoryMBean {
/** The default value for {@link #setScope(String)} if nothing was set. */
String ALL_CLASSES = "all classes";
/**
* Checks if is active.
*
* @return true, if is active
*/
boolean isActive();
/**
* You can only provoke Exceptions if the active flag is set.
*
* @param activ true or false
*/
@Description("exceptions can only be provoked it is set to active")
void setActive(boolean activ);
/**
* You can only provoke Exceptions if the active flag is set.
* Call this method to set it.
*/
@Description("Exceptions will be provoked until the deactivate method is called")
void activate();
/**
* If you want to provoke an Exception only for the next time use this
* method.
*/
@Description("Exceptions will be only provoked once")
void activateOnce();
/**
* You don't want to provoke an exception any longer? Then call this
* method.
*/
@Description("Exceptions will be no longer provoked")
void deactivate();
/**
* To see if the (Sun) Java-VM was called with the option "-ea"
* ("enable asserts") this getter shows it.
*
* @return true if asserts are enabled
*/
@Description("JavaVM started with '-ea'?")
boolean isAssertsEnabled();
/**
* Gets the last provoked exception.
*
* @return the last exception which was thrown by one of the provoke methods
*/
@Description("returns the last provoked exception")
Throwable getLastProvoked();
/**
* Only exceptions of this returned type are thrown.
* The return value is a String because of the use as MBean (works better
* in the JConsole).
*
* @return the limitedTo (e.g. "java.lang.Throwable")
* @deprecated replaced by {@link #getFire()} (will be removed with 1.2)
*/
@Deprecated
@Description("only exception of this sub type are thrown")
String getLimitedTo();
/**
* You want to limit the provoked exceptions to IOException?
* Then give it as parameter to this setter method.
*
* For better use with the JConsole the class could given as String.
* But don't forget to give the complete classname (with package) as
* String.
*
* @param limitedTo e.g. "java.io.IOException"
*
* @throws ClassNotFoundException the class not found exception
* @deprecated replaced by {@link #setFire(String)} (will be removed with 1.2)
*/
@Deprecated
@Description("limit the exceptions only to methods which have it in the signature")
void setLimitedTo(String limitedTo)
throws ClassNotFoundException;
/**
* Only exceptions of this returned type will be fired.
* The return value is a String because of the use as MBean (works better
* in the JConsole).
*
* @return the exeption to be fired (e.g. "java.lang.Throwable")
* @since 1.1
*/
@Description("only exception of this sub type are thrown")
String getFire();
/**
* You want to provoked an SocketException whenever it is possible?
* Then give it as parameter to this setter method.
*
* If you want to reset it and want to provoke any exception set it to
* Throwable or call the resetFire() method.
*
* For better use with the JConsole the class could given as String.
* But don't forget to give the complete classname (with package) as
* String.
*
* @param classname e.g. "java.io.IOException"
* @throws ClassNotFoundException if parameter is not a class name
* @since 1.1
*/
@Description("fire this exception whenver it is possible")
void setFire(String classname) throws ClassNotFoundException;
/**
* Allows again that all exceptions would be fired.
* @since 1.1
*/
@Description("enables all exceptions again")
void resetFire();
/**
* Gets the number of provoked exceptions.
*
* @return the number of provoked exceptions
*/
@Description("total number of provoked exceptions")
long getNumberOfProvoked();
/**
* Limit the number of provoked maximal total number of provoked exceptions
* to n.
*
* @param n the maximal number of provoked exceptions
* (default is Long.MAX_VALUE)
*/
@Description("how many exceptions should be provoked?")
void setMaxNumberOfProvoked(long n);
/**
* Gets the max number of provoked exceptions.
*
* @return the maximal number of provoked exceptions
* (default is Long.MAX_VALUE)
*/
@Description("gets the max number of provoked exceptions")
long getMaxNumberOfProvoked();
/**
* To limit the exception to be thrown for a given class you can use
* this method here.
* At the moment a scope is only limited to the class itself.
* Perhaps in the future this can change - than super classes or interfaces
* may be also supported as parameter.
*
* A string is excepted instead of a Class object because of the jconsole.
* With the jconsole only basic types or strings are available as input
* fields.
*
* @since 1.1
* @param classname for which an exception should be thrown
*/
@Description("the factory can be registered for a given classname")
void setScope(String classname);
/**
* To set the scope back to "all classes" use this method here.
*
* @since 1.1
*/
@Description("to set the scope back to all classes")
void resetScope();
/**
* Returns the scope for which the exceptions will be thrown.
* The default value is "all classes" if the scope is not set.
*
* @since 1.1
* @return class for which an exception will be thrown.
*/
@Description("returns the scope for which the exceptions will be thrown")
String getScope();
/**
* Resets all preferences.
* @since 1.1
*/
@Description("resets all preferences")
void reset();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy