ohair@286: /* ohair@286: * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. ohair@286: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ohair@286: * ohair@286: * This code is free software; you can redistribute it and/or modify it ohair@286: * under the terms of the GNU General Public License version 2 only, as ohair@286: * published by the Free Software Foundation. Oracle designates this ohair@286: * particular file as subject to the "Classpath" exception as provided ohair@286: * by Oracle in the LICENSE file that accompanied this code. ohair@286: * ohair@286: * This code is distributed in the hope that it will be useful, but WITHOUT ohair@286: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ohair@286: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ohair@286: * version 2 for more details (a copy is included in the LICENSE file that ohair@286: * accompanied this code). ohair@286: * ohair@286: * You should have received a copy of the GNU General Public License version ohair@286: * 2 along with this work; if not, write to the Free Software Foundation, ohair@286: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. ohair@286: * ohair@286: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ohair@286: * or visit www.oracle.com if you need additional information or have any ohair@286: * questions. ohair@286: */ ohair@286: ohair@286: package com.sun.xml.internal.ws.developer; ohair@286: ohair@286: import com.sun.xml.internal.ws.server.DraconianValidationErrorHandler; ohair@286: ohair@286: import javax.jws.WebService; ohair@286: import javax.xml.transform.Source; ohair@286: import javax.xml.validation.Schema; ohair@286: import javax.xml.ws.spi.WebServiceFeatureAnnotation; ohair@286: import java.lang.annotation.Documented; ohair@286: import static java.lang.annotation.ElementType.TYPE; ohair@286: import java.lang.annotation.Retention; ohair@286: import static java.lang.annotation.RetentionPolicy.RUNTIME; ohair@286: import java.lang.annotation.Target; ohair@286: import java.lang.annotation.ElementType; ohair@286: ohair@286: /** ohair@286: * Validates all request and response messages payload(SOAP:Body) for a {@link WebService} ohair@286: * against the XML schema. To use this feature, annotate the endpoint class with ohair@286: * this annotation. ohair@286: * ohair@286: *
ohair@286:  * for e.g.:
ohair@286:  *
ohair@286:  * @WebService
ohair@286:  * @SchemaValidation
ohair@286:  * public class HelloImpl {
ohair@286:  *   ...
ohair@286:  * }
ohair@286:  * 
ohair@286: * ohair@286: * At present, schema validation works for doc/lit web services only. ohair@286: * ohair@286: * @since JAX-WS 2.1.3 ohair@286: * @author Jitendra Kotamraju ohair@286: * @see SchemaValidationFeature ohair@286: */ ohair@286: @Retention(RUNTIME) ohair@286: @Target({TYPE, ElementType.METHOD, ElementType.FIELD}) ohair@286: @Documented ohair@286: @WebServiceFeatureAnnotation(id = SchemaValidationFeature.ID, bean = SchemaValidationFeature.class) ohair@286: public @interface SchemaValidation { ohair@286: ohair@286: /** ohair@286: * Configure the validation behaviour w.r.t error handling. The default handler ohair@286: * just rejects any invalid schema intances. If the application want to change ohair@286: * this default behaviour(say just log the errors), it can do so by providing ohair@286: * a custom implementation of {@link ValidationErrorHandler}. ohair@286: */ ohair@286: Class handler() default DraconianValidationErrorHandler.class; ohair@286: ohair@286: /** ohair@286: * Turns validation on/off for inbound messages ohair@286: * ohair@286: * @since JAX-WS RI 2.2.2 ohair@286: */ ohair@286: boolean inbound() default true; ohair@286: ohair@286: ohair@286: /** ohair@286: * Turns validation on/off for outbound messages ohair@286: * ohair@286: * @since JAX-WS RI 2.2.2 ohair@286: */ ohair@286: boolean outbound() default true; ohair@286: ohair@286: /** ohair@286: * Does validation for bound headers in a SOAP message. ohair@286: * ohair@286: boolean headers() default false; ohair@286: */ ohair@286: ohair@286: /** ohair@286: * Additional schema documents that are used to create {@link Schema} object. Useful ohair@286: * when the application adds additional SOAP headers to the message. This is a list ohair@286: * of system-ids, that are used to create {@link Source} objects and used in creation ohair@286: * of {@link Schema} object ohair@286: * ohair@286: * for e.g.: ohair@286: * @SchemaValidation(schemaLocations={"http://bar.foo/b.xsd", "http://foo.bar/a.xsd"} ohair@286: * ohair@286: String[] schemaLocations() default {}; ohair@286: */ ohair@286: ohair@286: }