// $Id: ConfigurationState.java 17620 2009-10-04 19:19:28Z hardy.ferentschik $ /* * JBoss, Home of Professional Open Source * Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * 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 javax.validation.spi; import java.util.Map; import java.util.Set; import javax.validation.ConstraintValidatorFactory; import javax.validation.MessageInterpolator; import javax.validation.TraversableResolver; /** * Contract between a <code>Configuration</code> and a * </code>ValidatorProvider</code> to create a <code>ValidatorFactory</code>. * The configuration artifacts defined in the XML configuration and provided to the * <code>Configuration</code> are merged and passed along via * <code>ConfigurationState</code>. * * @author Emmanuel Bernard * @author Hardy Ferentschik */ public interface ConfigurationState { /** * Returns true if Configuration.ignoreXMLConfiguration() has been called * In this case, the ValidatorFactory must ignore META-INF/validation.xml * * @return {@code true} if META-INF/validation.xml should be ignored */ boolean isIgnoreXmlConfiguration(); /** * Returns the message interpolator of this configuration. * Message interpolator is defined in the following decreasing priority: * <ul> * <li>set via the <code>Configuration</code> programmatic API</li> * <li>defined in META-INF/validation.xml provided that ignoreXmlConfiguration * is false. In this case the instance is created via its no-arg constructor.</li> * <li>{@code null} if undefined.</li> * </ul> * * @return message provider instance or null if not defined */ MessageInterpolator getMessageInterpolator(); /** * Returns a set of configuration streams. * The streams are defined by: * <ul> * <li>mapping XML streams passed programmatically in <code>Configuration</code></li> * <li>mapping XML stream located in the resources defined in</li> * META-INF/validation.xml (constraint-mapping element) * </ul> * Streams represented in the XML configuration and opened by the * <code>Configuration</code> implementation must be closed by the * <code>Configuration</code> implementation after the <code>ValidatorFactory</code> * creation (or if an exception occurs). * * <p/> * GWT change: Rerturn a set of Strings intest of a InputStream. * * @return set of Strings (was input stream) */ Set<String> getMappingStreams(); /** * Returns the constraint validator factory of this configuration. * The {@code ConstraintValidatorFactory} implementation is defined in the following * decreasing priority: * <ul> * <li>set via the <code>Configuration</code> programmatic API</li> * <li>defined in META-INF/validation.xml provided that ignoredXmlConfiguration * is false. In this case the instance is created via its no-arg constructor.</li> * <li>{@code null} if undefined.</li> * </ul> * * @return factory instance or {@code null} if not defined */ ConstraintValidatorFactory getConstraintValidatorFactory(); /** * Returns the traversable resolver for this configuration. * <code>TraversableResolver</code> is defined in the following decreasing priority: * <ul> * <li>set via the <code>Configuration</code> programmatic API</li> * <li>defined in META-INF/validation.xml provided that ignoredXmlConfiguration * is false. In this case the instance is created via its no-arg constructor.</li> * <li>{@code null} if undefined.</li> * </ul> * * @return traversable provider instance or {@code null} if not defined */ TraversableResolver getTraversableResolver(); /** * Returns a map of non type-safe custom properties. * Properties defined via: * <ul> * <li>Configuration.addProperty(String, String)</li> * <li>META-INF/validation.xml provided that ignoredXmlConfiguration</li> * is false. * </ul> * If a property is defined both programmatically and in XML, * the value defined programmatically has priority * * @return Map whose key is the property key and the value the property value */ Map<String, String> getProperties(); }