/******************************************************************************* | |
* Copyright (c) 2014, 2015 Tasktop Technologies 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: | |
* Tasktop Technologies - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.mylyn.internal.commons.repositories.ui; | |
import java.lang.reflect.Method; | |
import org.eclipse.core.runtime.IStatus; | |
import org.eclipse.core.runtime.Platform; | |
import org.eclipse.core.runtime.Status; | |
import org.eclipse.jface.dialogs.DialogPage; | |
import org.eclipse.mylyn.commons.core.StatusHandler; | |
import org.eclipse.mylyn.commons.repositories.core.auth.ICredentialsStore; | |
import org.eclipse.mylyn.commons.repositories.core.auth.UnavailableException; | |
import org.eclipse.mylyn.commons.ui.PlatformUiUtil; | |
import org.eclipse.mylyn.internal.commons.repositories.core.LocationService; | |
import org.eclipse.mylyn.internal.commons.repositories.core.RepositoriesCoreInternal; | |
import org.eclipse.osgi.util.NLS; | |
import org.osgi.framework.Bundle; | |
public class RepositoryUiUtil { | |
private RepositoryUiUtil() { | |
} | |
/** | |
* Sets an error message on the given page if the store with the given ID is not available. | |
*/ | |
public static void testCredentialsStore(String id, final DialogPage page) { | |
ICredentialsStore store = LocationService.getDefault().getCredentialsStore(id); | |
try { | |
store.testAvailability(); | |
} catch (UnavailableException e) { | |
StatusHandler.log(new Status(IStatus.ERROR, RepositoriesCoreInternal.ID_PLUGIN, | |
NLS.bind("Credential store not available with ID {0}", id), e)); //$NON-NLS-1$ | |
page.setErrorMessage(Messages.RepositoryUiUtil_secure_storage_unavailable); | |
} | |
} | |
@SuppressWarnings({ "restriction", "unchecked" }) | |
public static <T> T adapt(Object sourceObject, Class<T> adapter) { | |
try { | |
if (PlatformUiUtil.isNeonOrLater()) { | |
Bundle bundle = Platform.getBundle("org.eclipse.platform"); //$NON-NLS-1$ | |
Class<?> clazz = bundle.loadClass("org.eclipse.core.runtime.Adapters"); //$NON-NLS-1$ | |
Method adaptMethod = clazz.getMethod("adapt", new Class[] { Object.class, Class.class }); //$NON-NLS-1$ | |
Object result = adaptMethod.invoke(clazz, sourceObject, adapter); | |
return (T) result; | |
} else { | |
Bundle bundle = Platform.getBundle("org.eclipse.ui.workbench"); //$NON-NLS-1$ | |
Class<?> clazz = bundle.loadClass("org.eclipse.ui.internal.util.Util"); //$NON-NLS-1$ | |
Method adaptMethod = clazz.getMethod("getAdapter", new Class[] { Object.class, Class.class }); //$NON-NLS-1$ | |
Object result = adaptMethod.invoke(clazz, sourceObject, adapter); | |
return (T) result; | |
} | |
} catch (Exception e) { | |
StatusHandler.log(new Status(IStatus.ERROR, RepositoriesUiPlugin.ID_PLUGIN, "Could not adapt", e)); //$NON-NLS-1$ | |
} | |
return null; | |
} | |
} |