/* * 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. */ /* * $Id$ */ package org.apache.qetest; import java.util.Properties; /** * Interface with basic configuration API's. * * A simple interface allowing configuration of testing utilities; * generally by passing generic information to the testing * utility and having it pass it to any underlying objects. * * @author Shane_Curcuru@lotus.com * @version $Id$ */ public interface Configurable { /** * Allows the user to set specific attributes on the testing * utility or it's underlying product object under test. * * This method may or may not throw an IllegalArgumentException * if an attribute that it does not recognize is passed in. * This decision is up to the individual testing utility, and * may include deciding to either trap underlying product * exceptions for unknown attributes, or may re-throw them as * IllegalArgumentExceptions. * * Modeled after JAXP's various setAttribute()/setFeature() * methods. * * @param name The name of the attribute. * @param value The value of the attribute. * @throws IllegalArgumentException thrown if the underlying * implementation doesn't recognize the attribute and wants to * inform the user of this fact. */ public void setAttribute(String name, Object value) throws IllegalArgumentException; /** * Allows the user to set specific attributes on the testing * utility or it's underlying product object under test. * * This method should attempt to set any applicable attributes * found in the given attrs onto itself, and will ignore any and * all attributes it does not recognize. It should never * throw exceptions. This method may overwrite any previous * attributes that were set. Currently since this takes a * Properties block you may only be able to set objects that * are Strings, although individual implementations may * attempt to use Hashtable.get() on only the local part. * * @param attrs Props of various name, value attrs. */ public void applyAttributes(Properties attrs); /** * Allows the user to retrieve specific attributes on the testing * utility or it's underlying product object under test. * * @param name The name of the attribute. * @return value The value of the attribute. * @throws IllegalArgumentException thrown if the underlying * implementation doesn't recognize the attribute and wants to * inform the user of this fact. */ public Object getAttribute(String name) throws IllegalArgumentException; /** * Description of what this testing utility does. * * @return String description of extension */ public String getDescription(); } // end of class Configurable