Created
February 2, 2012 18:04
-
-
Save carlosspohr/1724894 to your computer and use it in GitHub Desktop.
Passando a instância dos facades lá no parameters provider do VRaptor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package br.com.swa.portais.commons; | |
import java.util.List; | |
import java.util.ResourceBundle; | |
import org.apache.log4j.Logger; | |
import swa.persistency.annotation.RMI; | |
import swa.persistency.manager.ObjectManager; | |
import br.com.caelum.vraptor.http.ParametersProvider; | |
import br.com.caelum.vraptor.ioc.Component; | |
import br.com.caelum.vraptor.resource.ResourceMethod; | |
import br.com.caelum.vraptor.validator.Message; | |
import br.com.swa.portais.commons.components.IFacadeProvider; | |
@Component | |
public class FacadeParametersProvider implements ParametersProvider { //implements ParametersProvider | |
private static final Logger logger = Logger.getLogger(FacadeInstantiatorInterceptor.class); | |
private final ParametersProvider delegate; | |
private final IFacadeProvider facadeProvider; | |
public FacadeParametersProvider(ParametersProvider delegate, IFacadeProvider facadeProvider) { | |
this.delegate = delegate; | |
this.facadeProvider = facadeProvider; | |
} | |
@SuppressWarnings("unchecked") | |
@Override | |
public Object[] getParametersFor(ResourceMethod method, List<Message> errors, ResourceBundle bundle) { | |
Object[] parameters = delegate.getParametersFor(method, errors, bundle); | |
Class<?>[] types = method.getMethod().getParameterTypes(); | |
for (int i = 0; i < types.length; i++) | |
{ | |
if(types[i].isAnnotationPresent(RMI.class)){ | |
logger.info("Configurando uma instância do manager para a classe [" + types[i].getSimpleName() + "]"); | |
Class<? extends ObjectManager> clazz = (Class<? extends ObjectManager>) types[i]; | |
ObjectManager manager = facadeProvider.getInstance(clazz); | |
parameters[i] = manager; | |
} | |
} | |
return parameters; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment