/******************************************************************************* * Copyright (c) 2014 Composent, Inc. 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: Scott Lewis - initial API and implementation ******************************************************************************/ package com.mycorp.examples.timeservice.consumer.ds.generic.auth; import java.util.HashMap; import java.util.Map; import org.eclipse.ecf.core.ContainerTypeDescription; import org.eclipse.ecf.core.IContainer; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.security.IConnectContext; import org.eclipse.ecf.core.security.IConnectInitiatorPolicy; import org.eclipse.ecf.core.sharedobject.ISharedObjectContainerClient; import org.eclipse.ecf.osgi.services.remoteserviceadmin.ConsumerContainerSelector; import org.eclipse.ecf.osgi.services.remoteserviceadmin.SelectContainerException; import org.eclipse.ecf.remoteservice.IRemoteServiceContainer; public class GenericAuthConsumerContainerSelector extends ConsumerContainerSelector { public GenericAuthConsumerContainerSelector() { super(true); } @Override protected IRemoteServiceContainer createContainer( ContainerTypeDescription containerTypeDescription, String containerTypeDescriptionName, @SuppressWarnings("rawtypes") Map properties) throws SelectContainerException { IRemoteServiceContainer result = super.createContainer( containerTypeDescription, containerTypeDescriptionName, properties); ISharedObjectContainerClient client = (ISharedObjectContainerClient) result .getContainer().getAdapter(ISharedObjectContainerClient.class); if (client != null) { client.setConnectInitiatorPolicy(new IConnectInitiatorPolicy() { public void refresh() { } public Object createConnectData(IContainer container, ID targetID, IConnectContext context) { // This is called when the client.connect method // is called. Here is our chance to send credentials // to the server. return getConnectData(); } public int getConnectTimeout() { return 30000; } }); } return result; } @SuppressWarnings({ "rawtypes", "unchecked" }) Object getConnectData() { Map results = new HashMap(); // Get system properties values, if present String username = System.getProperty("myUsername"); if (username != null) { results.put("username",username); String password = System.getProperty("myPassword"); if (password != null) results.put("password",password); } if (results.size() > 0) return results; return null; } }