exchange.getInMessage().put(FaultMode.class, FaultMode.CHECKED_APPLICATION_FAULT); throw createFault(ex.getCause(), m, params, true); } catch (Exception ex) { throw createFault(ex.getCause(), m, params, false); exchange.getInMessage().put(FaultMode.class, FaultMode.CHECKED_APPLICATION_FAULT); throw createFault(ex.getCause(), m, params, true); } catch (Exception ex) { throw createFault(ex.getCause(), m, params, false);
protected void updateHeader(Exchange exchange, MessageContext ctx) { if (ctx.containsKey(Header.HEADER_LIST) && ctx.get(Header.HEADER_LIST) instanceof List<?>) { List<?> list = (List<?>) ctx.get(Header.HEADER_LIST); if (list != null && !list.isEmpty()) { SoapMessage sm = (SoapMessage) createResponseMessage(exchange); if (sm != null) { Iterator<?> iter = list.iterator(); while (iter.hasNext()) { Header header = (Header) iter.next(); if (header.getDirection() != Header.Direction.DIRECTION_IN && !header.getName().getNamespaceURI(). equals("http://docs.oasis-open.org/wss/2004/01/" + "oasis-200401-wss-wssecurity-secext-1.0.xsd") && !header.getName().getNamespaceURI(). equals("http://docs.oasis-open.org/" + "wss/oasis-wss-wssecurity-secext-1.1.xsd")) { //don't copy over security header, out interceptor chain will take care of it. sm.getHeaders().add(header); } } } } } }
protected SOAPFaultException findSoapFaultException(Throwable ex) { if (ex instanceof SOAPFaultException) { return (SOAPFaultException)ex; } if (ex.getCause() != null) { return findSoapFaultException(ex.getCause()); } return null; }
params = Collections.singletonList(null); res = CastUtils.cast((List<?>)super.invoke(exchange, serviceObject, m, params));
@Override protected Object performInvocation(Exchange exchange, final Object serviceObject, Method m, Object[] paramArray) throws Exception { if (invoker != null) { return invoker.invoke(m, paramArray); } return super.performInvocation(exchange, serviceObject, m, paramArray); }
private Method getProviderServiceObjectMethod(Method m, Class<?> serviceObjectClass) { if (!Provider.class.isAssignableFrom(serviceObjectClass)) { return m; } Class<?> currentSvcClass = serviceObjectClass; Class<?> genericType = null; while (currentSvcClass != null) { genericType = getProviderGenericType(currentSvcClass); if (genericType != null) { break; } // Check superclass until top currentSvcClass = currentSvcClass.getSuperclass(); } // Should never happens if (genericType == null) { return m; } try { return serviceObjectClass.getMethod("invoke", genericType); } catch (Exception e) { throw new ServiceConstructionException(e); } }
Method mso = getProviderServiceObjectMethod(mOriginal, serviceObjectClass);
@Override protected Object invoke(Exchange exchange, Object serviceObject, Method m, List<Object> params) { Object result = null; InvocationContext invContext = exchange.get(InvocationContext.class); if (invContext == null) { LOG.debug("PreEJBInvoke"); result = preEjbInvoke(exchange, serviceObject, m, params); } else { LOG.debug("EJBInvoke"); // calls performInvocation() result = super.invoke(exchange, serviceObject, m, params); } return result; }
@Override protected Object performInvocation(Exchange exchange, final Object serviceObject, Method m, Object[] paramArray) throws Exception { if (invoker != null) { return invoker.invoke(m, paramArray); } return super.performInvocation(exchange, serviceObject, m, paramArray); }
private Method getProviderServiceObjectMethod(Method m, Class<?> serviceObjectClass) { if (!Provider.class.isAssignableFrom(serviceObjectClass)) { return m; } Class<?> currentSvcClass = serviceObjectClass; Class<?> genericType = null; while (currentSvcClass != null) { genericType = getProviderGenericType(currentSvcClass); if (genericType != null) { break; } // Check superclass until top currentSvcClass = currentSvcClass.getSuperclass(); } // Should never happens if (genericType == null) { return m; } try { return serviceObjectClass.getMethod("invoke", genericType); } catch (Exception e) { throw new ServiceConstructionException(e); } }
Method mso = getProviderServiceObjectMethod(mOriginal, serviceObjectClass);
@Override protected Object invoke(final Exchange exchange, final Object serviceObject, final Method m, final List<Object> params) { final InvocationContext invContext = exchange.get(InvocationContext.class); if (invContext == null) { return preEjbInvoke(exchange, m, params); } return super.invoke(exchange, serviceObject, m, params); }
protected SOAPFaultException findSoapFaultException(Throwable ex) { if (ex instanceof SOAPFaultException) { return (SOAPFaultException)ex; } if (ex.getCause() != null) { return findSoapFaultException(ex.getCause()); } return null; }
protected void updateWebServiceContext(Exchange exchange, MessageContext ctx) { // Guard against wrong type associated with header list. // Need to copy header only if the message is going out. if (ctx.containsKey(Header.HEADER_LIST) && ctx.get(Header.HEADER_LIST) instanceof List<?>) { List<?> list = (List<?>) ctx.get(Header.HEADER_LIST); if (list != null && !list.isEmpty()) { SoapMessage sm = (SoapMessage) createResponseMessage(exchange); if (sm != null) { Iterator<?> iter = list.iterator(); while (iter.hasNext()) { sm.getHeaders().add((Header) iter.next()); } } } } if (exchange.getOutMessage() != null) { Message out = exchange.getOutMessage(); if (out.containsKey(Message.PROTOCOL_HEADERS)) { Map<String, List<String>> heads = CastUtils .cast((Map<?, ?>)exchange.getOutMessage().get(Message.PROTOCOL_HEADERS)); if (heads.containsKey("Content-Type")) { List<String> ct = heads.get("Content-Type"); exchange.getOutMessage().put(Message.CONTENT_TYPE, ct.get(0)); heads.remove("Content-Type"); } } } }
exchange.getInMessage().put(FaultMode.class, FaultMode.CHECKED_APPLICATION_FAULT); throw createFault(ex.getCause(), m, params, true); } catch (Exception ex) { throw createFault(ex.getCause(), m, params, false); exchange.getInMessage().put(FaultMode.class, FaultMode.CHECKED_APPLICATION_FAULT); throw createFault(ex.getCause(), m, params, true); } catch (Exception ex) { throw createFault(ex.getCause(), m, params, false);
protected Object invoke(final Exchange exchange, final Object serviceObject, final Method m, final List<Object> params) { Object result = null; final InvocationContext invContext = exchange.get(InvocationContext.class); if (invContext == null) { log.debug("PreEJBInvoke"); result = preEjbInvoke(exchange, serviceObject, m, params); } else { log.debug("EJBInvoke"); // calls performInvocation() result = super.invoke(exchange, serviceObject, m, params); } return result; }
@Override protected Fault createFault(Throwable ex, Method m, List<Object> params, boolean checked) { //map the JAX-WS faults SOAPFaultException sfe = findSoapFaultException(ex); if (sfe != null) { SoapFault fault = new SoapFault(sfe.getFault().getFaultString(), ex, sfe.getFault().getFaultCodeAsQName()); fault.setRole(sfe.getFault().getFaultActor()); if (sfe.getFault().hasDetail()) { fault.setDetail(sfe.getFault().getDetail()); } return fault; } return super.createFault(ex, m, params, checked); }
protected void updateHeader(Exchange exchange, MessageContext ctx) { if (ctx.containsKey(Header.HEADER_LIST) && ctx.get(Header.HEADER_LIST) instanceof List<?>) { List<?> list = (List<?>) ctx.get(Header.HEADER_LIST); if (list != null && !list.isEmpty()) { SoapMessage sm = (SoapMessage) createResponseMessage(exchange); if (sm != null) { Iterator<?> iter = list.iterator(); while (iter.hasNext()) { Header header = (Header) iter.next(); if (header.getDirection() != Header.Direction.DIRECTION_IN && !header.getName().getNamespaceURI(). equals("http://docs.oasis-open.org/wss/2004/01/" + "oasis-200401-wss-wssecurity-secext-1.0.xsd") && !header.getName().getNamespaceURI(). equals("http://docs.oasis-open.org/" + "wss/oasis-wss-wssecurity-secext-1.1.xsd")) { //don't copy over security header, out interceptor chain will take care of it. sm.getHeaders().add(header); } } } } } }
params = Collections.singletonList(null); res = CastUtils.cast((List<?>)super.invoke(exchange, serviceObject, m, params));
@Override protected Fault createFault(Throwable ex, Method m, List<Object> params, boolean checked) { //map the JAX-WS faults SOAPFaultException sfe = findSoapFaultException(ex); if (sfe != null) { SoapFault fault = new SoapFault(sfe.getFault().getFaultString(), ex, sfe.getFault().getFaultCodeAsQName()); fault.setRole(sfe.getFault().getFaultActor()); if (sfe.getFault().hasDetail()) { fault.setDetail(sfe.getFault().getDetail()); } return fault; } return super.createFault(ex, m, params, checked); }