diff -r 8c0b6bccfe47 -r 0989ad8c0860 src/share/jaxws_classes/com/sun/xml/internal/ws/api/pipe/ThrowableContainerPropertySet.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/jaxws_classes/com/sun/xml/internal/ws/api/pipe/ThrowableContainerPropertySet.java Tue Apr 09 14:51:13 2013 +0100 @@ -0,0 +1,120 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.ws.api.pipe; + +import javax.xml.ws.Dispatch; + +import com.sun.xml.internal.ws.api.message.Message; +import com.sun.xml.internal.ws.api.message.Packet; +import com.oracle.webservices.internal.api.message.BasePropertySet; +import com.oracle.webservices.internal.api.message.PropertySet; + +/** + * When using {@link Dispatch}<{@link Packet}> and the invocation completes with a Throwable, it is + * useful to be able to inspect the Packet in addition to the Throwable as the Packet contains + * meta-data about the request and/or response. However, the default behavior is that the caller + * only receives the Throwable. + * + * This {@link PropertySet} is part of the implementation that allows a completing Fiber to return + * the Throwable to the caller as part of the Packet. + * + */ +public class ThrowableContainerPropertySet extends BasePropertySet { + + public ThrowableContainerPropertySet(final Throwable throwable) { + this.throwable = throwable; + } + + //////////////////////////////////////////////////// + // + // The original throwable + // + public static final String FIBER_COMPLETION_THROWABLE = "com.sun.xml.internal.ws.api.pipe.fiber-completion-throwable"; + private Throwable throwable; + @Property(FIBER_COMPLETION_THROWABLE) + public Throwable getThrowable() { + return throwable; + } + public void setThrowable(final Throwable throwable) { + this.throwable = throwable; + } + + //////////////////////////////////////////////////// + // + // The FAULT message created in WsaServerTube or WSEndpointImpl + // + public static final String FAULT_MESSAGE = "com.sun.xml.internal.ws.api.pipe.fiber-completion-fault-message"; + private Message faultMessage; + @Property(FAULT_MESSAGE) + public Message getFaultMessage() { + return faultMessage; + } + public void setFaultMessage(final Message faultMessage) { + this.faultMessage = faultMessage; + } + + //////////////////////////////////////////////////// + // + // The response Packet seen in WsaServerTube.processException or WSEndpointImpl + // + public static final String RESPONSE_PACKET = "com.sun.xml.internal.ws.api.pipe.fiber-completion-response-packet"; + private Packet responsePacket; + @Property(RESPONSE_PACKET) + public Packet getResponsePacket() { + return responsePacket; + } + public void setResponsePacket(final Packet responsePacket) { + this.responsePacket = responsePacket; + } + + //////////////////////////////////////////////////// + // + // If the fault representation of the exception has already been created + // + public static final String IS_FAULT_CREATED = "com.sun.xml.internal.ws.api.pipe.fiber-completion-is-fault-created"; + private boolean isFaultCreated = false; + @Property(IS_FAULT_CREATED) + public boolean isFaultCreated() { + return isFaultCreated; + } + public void setFaultCreated(final boolean isFaultCreated) { + this.isFaultCreated = isFaultCreated; + } + + // + // boilerplate + // + + @Override + protected PropertyMap getPropertyMap() { + return model; + } + + private static final PropertyMap model; + static { + model = parse(ThrowableContainerPropertySet.class); + } +}