/* * 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. */ // // This source code implements specifications defined by the Java // Community Process. In order to remain compliant with the specification // DO NOT add / change / or delete method signatures! // package javax.servlet.jsp.tagext; import java.util.Map; /** * Translation-time validator class for a JSP page. * A validator operates on the XML view associated with the JSP page. * *
* The TLD file associates a TagLibraryValidator class and some init * arguments with a tag library. * *
* The JSP container is reponsible for locating an appropriate * instance of the appropriate subclass by * *
* A TagLibraryValidator instance * may create auxiliary objects internally to perform * the validation (e.g. an XSchema validator) and may reuse it for all * the pages in a given translation run. * *
* The JSP container is not guaranteed to serialize invocations of * validate() method, and TagLibraryValidators should perform any * synchronization they may require. * *
* As of JSP 2.0, a JSP container must provide a jsp:id attribute to * provide higher quality validation errors. * The container will track the JSP pages * as passed to the container, and will assign to each element * a unique "id", which is passed as the value of the jsp:id * attribute. Each XML element in the XML view available will * be extended with this attribute. The TagLibraryValidator * can then use the attribute in one or more ValidationMessage * objects. The container then, in turn, can use these * values to provide more precise information on the location * of an error. * *
* The actual prefix of the id
attribute may or may not be
* jsp
but it will always map to the namespace
* http://java.sun.com/JSP/Page
. A TagLibraryValidator
* implementation must rely on the uri, not the prefix, of the id
* attribute.
*/
abstract public class TagLibraryValidator {
/**
* Sole constructor. (For invocation by subclass constructors,
* typically implicit.)
*/
public TagLibraryValidator() {
}
/**
* Set the init data in the TLD for this validator.
* Parameter names are keys, and parameter values are the values.
*
* @param map A Map describing the init parameters
*/
public void setInitParameters(Map map) {
initParameters = map;
}
/**
* Get the init parameters data as an immutable Map.
* Parameter names are keys, and parameter values are the values.
*
* @return The init parameters as an immutable map.
*/
public Map getInitParameters() {
return initParameters;
}
/**
* Validate a JSP page.
* This will get invoked once per unique tag library URI in the
* XML view. This method will return null if the page is valid; otherwise
* the method should return an array of ValidationMessage objects.
* An array of length zero is also interpreted as no errors.
*
* @param prefix the first prefix with which the tag library is
* associated, in the XML view. Note that some tags may use
* a different prefix if the namespace is redefined.
* @param uri the tag library's unique identifier
* @param page the JspData page object
* @return A null object, or zero length array if no errors, an array
* of ValidationMessages otherwise.
*/
public ValidationMessage[] validate(String prefix, String uri,
PageData page)
{
return null;
}
/**
* Release any data kept by this instance for validation purposes.
*/
public void release() {
initParameters = null;
}
// Private data
private Map initParameters;
}