/*** * Copyright (c) 2009 Caelum - www.caelum.com.br/opensource All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package br.com.caelum.vraptor.core; import static br.com.caelum.vraptor.proxy.CDIProxies.extractRawTypeIfPossible; import static br.com.caelum.vraptor.view.Results.logic; import static br.com.caelum.vraptor.view.Results.page; import static br.com.caelum.vraptor.view.Results.status; import br.com.caelum.vraptor.Result; import br.com.caelum.vraptor.view.Results; /** * An abstract result that implements all shortcut methods in the * recommended way * * @author Lucas Cavalcanti * @since 3.1.2 */ public abstract class AbstractResult implements Result { @Override public void forwardTo(String uri) { use(page()).forwardTo(uri); } @Override public void redirectTo(String uri) { use(page()).redirectTo(uri); } @Override public <T> T forwardTo(Class<T> controller) { return use(logic()).forwardTo(controller); } @Override public <T> T redirectTo(Class<T> controller) { return use(logic()).redirectTo(controller); } @Override public <T> T of(Class<T> controller) { return use(page()).of(controller); } @Override @SuppressWarnings("unchecked") public <T> T redirectTo(T controller) { return (T) redirectTo((Class<T>) extractRawTypeIfPossible(controller.getClass())); } @Override @SuppressWarnings("unchecked") public <T> T forwardTo(T controller) { return (T) forwardTo((Class<T>) extractRawTypeIfPossible(controller.getClass())); } @Override @SuppressWarnings("unchecked") public <T> T of(T controller) { return (T) of((Class<T>) extractRawTypeIfPossible(controller.getClass())); } @Override public void nothing() { use(Results.nothing()); } @Override public void notFound() { use(status()).notFound(); } @Override public void permanentlyRedirectTo(String uri) { use(status()).movedPermanentlyTo(uri); } @Override public <T> T permanentlyRedirectTo(Class<T> controller) { return use(status()).movedPermanentlyTo(controller); } @Override @SuppressWarnings("unchecked") public <T> T permanentlyRedirectTo(T controller) { return (T) use(status()).movedPermanentlyTo(controller.getClass()); } }