package org.ourgrid.broker.communication.sender;
import org.ourgrid.broker.BrokerConstants;
import org.ourgrid.broker.response.LoginResponseTO;
import org.ourgrid.common.interfaces.LocalWorkerProvider;
import org.ourgrid.common.interfaces.LocalWorkerProviderClient;
import org.ourgrid.common.internal.SenderIF;
import br.edu.ufcg.lsd.commune.container.ObjectDeployment;
import br.edu.ufcg.lsd.commune.container.servicemanager.ServiceManager;
import br.edu.ufcg.lsd.commune.identification.ServiceID;
public class LoginSender implements SenderIF<LoginResponseTO> {
public void execute(LoginResponseTO response,
ServiceManager manager) {
ServiceID serviceID = ServiceID.parse(response.getStubAddress());
LocalWorkerProviderClient lwpc = getLocalWorkerProviderClient(manager);
LocalWorkerProvider lwp = (LocalWorkerProvider) manager.getStub(serviceID, LocalWorkerProvider.class);
lwp.login(lwpc);
}
private LocalWorkerProviderClient getLocalWorkerProviderClient(ServiceManager manager) {
ObjectDeployment objectDeployment = manager.getObjectDeployment(BrokerConstants.LOCAL_WORKER_PROVIDER_CLIENT);
LocalWorkerProviderClient lwpc = (LocalWorkerProviderClient) objectDeployment.getObject();
return (LocalWorkerProviderClient) lwpc;
}
}