/******************************************************************************* * 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; } }