blob: fb6175d2c500d77c6296b5779770165cdc8e5165 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2015 Tasktop Technologies and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.tasks.tests.support;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.spi.RepositoryConnectorBranding;
import org.eclipse.mylyn.tasks.tests.TestException;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnectorUi;
import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi;
import com.google.common.collect.ImmutableList;
public class MockRepositoryConnectorAdapter implements IAdapterFactory {
public final static class DynamicMockRepositoryConnectorUi extends MockRepositoryConnectorUi {
private final AbstractRepositoryConnector connector;
DynamicMockRepositoryConnectorUi(AbstractRepositoryConnector connector) {
this.connector = connector;
}
@Override
public String getConnectorKind() {
return connector.getConnectorKind();
}
}
private static final Class<?>[] ADAPTER_LIST = new Class<?>[] { AbstractRepositoryConnector.class };
@Override
public Object getAdapter(Object adaptableObject, @SuppressWarnings("rawtypes") Class adapterType) {
if (adaptableObject instanceof MockRepositoryConnector) {
final AbstractRepositoryConnector connector = (AbstractRepositoryConnector) adaptableObject;
if (adapterType == AbstractRepositoryConnectorUi.class) {
return new DynamicMockRepositoryConnectorUi(connector);
} else if (adapterType == RepositoryConnectorBranding.class) {
return new RepositoryConnectorBranding() {
@Override
public InputStream getOverlayImageData() throws IOException {
return CommonTestUtil.getResource(this, "testdata/icons/mock-overlay.gif");
}
@Override
public InputStream getBrandingImageData() throws IOException {
return CommonTestUtil.getResource(this, "testdata/icons/mock-repository.gif");
}
@Override
public List<String> getBrands() {
ArrayList<String> brands = new ArrayList<String>(
ImmutableList.of("org.mylyn", "org.eclipse", "exceptional"));
brands.add(1, null);
return brands;
}
@Override
public String getConnectorLabel(String brand) {
if ("exceptional".equals(brand)) {
throw new TestException();
} else if (getBrands().contains(brand)) {
return "Label for " + brand;
}
return super.getConnectorLabel(brand);
}
@Override
public InputStream getOverlayImageData(final String brand) throws IOException {
if ("org.mylyn".equals(brand)) {
return CommonTestUtil.getResource(this, "testdata/icons/mock-5x5.gif");
} else if ("org.eclipse".equals(brand)) {
return CommonTestUtil.getResource(this, "testdata/icons/mock-4x4.gif");
} else if ("exceptional".equals(brand)) {
throw new NullPointerException();
}
return super.getOverlayImageData(brand);
}
@Override
public InputStream getBrandingImageData(final String brand) throws IOException {
if ("org.mylyn".equals(brand)) {
return CommonTestUtil.getResource(this, "testdata/icons/mock-3x3.gif");
} else if ("org.eclipse".equals(brand)) {
return CommonTestUtil.getResource(this, "testdata/icons/mock-2x2.gif");
} else if ("exceptional".equals(brand)) {
throw new NullPointerException();
}
return super.getBrandingImageData(brand);
}
};
}
}
return null;
}
@SuppressWarnings("rawtypes")
@Override
public Class[] getAdapterList() {
return ADAPTER_LIST;
}
}