public Message invoke(Message msg) { Object body = msg.getBody(); if (body == null || !body.getClass().isArray()) { return next.invoke(msg); } Object[] payload = (Object[]) body; if (payload.length != 1) { throw new ServiceRuntimeException("Unexpected payload size: " + payload.length); } msg.setBody(payload[0]); return next.invoke(msg); }
public void addInterceptor(int index, Interceptor interceptor) { int i = 0; Interceptor next = interceptorChainHead; Interceptor prev = null; while (next != null && i < index) { prev = next; next = next.getNext(); i++; } if (i == index) { if (prev != null) { prev.setNext(interceptor); } else { interceptorChainHead = interceptor; } interceptor.setNext(next); if (next == null) { interceptorChainTail = interceptor; } } else { throw new ArrayIndexOutOfBoundsException(index); } }
public void addInterceptor(Interceptor interceptor) { if (interceptorChainHead == null) { interceptorChainHead = interceptor; } else { interceptorChainTail.setNext(interceptor); } interceptorChainTail = interceptor; }
public Message invoke(Message msg) { SecuritySubject subject = msg.getWorkContext().getSubject(); Authentication old = SecurityContextHolder.getContext().getAuthentication(); try { if (subject != null) { Authentication authentication = subject.getDelegate(Authentication.class); SecurityContextHolder.getContext().setAuthentication(authentication); } return next.invoke(msg); } finally { SecurityContextHolder.getContext().setAuthentication(old); } }
public Message invoke(Message msg) { transformInput(msg); Message ret = next.invoke(msg); return transformOutput(ret); }
public Message invoke(Message msg) { Message ret = next.invoke(msg); if (ret.isFault() && expected.equals(ret.getBody().getClass())) { ret.setBody(null); } return ret; }
public Message invoke(Message msg) { msg.setBody(new Object[]{msg.getBody()}); return next.invoke(msg); }
public void run() { Message request = MessageCache.getAndResetMessage(); try { request.setBody(frames[0]); int methodIndex = ByteBuffer.wrap(frames[1]).getInt(); WorkContext context = setWorkContext(frames[2]); request.setWorkContext(context); Interceptor interceptor = interceptors[methodIndex]; interceptor.invoke(request); } finally { request.reset(); } } });
Message response = next.invoke(message); Object result = response.getBody();
public void run() { Message request = MessageCache.getAndResetMessage(); try { request.setBody(frames[0]); int methodIndex = ByteBuffer.wrap(frames[1]).getInt(); WorkContext context = setWorkContext(frames[2]); request.setWorkContext(context); Interceptor interceptor = interceptors[methodIndex]; // invoke the service Message response = interceptor.invoke(request); Object responseBody = response.getBody(); if (!(responseBody instanceof byte[])) { throw new ServiceRuntimeException("Return value not serialized"); } // queue the response try { queue.put(new Response(clientId, (byte[]) responseBody)); } catch (InterruptedException e) { Thread.interrupted(); } } finally { request.reset(); // context.reset(); } } });
public Message invoke(Message msg) { UsernamePasswordToken token = new UsernamePasswordToken(username, password); try { SecuritySubject subject = authenticationService.authenticate(token); msg.getWorkContext().setSubject(subject); } catch (AuthenticationException e) { throw new ServiceUnavailableException("Error authenticating", e); } return next.invoke(msg); }
Message ret = head.invoke(input);
public Object invoke(Method method, Object[] args) throws Throwable { InvocationChain invocationChain = chains.get(method.getName()); if (invocationChain == null) { throw new ServiceRuntimeException("Unknown resource method: " + method.toString()); } WorkContext context = WorkContextCache.getThreadWorkContext(); // work context set previously in RsContainer Message message = MessageCache.getAndResetMessage(); try { if (authenticate) { authenticate(context); } message.setWorkContext(context); message.setBody(args); if (invocationChain != null) { Interceptor headInterceptor = invocationChain.getHeadInterceptor(); Message ret = headInterceptor.invoke(message); if (ret.isFault()) { return handleFault(ret); } else { return ret.getBody(); } } else { return null; } } catch (RuntimeException e) { throw new InvocationTargetException(e); } finally { message.reset(); } }
public Message invoke(Message msg) { WorkContext workContext = msg.getWorkContext(); try { SecuritySubject subject = workContext.getSubject(); if (subject == null) { msg.setBodyWithFault(new ServiceRuntimeException("Subject not authenticated")); return msg; } authorizationService.checkRoles(subject, roles); return next.invoke(msg); } catch (AuthorizationException e) { msg.setBodyWithFault(new ServiceRuntimeException(e)); return msg; } }
Message ret = head.invoke(input);
private Message interceptService(Message message) { Object[] payload = (Object[]) message.getBody(); if (payload != null && payload.length > 0) { OMElement omElement = (OMElement) payload[0]; Object jaxbObject = inTransformer.transform(omElement, null); message.setBody(new Object[]{jaxbObject}); } Message response = next.invoke(message); Object result; if (response.isFault()) { Object webFault = response.getBody(); result = getFault(webFault); } else { result = response.getBody(); } if (result != null) { OMElement omElement = outTransformer.transform(result, null); response.setBody(omElement); } return response; }
public void run() { WorkContext workContext = WorkContextCache.getAndResetThreadWorkContext(); workContext.addCallbackReferences(stack); workContext.addHeaders(headers); workContext.setSubject(subject); Message message = MessageCache.getAndResetMessage(); message.setBody(payload); message.setWorkContext(workContext); Message response = next.invoke(message); if (response.isFault()) { // log the exception monitor.onError((Throwable) response.getBody()); } message.reset(); workContext.reset(); }
public boolean onUpload(String fileName, String contentType, InputStream uploadData) throws Exception { Object[] args = new Object[]{fileName, uploadData}; WorkContext workContext = WorkContextCache.getAndResetThreadWorkContext(); Message input = MessageCache.getAndResetMessage(); try { // set the header value for the request context workContext.setHeader(FtpConstants.HEADER_CONTENT_TYPE, contentType); input.setWorkContext(workContext); input.setBody(args); Message response = getInterceptor().invoke(input); if (response.isFault()) { monitor.fileProcessingError(servicePath, (Throwable) response.getBody()); input.reset(); return false; } return true; } finally { input.reset(); workContext.reset(); } }
ret = next.invoke(message); } catch (RuntimeException e) { if (txAction == TxAction.BEGIN && transaction == null) {