/*******************************************************************************
* Copyright (c) 2004 Composent, Inc. 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: Composent, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.core.security;
import java.io.IOException;
/**
* Helper class for creating instances of IConnectContext
*
*/
public class ConnectContextFactory {
private ConnectContextFactory() {
super();
}
/**
* Create username and password connect context, where username is
* represented as a String and password as an Object.
*
* @param username
* the username
* @param password
* the password
* @return IConnectContext for accessing the username and password
*/
public static IConnectContext createUsernamePasswordConnectContext(final String username, final Object password) {
return new IConnectContext() {
public CallbackHandler getCallbackHandler() {
return new CallbackHandler() {
/**
* @param callbacks
* @throws IOException not thrown by this implementation.
* @throws UnsupportedCallbackException not thrown by this implementation.
*/
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
if (callbacks == null)
return;
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof NameCallback) {
NameCallback ncb = (NameCallback) callbacks[i];
ncb.setName(username);
} else if (callbacks[i] instanceof ObjectCallback) {
ObjectCallback ocb = (ObjectCallback) callbacks[i];
ocb.setObject(password);
} else if (callbacks[i] instanceof PasswordCallback && password instanceof String) {
PasswordCallback pc = (PasswordCallback) callbacks[i];
pc.setPassword((String) password);
} else if (callbacks[i] instanceof PassphraseCallback && password instanceof String) {
PassphraseCallback pc = (PassphraseCallback) callbacks[i];
pc.setPassphrase((String) password);
}
}
}
};
}
};
}
/**
* Create password connect context, where password is represented as a
* String
*
* @param password
* the password to use
* @return IConnectContext for accessing the given password
*/
public static IConnectContext createPasswordConnectContext(final String password) {
return new IConnectContext() {
public CallbackHandler getCallbackHandler() {
return new CallbackHandler() {
/**
* @param callbacks
* @throws IOException not thrown by this implementation.
* @throws UnsupportedCallbackException not thrown by this implementation.
*/
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
if (callbacks == null)
return;
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof ObjectCallback) {
ObjectCallback ocb = (ObjectCallback) callbacks[i];
ocb.setObject(password);
} else if (callbacks[i] instanceof PasswordCallback) {
PasswordCallback pc = (PasswordCallback) callbacks[i];
pc.setPassword(password);
} else if (callbacks[i] instanceof PassphraseCallback) {
PassphraseCallback pc = (PassphraseCallback) callbacks[i];
pc.setPassphrase(password);
}
}
}
};
}
};
}
}