public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException { Consumes consumesAnnotation = method.getMethod().getAnnotation(Consumes.class); List<String> supported = Arrays.asList(consumesAnnotation.value()); String contentType = request.getContentType(); if (!supported.isEmpty() && !supported.contains(contentType)) { unsupported( String.format( "Request with media type [%s]. Expecting one of %s.", contentType, supported)); return; } try { Deserializer deserializer = deserializers.deserializerFor(contentType, container); if (deserializer == null) { unsupported( String.format("Unable to handle media type [%s]: no deserializer found.", contentType)); return; } Object[] deserialized = deserializer.deserialize(request.getInputStream(), method); Object[] parameters = methodInfo.getParameters(); for (int i = 0; i < deserialized.length; i++) { if (deserialized[i] != null) { parameters[i] = deserialized[i]; } } stack.next(method, resourceInstance); } catch (IOException e) { throw new InterceptionException(e); } }
@Override public void intercept(InterceptorStack stack, ControllerMethod method, Object instance) throws InterceptionException { try { stack.next(method, instance); } catch (Exception e) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); Throwable cause = e.getCause(); if (cause != null) { if (cause instanceof ConstraintViolationException) { Set<ConstraintViolation<?>> constraintViolations = ((ConstraintViolationException) cause).getConstraintViolations(); pw.printf("\nConstraint Violations: \n"); for (ConstraintViolation<?> constraintViolation : constraintViolations) { pw.printf("\t" + constraintViolation.getConstraintDescriptor().getAnnotation() + "\n"); } pw.printf("\n"); log.error(sw.toString()); } cause.printStackTrace(pw); } else { e.printStackTrace(pw); } pw.close(); result.include("stacktrace", sw.toString()); throw e; } }
@Override public void intercept(InterceptorStack stack, ControllerMethod method, Object controllerInstance) throws InterceptionException { Map<String, Object> parameters = (Map<String, Object>) session.getAttribute(FLASH_INCLUDED_PARAMETERS); if (parameters != null) { parameters = new HashMap<>(parameters); session.removeAttribute(FLASH_INCLUDED_PARAMETERS); for (Entry<String, Object> parameter : parameters.entrySet()) { result.include(parameter.getKey(), parameter.getValue()); } } response.addRedirectListener( new RedirectListener() { @Override public void beforeRedirect() { Map<String, Object> included = result.included(); if (!included.isEmpty()) { try { session.setAttribute(FLASH_INCLUDED_PARAMETERS, new HashMap<>(included)); } catch (IllegalStateException e) { LOGGER.warn( "HTTP Session was invalidated. It is not possible to include " + "Result parameters on Flash Scope", e); } } } }); stack.next(method, controllerInstance); }
public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException { try { stack.next(method, resourceInstance); } catch (Exception e) { logger.error(e); result.use(Results.http()).body("Ocorreu um erro na aplicação"); } }
@Override public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) throws InterceptionException { if (user.isSignedIn()) { stack.next(method, instance); } else if (isAjaxRequest()) { result.use(http()).sendError(SC_UNAUTHORIZED); } else { result.redirectTo("/?urlAfterLogin=" + getReferer()); } }
public void intercept( final InterceptorStack stack, final ResourceMethod method, final Object instance) { Transaction transaction = null; try { transaction = session.beginTransaction(); stack.next(method, instance); transaction.commit(); } finally { if (transaction.isActive()) { transaction.rollback(); } } }
public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) { if (usuarioSession.getUsuario() != null) { Permission methodPermission = method.getMethod().getAnnotation(Permission.class); Permission controllerPermission = method.getResource().getType().getAnnotation(Permission.class); if (this.hasAccess(methodPermission) && this.hasAccess(controllerPermission)) { stack.next(method, resourceInstance); } else { result.redirectTo(LoginController.class).acessoNegado(); } } else { result.redirectTo(LoginController.class).login(); } }
public void intercept( InterceptorStack stack, ResourceMethod ignorableMethod, Object resourceInstance) throws InterceptionException { try { ResourceMethod method = translator.translate(requestInfo); methodInfo.setResourceMethod(method); stack.next(method, resourceInstance); } catch (ResourceNotFoundException e) { resourceNotFoundHandler.couldntFind(requestInfo); } catch (MethodNotAllowedException e) { LOGGER.debug(e.getMessage(), e); methodNotAllowedHandler.deny(requestInfo, e.getAllowedMethods()); } }
/** * Melhoria aplicada ao método, caso o objeto (parâmetro) que foi informado não foi encontrado na * consulta do banco de dados, somente irá retornar 404 (Result.nothing()) se o usuário colocou o * parâmetro como <code>required=true</code>. * * @param stack * @param method * @param resourceInstance * @throws InterceptionException */ public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException { Annotation[][] annotations = method.getMethod().getParameterAnnotations(); String[] names = provider.parameterNamesFor(method.getMethod()); Class<?>[] types = method.getMethod().getParameterTypes(); Object[] args = flash.consumeParameters(method); for (int i = 0; i < names.length; i++) { Iterable<LoadObject> loads = Iterables.filter(asList(annotations[i]), LoadObject.class); if (!isEmpty(loads)) { Object loaded = this.load(names[i], types[i]); if (loaded == null) { // Caso tenha a anotação LoadObject, o fluxo da aplicação será definido de acordo // com as definições feitas na anotação. LoadObject next = loads.iterator().next(); if (next != null && next.required()) { if (next.redirectToWhenObjectNotFound() != null && !next.redirectToWhenObjectNotFound().isEmpty()) { logger.info( "Entity not found, the page will be redirected to " + next.redirectToWhenObjectNotFound()); result.redirectTo(next.redirectToWhenObjectNotFound()); } else { logger.info( "Entity not found, the redirect URL was not specified, then i will be return nothing."); result.nothing(); return; } } } if (args != null) args[i] = loaded; else request.setAttribute(names[i], loaded); } } flash.includeParameters(method, args); stack.next(method, resourceInstance); }