/*******************************************************************************
* Copyright (c) 2009 EclipseSource and others. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.tests.remoteservice.generic;
import org.eclipse.ecf.core.ContainerFactory;
import org.eclipse.ecf.core.IContainer;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.identity.IDFactory;
import org.eclipse.ecf.remoteservice.IRemoteService;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainer;
import org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter;
import org.eclipse.ecf.remoteservice.IRemoteServiceReference;
import org.eclipse.ecf.remoteservice.RemoteServiceContainer;
import org.eclipse.ecf.tests.remoteservice.IConcatService;
import org.eclipse.osgi.util.NLS;
public class SSLSimpleConcatClient {
public static final String CLIENT_TYPE = "ecf.generic.ssl.client";
private IRemoteServiceContainer rsContainer;
protected String SERVER_ID = "ecfssl://localhost:{0}"+SSLSimpleConcatServer.PATH;
private IRemoteServiceReference rsReference;
private IRemoteService remoteService;
public synchronized IRemoteService getRemoteService() {
if (remoteService == null) {
remoteService = rsContainer.getContainerAdapter().getRemoteService(rsReference);
}
return remoteService;
}
public void start(int port) throws Exception {
IContainer client = ContainerFactory.getDefault().createContainer(
CLIENT_TYPE);
// Get adapter for accessing remote services
IRemoteServiceContainerAdapter adapter = (IRemoteServiceContainerAdapter) client
.getAdapter(IRemoteServiceContainerAdapter.class);
rsContainer = new RemoteServiceContainer(client,adapter);
System.out.println("Client created with ID=" + client.getID());
ID connectTargetID = IDFactory.getDefault().createStringID(
NLS.bind(SERVER_ID, new Integer(port)));
System.out.println("Attempting connect to id="+connectTargetID);
client.connect(connectTargetID, null);
System.out.println("Client connected to connectTargetID="
+ connectTargetID);
Thread.sleep(1000);
// Get remote service reference
IRemoteServiceReference[] refs = adapter.getRemoteServiceReferences(
(ID[]) null, IConcatService.class.getName(), null);
rsReference = refs[0];
System.out.println("Remote service with ref=" + refs[0]);
}
public void stop() {
if (rsContainer != null) {
rsContainer.getContainerAdapter().ungetRemoteService(rsReference);
remoteService = null;
rsReference = null;
rsContainer.getContainer().disconnect();
rsContainer = null;
}
}
}