blob: 940be397caa49ea0df05ffc61107478eaeb0e295 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.modules.bugzilla;
import org.netbeans.modules.bugzilla.repository.BugzillaRepository;
import java.net.MalformedURLException;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaAttribute;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaClient;
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryConnector;
import org.eclipse.mylyn.internal.bugzilla.core.RepositoryConfiguration;
import org.eclipse.mylyn.tasks.core.RepositoryResponse;
import org.eclipse.mylyn.tasks.core.RepositoryStatus;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.netbeans.modules.bugtracking.APIAccessor;
import org.netbeans.modules.bugtracking.IssueImpl;
import org.netbeans.modules.bugtracking.QueryImpl;
import org.netbeans.modules.bugtracking.RepositoryImpl;
import org.netbeans.modules.bugtracking.api.Issue;
import org.netbeans.modules.bugtracking.api.Query;
import org.netbeans.modules.bugtracking.api.Repository;
import org.netbeans.modules.bugtracking.spi.RepositoryInfo;
import org.netbeans.modules.bugzilla.issue.BugzillaIssue;
import org.netbeans.modules.bugzilla.query.BugzillaQuery;
import org.netbeans.modules.bugzilla.util.BugzillaUtil;
/**
*
* @author tomas
*/
public class TestUtil implements TestConstants {
public static void handleException(Exception exception) throws Throwable {
if (exception instanceof CoreException) {
CoreException e = (CoreException) exception;
IStatus status = e.getStatus();
if (status instanceof RepositoryStatus) {
RepositoryStatus rs = (RepositoryStatus) status;
String html = rs.getHtmlMessage();
if(html != null && !html.trim().equals("")) {
// HtmlBrowser.URLDisplayer displayer = HtmlBrowser.URLDisplayer.getDefault ();
// if (displayer != null) {
// displayer.showURL (url);
// } else {
// //LOG.info("No URLDisplayer found.");
// }
final HtmlPanel p = new HtmlPanel();
p.setHtml(html);
BugzillaUtil.show(p, "html", "ok");
}
throw new Exception(rs.getHtmlMessage());
}
if (e.getStatus().getException() != null) {
throw e.getStatus().getException();
}
if (e.getCause() != null) {
throw e.getCause();
}
throw e;
}
exception.printStackTrace();
throw exception;
}
public static TaskData createTaskData(BugzillaRepositoryConnector brc, TaskRepository repository, String summary, String desc, String typeName) throws MalformedURLException, CoreException {
TaskAttributeMapper attributeMapper = brc.getTaskDataHandler().getAttributeMapper(repository);
TaskData data = new TaskData(attributeMapper, repository.getConnectorKind(), repository.getRepositoryUrl(), "");
TaskAttribute rta = data.getRoot();
TaskAttribute ta = rta.getMappedAttribute(TaskAttribute.USER_ASSIGNED);
ta = rta.createMappedAttribute(TaskAttribute.SUMMARY);
ta.setValue(summary);
ta = rta.createMappedAttribute(TaskAttribute.DESCRIPTION);
ta.setValue(desc);
BugzillaClient client = brc.getClientManager().getClient(repository, NULL_PROGRESS_MONITOR);
RepositoryConfiguration rc = brc.getRepositoryConfiguration(repository, false, new NullProgressMonitor());
String os = client.getRepositoryConfiguration().getOSs().get(0);
ta = rta.createMappedAttribute(BugzillaAttribute.OP_SYS.getKey());
ta.setValue(os);
ta = rta.createMappedAttribute(BugzillaAttribute.PRODUCT.getKey());
ta.setValue(TEST_PROJECT);
String platform = client.getRepositoryConfiguration().getPlatforms().get(0);
ta = rta.createMappedAttribute(BugzillaAttribute.REP_PLATFORM.getKey());
ta.setValue(platform);
String version = client.getRepositoryConfiguration().getVersions(TEST_PROJECT).get(0);
ta = rta.createMappedAttribute(BugzillaAttribute.VERSION.getKey());
ta.setValue(version);
String component = client.getRepositoryConfiguration().getComponents(TEST_PROJECT).get(0);
ta = rta.createMappedAttribute(BugzillaAttribute.COMPONENT.getKey());
ta.setValue(component);
return data;
}
public static RepositoryResponse postTaskData(BugzillaRepositoryConnector brc, TaskRepository repository, TaskData data) throws CoreException {
Set<TaskAttribute> attrs = new HashSet<TaskAttribute>(); // XXX what is this for
return brc.getTaskDataHandler().postTaskData(repository, data, attrs, NULL_PROGRESS_MONITOR);
}
public static TaskData getTaskData(TaskRepository taskRepository, String id) throws CoreException {
BugzillaRepositoryConnector brc = Bugzilla.getInstance().getRepositoryConnector();
return brc.getTaskData(taskRepository, id, new NullProgressMonitor());
}
public static String createIssue(BugzillaRepository repo, String summary) throws MalformedURLException, CoreException {
BugzillaRepositoryConnector brc = Bugzilla.getInstance().getRepositoryConnector();
TaskRepository tr = repo.getTaskRepository();
TaskData data = TestUtil.createTaskData(brc, tr, summary, ISSUE_DESCRIPTION, ISSUE_SEVERITY);
RepositoryResponse rr = TestUtil.postTaskData(brc, tr, data);
return rr.getTaskId();
}
//
// public static RepositoryResponse addComment(BugzillaRepository repository, TaskData data, String comment) throws CoreException {
// return addComment(repository.getTaskRepository(), id, comment);
// }
public static RepositoryResponse addComment(TaskRepository taskRepository, String id, String comment) throws CoreException {
TaskData data = getTaskData(taskRepository, id);
return addComment(taskRepository, data, comment);
}
public static RepositoryResponse addComment(TaskRepository taskRepository, TaskData data, String comment) throws CoreException {
TaskAttribute ta = data.getRoot().createMappedAttribute(TaskAttribute.COMMENT_NEW);
ta.setValue(comment);
Set<TaskAttribute> attrs = new HashSet<TaskAttribute>();
attrs.add(ta);
return Bugzilla.getInstance().getRepositoryConnector().getTaskDataHandler().postTaskData(taskRepository, data, attrs, new NullProgressMonitor());
}
public static BugzillaRepository getRepository(String name, String url, String user, String psswd) {
RepositoryInfo info = new RepositoryInfo(name, BugzillaConnector.ID, url, name, name, user, null, psswd.toCharArray(), null);
BugzillaRepository repo = new BugzillaRepository(info);
repo.ensureCredentials();
return repo;
}
public static void validate(BugzillaRepositoryConnector brc, TaskRepository repository) throws Throwable {
try {
brc.getClientManager().getClient(repository, NULL_PROGRESS_MONITOR).validate(NULL_PROGRESS_MONITOR);
} catch (Exception ex) {
handleException(ex);
}
}
public static Query getQuery(BugzillaQuery bugzillaQuery) {
Repository repository = BugzillaUtil.getRepository(bugzillaQuery.getRepository());
return getQuery(repository, bugzillaQuery);
}
public static Issue getIssue(BugzillaIssue bugzillaIssue) {
Repository repository = BugzillaUtil.getRepository(bugzillaIssue.getRepository());
return getIssue(repository, bugzillaIssue);
}
private static Query getQuery(Repository repository, BugzillaQuery q) {
RepositoryImpl repositoryImpl = APIAccessor.IMPL.getImpl(repository);
QueryImpl impl = repositoryImpl.getQuery(q);
if(impl == null) {
return null;
}
return impl.getQuery();
}
private static Issue getIssue(Repository repository, BugzillaIssue i) {
RepositoryImpl repositoryImpl = APIAccessor.IMPL.getImpl(repository);
IssueImpl impl = repositoryImpl.getIssue(i);
return impl != null ? impl.getIssue() : null;
}
}