private void completionCheck() { lock.lock(); try { // Don't trigger completion and callbacks if fiber is suspended if(!isCanceled && contsSize==0 && suspendedCount == 0) { if(isTraceEnabled()) LOGGER.log(Level.FINE, "{0} completed", getName()); clearListeners(); condition.signalAll(); if (completionCallback != null) { if (throwable != null) { if (isDeliverThrowableInPacket) { packet.addSatellite(new ThrowableContainerPropertySet(throwable)); completionCallback.onCompletion(packet); } else completionCallback.onCompletion(throwable); } else completionCallback.onCompletion(packet); } } } finally { lock.unlock(); } }
private void completionCheck() { lock.lock(); try { // Don't trigger completion and callbacks if fiber is suspended if(!isCanceled && contsSize==0 && suspendedCount == 0) { if(isTraceEnabled()) LOGGER.log(Level.FINE, "{0} completed", getName()); clearListeners(); condition.signalAll(); if (completionCallback != null) { if (throwable != null) { if (isDeliverThrowableInPacket) { packet.addSatellite(new ThrowableContainerPropertySet(throwable)); completionCallback.onCompletion(packet); } else completionCallback.onCompletion(throwable); } else completionCallback.onCompletion(packet); } } } finally { lock.unlock(); } }
private void completionCheck() { lock.lock(); try { // Don't trigger completion and callbacks if fiber is suspended if(!isCanceled && contsSize==0 && suspendedCount == 0) { if(isTraceEnabled()) LOGGER.log(Level.FINE, "{0} completed", getName()); clearListeners(); condition.signalAll(); if (completionCallback != null) { if (throwable != null) { if (isDeliverThrowableInPacket) { packet.addSatellite(new ThrowableContainerPropertySet(throwable)); completionCallback.onCompletion(packet); } else completionCallback.onCompletion(throwable); } else completionCallback.onCompletion(packet); } } } finally { lock.unlock(); } }
/** * decodes the transport data to Packet * * @param connection that carries the web service request * @param codec for encoding/decoding {@link Message} * @return decoded {@link Packet} * @throws IOException if an i/o error happens while encoding/decoding */ protected Packet decodePacket(T connection, @NotNull Codec codec) throws IOException { Packet packet = new Packet(); packet.acceptableMimeTypes = getAcceptableMimeTypes(connection); packet.addSatellite(getPropertySet(connection)); packet.transportBackChannel = getTransportBackChannel(connection); return packet; }
/** * decodes the transport data to Packet * * @param connection that carries the web service request * @param codec for encoding/decoding {@link Message} * @return decoded {@link Packet} * @throws IOException if an i/o error happens while encoding/decoding */ protected Packet decodePacket(T connection, @NotNull Codec codec) throws IOException { Packet packet = new Packet(); packet.acceptableMimeTypes = getAcceptableMimeTypes(connection); packet.addSatellite(getPropertySet(connection)); packet.transportBackChannel = getTransportBackChannel(connection); return packet; }
/** * decodes the transport data to Packet * * @param connection that carries the web service request * @param codec for encoding/decoding {@link Message} * @return decoded {@link Packet} * @throws IOException if an i/o error happens while encoding/decoding */ protected Packet decodePacket(T connection, @NotNull Codec codec) throws IOException { Packet packet = new Packet(); packet.acceptableMimeTypes = getAcceptableMimeTypes(connection); packet.addSatellite(getPropertySet(connection)); packet.transportBackChannel = getTransportBackChannel(connection); return packet; }
@Override public @NotNull NextAction processResponse(Packet response) { // if one-way then, no validation if (response.getMessage() != null) { response = validateInboundHeaders(response); response.addSatellite(new WsaPropertyBag(addressingVersion,soapVersion,response)); String msgId = AddressingUtils. getMessageID(response.getMessage().getHeaders(), addressingVersion, soapVersion); response.put(WsaPropertyBag.WSA_MSGID_FROM_REQUEST, msgId); } return doReturnWith(response); }
@Override public @NotNull NextAction processResponse(Packet response) { // if one-way then, no validation if (response.getMessage() != null) { response = validateInboundHeaders(response); response.addSatellite(new WsaPropertyBag(addressingVersion,soapVersion,response)); String msgId = AddressingUtils. getMessageID(response.getMessage().getHeaders(), addressingVersion, soapVersion); response.put(WsaPropertyBag.WSA_MSGID_FROM_REQUEST, msgId); } return doReturnWith(response); }
@Override public @NotNull NextAction processResponse(Packet response) { // if one-way then, no validation if (response.getMessage() != null) { response = validateInboundHeaders(response); response.addSatellite(new WsaPropertyBag(addressingVersion,soapVersion,response)); String msgId = AddressingUtils. getMessageID(response.getMessage().getHeaders(), addressingVersion, soapVersion); response.put(WsaPropertyBag.WSA_MSGID_FROM_REQUEST, msgId); } return doReturnWith(response); }
@Override public @NotNull NextAction processException(Throwable t) { final Packet response = Fiber.current().getPacket(); ThrowableContainerPropertySet tc = response.getSatellite(ThrowableContainerPropertySet.class); if (tc == null) { tc = new ThrowableContainerPropertySet(t); response.addSatellite(tc); } else if (t != tc.getThrowable()) { // This is a pathological case where an exception happens after a previous exception. // Make sure you report the latest one. tc.setThrowable(t); } return processResponse(response.endpoint.createServiceResponseForException(tc, response, soapVersion, wsdlPort, response.endpoint.getSEIModel(), binding)); }
@Override public @NotNull NextAction processException(Throwable t) { final Packet response = Fiber.current().getPacket(); ThrowableContainerPropertySet tc = response.getSatellite(ThrowableContainerPropertySet.class); if (tc == null) { tc = new ThrowableContainerPropertySet(t); response.addSatellite(tc); } else if (t != tc.getThrowable()) { // This is a pathological case where an exception happens after a previous exception. // Make sure you report the latest one. tc.setThrowable(t); } return processResponse(response.endpoint.createServiceResponseForException(tc, response, soapVersion, wsdlPort, response.endpoint.getSEIModel(), binding)); }
@Override public @NotNull NextAction processException(Throwable t) { final Packet response = Fiber.current().getPacket(); ThrowableContainerPropertySet tc = response.getSatellite(ThrowableContainerPropertySet.class); if (tc == null) { tc = new ThrowableContainerPropertySet(t); response.addSatellite(tc); } else if (t != tc.getThrowable()) { // This is a pathological case where an exception happens after a previous exception. // Make sure you report the latest one. tc.setThrowable(t); } return processResponse(response.endpoint.createServiceResponseForException(tc, response, soapVersion, wsdlPort, response.endpoint.getSEIModel(), binding)); }
private Packet decodePacket(@NotNull WSHTTPConnection con, @NotNull Codec codec) throws IOException { String ct = con.getRequestHeader("Content-Type"); InputStream in = con.getInput(); Packet packet = new Packet(); packet.soapAction = fixQuotesAroundSoapAction(con.getRequestHeader("SOAPAction")); packet.wasTransportSecure = con.isSecure(); packet.acceptableMimeTypes = con.getRequestHeader("Accept"); packet.addSatellite(con); addSatellites(packet); packet.isAdapterDeliversNonAnonymousResponse = true; packet.component = this; packet.transportBackChannel = new Oneway(con); packet.webServiceContextDelegate = con.getWebServiceContextDelegate(); packet.setState(Packet.State.ServerRequest); if (dump || LOGGER.isLoggable(Level.FINER)) { ByteArrayBuffer buf = new ByteArrayBuffer(); buf.write(in); in.close(); dump(buf, "HTTP request", con.getRequestHeaders()); in = buf.newInputStream(); } codec.decode(in, ct, packet); return packet; }
private Packet decodePacket(@NotNull WSHTTPConnection con, @NotNull Codec codec) throws IOException { String ct = con.getRequestHeader("Content-Type"); InputStream in = con.getInput(); Packet packet = new Packet(); packet.soapAction = fixQuotesAroundSoapAction(con.getRequestHeader("SOAPAction")); packet.wasTransportSecure = con.isSecure(); packet.acceptableMimeTypes = con.getRequestHeader("Accept"); packet.addSatellite(con); addSatellites(packet); packet.isAdapterDeliversNonAnonymousResponse = true; packet.component = this; packet.transportBackChannel = new Oneway(con); packet.webServiceContextDelegate = con.getWebServiceContextDelegate(); packet.setState(Packet.State.ServerRequest); if (dump || LOGGER.isLoggable(Level.FINER)) { ByteArrayBuffer buf = new ByteArrayBuffer(); buf.write(in); in.close(); dump(buf, "HTTP request", con.getRequestHeaders()); in = buf.newInputStream(); } codec.decode(in, ct, packet); return packet; }
private Packet decodePacket(@NotNull WSHTTPConnection con, @NotNull Codec codec) throws IOException { String ct = con.getRequestHeader("Content-Type"); InputStream in = con.getInput(); Packet packet = new Packet(); packet.soapAction = fixQuotesAroundSoapAction(con.getRequestHeader("SOAPAction")); packet.wasTransportSecure = con.isSecure(); packet.acceptableMimeTypes = con.getRequestHeader("Accept"); packet.addSatellite(con); addSatellites(packet); packet.isAdapterDeliversNonAnonymousResponse = true; packet.component = this; packet.transportBackChannel = new Oneway(con); packet.webServiceContextDelegate = con.getWebServiceContextDelegate(); packet.setState(Packet.State.ServerRequest); if (dump || LOGGER.isLoggable(Level.FINER)) { ByteArrayBuffer buf = new ByteArrayBuffer(); buf.write(in); in.close(); dump(buf, "HTTP request", con.getRequestHeaders()); in = buf.newInputStream(); } codec.decode(in, ct, packet); return packet; }
public @NotNull Packet process(Packet request, WebServiceContextDelegate wscd, TransportBackChannel tbc) { Container old = ContainerResolver.getDefault().enterContainer(container); try { request.webServiceContextDelegate = wscd; request.transportBackChannel = tbc; request.endpoint = WSEndpointImpl.this; request.addSatellite(wsdlProperties); Fiber fiber = engine.createFiber(); Packet response; try { response = fiber.runSync(tube, request); } catch (RuntimeException re) { // Catch all runtime exceptions so that transport // doesn't // have to worry about converting to wire message // TODO XML/HTTP binding Message faultMsg = SOAPFaultBuilder .createSOAPFaultMessage(soapVersion, null, re); response = request.createServerResponse(faultMsg, request.endpoint.getPort(), null, request.endpoint.getBinding()); } return response; } finally { ContainerResolver.getDefault().exitContainer(old); } } };
public @NotNull Packet process(Packet request, WebServiceContextDelegate wscd, TransportBackChannel tbc) { Container old = ContainerResolver.getDefault().enterContainer(container); try { request.webServiceContextDelegate = wscd; request.transportBackChannel = tbc; request.endpoint = WSEndpointImpl.this; request.addSatellite(wsdlProperties); Fiber fiber = engine.createFiber(); Packet response; try { response = fiber.runSync(tube, request); } catch (RuntimeException re) { // Catch all runtime exceptions so that transport // doesn't // have to worry about converting to wire message // TODO XML/HTTP binding Message faultMsg = SOAPFaultBuilder .createSOAPFaultMessage(soapVersion, null, re); response = request.createServerResponse(faultMsg, request.endpoint.getPort(), null, request.endpoint.getBinding()); } return response; } finally { ContainerResolver.getDefault().exitContainer(old); } } };
private void configureRequestPacket(Packet packet, RequestContext requestContext) { // fill in Packet packet.proxy = this; packet.handlerConfig = binding.getHandlerConfig(); // to make it multi-thread safe we need to first get a stable snapshot Header[] hl = userOutboundHeaders; if (hl != null) { MessageHeaders mh = packet.getMessage().getHeaders(); for (Header h : hl) { mh.add(h); } } requestContext.fill(packet, (binding.getAddressingVersion() != null)); packet.addSatellite(wsdlProperties); if (addrVersion != null) { // populate request WS-Addressing headers MessageHeaders headerList = packet.getMessage().getHeaders(); AddressingUtils.fillRequestAddressingHeaders(headerList, wsdlPort, binding, packet); // Spec is not clear on if ReferenceParameters are to be added when addressing is not enabled, // but the EPR has ReferenceParameters. // Current approach: Add ReferenceParameters only if addressing enabled. if (endpointReference != null) { endpointReference.addReferenceParametersToList(packet.getMessage().getHeaders()); } } }
private void configureRequestPacket(Packet packet, RequestContext requestContext) { // fill in Packet packet.proxy = this; packet.handlerConfig = binding.getHandlerConfig(); // to make it multi-thread safe we need to first get a stable snapshot Header[] hl = userOutboundHeaders; if (hl != null) { MessageHeaders mh = packet.getMessage().getHeaders(); for (Header h : hl) { mh.add(h); } } requestContext.fill(packet, (binding.getAddressingVersion() != null)); packet.addSatellite(wsdlProperties); if (addrVersion != null) { // populate request WS-Addressing headers MessageHeaders headerList = packet.getMessage().getHeaders(); AddressingUtils.fillRequestAddressingHeaders(headerList, wsdlPort, binding, packet); // Spec is not clear on if ReferenceParameters are to be added when addressing is not enabled, // but the EPR has ReferenceParameters. // Current approach: Add ReferenceParameters only if addressing enabled. if (endpointReference != null) { endpointReference.addReferenceParametersToList(packet.getMessage().getHeaders()); } } }
private void configureRequestPacket(Packet packet, RequestContext requestContext) { // fill in Packet packet.proxy = this; packet.handlerConfig = binding.getHandlerConfig(); // to make it multi-thread safe we need to first get a stable snapshot Header[] hl = userOutboundHeaders; if (hl != null) { MessageHeaders mh = packet.getMessage().getHeaders(); for (Header h : hl) { mh.add(h); } } requestContext.fill(packet, (binding.getAddressingVersion() != null)); packet.addSatellite(wsdlProperties); if (addrVersion != null) { // populate request WS-Addressing headers MessageHeaders headerList = packet.getMessage().getHeaders(); AddressingUtils.fillRequestAddressingHeaders(headerList, wsdlPort, binding, packet); // Spec is not clear on if ReferenceParameters are to be added when addressing is not enabled, // but the EPR has ReferenceParameters. // Current approach: Add ReferenceParameters only if addressing enabled. if (endpointReference != null) { endpointReference.addReferenceParametersToList(packet.getMessage().getHeaders()); } } }