/*
* Coverity Sonar Plugin
* Copyright (c) 2017 Synopsys, Inc
* support@coverity.com
*
* 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.
*/
package org.sonar.plugins.coverity.ws;
import com.coverity.ws.v9.*;
import org.apache.commons.lang.NotImplementedException;
import org.apache.commons.lang.StringUtils;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.io.IOException;
import java.net.URL;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.List;
public class TestCIMClient extends CIMClient {
private TestConfigurationService testConfigurationService;
private TestDefectService testDefectService;
public TestCIMClient() {
this("test-host", 8443, "test-user", "password", true);
}
public TestCIMClient(String host, int port, String user, String password, boolean ssl) {
super(host, port, user, password, ssl);
testConfigurationService = new TestConfigurationService();
testDefectService = new TestDefectService();
}
@Override
public ConfigurationService getConfigurationService() throws IOException {
return testConfigurationService;
}
@Override
public DefectService getDefectService() throws IOException {
return testDefectService;
}
public void setupProject(String projectName) {
testConfigurationService.setupProject(projectName);
}
public void setupDefect(String domain, String checkerName, String filePath) {
testDefectService.addDefect(domain, checkerName, filePath);
}
public static class TestConfigurationService implements ConfigurationService {
private List<ProjectDataObj> projects;
public TestConfigurationService() {
this.projects = new ArrayList<>();
}
public void setupProject(String projectName) {
final ProjectDataObj projectDataObj = new ProjectDataObj();
ProjectIdDataObj projectIdDataObj = new ProjectIdDataObj();
projectIdDataObj.setName(projectName);
projectDataObj.setId(projectIdDataObj);
projectDataObj.setProjectKey((long)projects.size());
StreamDataObj streamDataObj = new StreamDataObj();
StreamIdDataObj streamIdDataObj = new StreamIdDataObj();
streamIdDataObj.setName(projectName + "-stream");
streamDataObj.setId(streamIdDataObj);
projectDataObj.getStreams().add(streamDataObj);
projects.add(projectDataObj);
}
@Override
public void updateAttribute(AttributeDefinitionIdDataObj attributeDefinitionId, AttributeDefinitionSpecDataObj attributeDefinitionSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void deleteAttribute(AttributeDefinitionIdDataObj attributeDefinitionId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createComponentMap(ComponentMapSpecDataObj componentMapSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateComponentMap(ComponentMapIdDataObj componentMapId, ComponentMapSpecDataObj componentMapSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void deleteComponentMap(ComponentMapIdDataObj componentMapId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateGroup(GroupIdDataObj groupId, GroupSpecDataObj groupSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void deleteGroup(GroupIdDataObj groupId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createProject(ProjectSpecDataObj projectSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateProject(ProjectIdDataObj projectId, ProjectSpecDataObj projectSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void deleteProject(ProjectIdDataObj projectId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createRole(RoleSpecDataObj roleSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateRole(RoleIdDataObj roleId, RoleSpecDataObj roleSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void deleteRole(RoleIdDataObj roleId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createStream(StreamSpecDataObj streamSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateStream(StreamIdDataObj streamId, StreamSpecDataObj streamSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void deleteStream(StreamIdDataObj streamId, boolean onlyIfEmpty) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createTriageStore(TriageStoreSpecDataObj triageStoreSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateTriageStore(TriageStoreIdDataObj triageStoreId, TriageStoreSpecDataObj triageStoreSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void deleteTriageStore(TriageStoreIdDataObj triageStoreId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createUser(UserSpecDataObj userSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateUser(String username, UserSpecDataObj userSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void deleteUser(String username) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public UserDataObj getUser(String username) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<StreamDataObj> getStreams(StreamFilterSpecDataObj filterSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void mergeTriageStores(List<TriageStoreIdDataObj> srcTriageStoreIds, TriageStoreIdDataObj triageStoreId, boolean deleteSourceStores, boolean assignStreamsToTargetStore) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<PermissionDataObj> getAllPermissions() {
throw new NotImplementedException();
}
@Override
public List<LdapConfigurationDataObj> getAllLdapConfigurations() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<DeleteSnapshotJobInfoDataObj> getDeleteSnapshotJobInfo(List<SnapshotIdDataObj> snapshotId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<SnapshotIdDataObj> getSnapshotsForStream(StreamIdDataObj streamId, SnapshotFilterSpecDataObj filterSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void deleteLdapConfiguration(ServerDomainIdDataObj serverDomainIdDataObj) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<FeatureUpdateTimeDataObj> getLastUpdateTimes() {
throw new NotImplementedException();
}
@Override
public void setAcceptingNewCommits(boolean acceptNewCommits) {
throw new NotImplementedException();
}
@Override
public void deleteSnapshot(List<SnapshotIdDataObj> snapshotId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void executeNotification(String viewname) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public StreamDataObj copyStream(ProjectIdDataObj projectId, StreamIdDataObj sourceStreamId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createStreamInProject(ProjectIdDataObj projectId, StreamSpecDataObj streamSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void setMessageOfTheDay(String message) {
throw new NotImplementedException();
}
@Override
public String getMessageOfTheDay() {
throw new NotImplementedException();
}
@Override
public List<ProjectDataObj> getProjects(ProjectFilterSpecDataObj filterSpec) throws CovRemoteServiceException_Exception {
if (!StringUtils.isEmpty(filterSpec.getNamePattern()))
{
List<ProjectDataObj> matchingProjects = new ArrayList<>();
for (ProjectDataObj project : projects) {
if (project.getId().getName().equals(filterSpec.getNamePattern()))
matchingProjects.add(project);
}
return matchingProjects;
}
return projects;
}
@Override
public List<ComponentMapDataObj> getComponentMaps(ComponentMapFilterSpecDataObj filterSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<TriageStoreDataObj> getTriageStores(TriageStoreFilterSpecDataObj filterSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<LocalizedValueDataObj> getCategoryNames() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<String> getDefectStatuses() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<SnapshotInfoDataObj> getSnapshotInformation(List<SnapshotIdDataObj> snapshotIds) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateSnapshotInfo(SnapshotIdDataObj snapshotId, SnapshotInfoDataObj snapshotData) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public CommitStateDataObj getCommitState() {
throw new NotImplementedException();
}
@Override
public List<ServerDomainIdDataObj> getLdapServerDomains() {
throw new NotImplementedException();
}
@Override
public XMLGregorianCalendar getServerTime() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public ConfigurationDataObj getSystemConfig() {
throw new NotImplementedException();
}
@Override
public LicenseStateDataObj getLicenseState() {
throw new NotImplementedException();
}
@Override
public SnapshotPurgeDetailsObj getSnapshotPurgeDetails() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createLdapConfiguration(LdapConfigurationSpecDataObj ldapConfigurationSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateLdapConfiguration(ServerDomainIdDataObj serverDomainIdDataObj, LdapConfigurationSpecDataObj ldapConfigurationSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void setSnapshotPurgeDetails(SnapshotPurgeDetailsObj purgeDetailsSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void setBackupConfiguration(BackupConfigurationDataObj backupConfigurationDataObj) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<ProjectDataObj> getDeveloperStreamsProjects(ProjectFilterSpecDataObj filterSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public SignInSettingsDataObj getSignInConfiguration() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public LoggingConfigurationDataObj getLoggingConfiguration() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void setLoggingConfiguration(LoggingConfigurationDataObj loggingConfigurationDataObj) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void setSkeletonizationConfiguration(SkeletonizationConfigurationDataObj skeletonizationConfigurationDataObj) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void importLicense(LicenseSpecDataObj licenseSpecDataObj) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public BackupConfigurationDataObj getBackupConfiguration() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public SkeletonizationConfigurationDataObj getSkeletonizationConfiguration() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public LicenseDataObj getLicenseConfiguration() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public String getArchitectureAnalysisConfiguration() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void setArchitectureAnalysisConfiguration(String architectureAnalysisConfiguration) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateSignInConfiguration(SignInSettingsDataObj signInSettingsDataObj) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<String> getCheckerNames() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public VersionDataObj getVersion() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createGroup(GroupSpecDataObj groupSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createAttribute(AttributeDefinitionSpecDataObj attributeDefinitionSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<LocalizedValueDataObj> getTypeNames() throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public AttributeDefinitionDataObj getAttribute(AttributeDefinitionIdDataObj attributeDefinitionId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public ComponentDataObj getComponent(ComponentIdDataObj componentId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public GroupsPageDataObj getGroups(GroupFilterSpecDataObj filterSpec, PageSpecDataObj pageSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public UsersPageDataObj getUsers(UserFilterSpecDataObj filterSpec, PageSpecDataObj pageSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public RoleDataObj getRole(RoleIdDataObj roleId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public GroupDataObj getGroup(GroupIdDataObj groupId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<RoleDataObj> getAllRoles() {
throw new NotImplementedException();
}
@Override
public List<String> notify(List<String> usernames, String subject, String message) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<AttributeDefinitionDataObj> getAttributes() {
throw new NotImplementedException();
}
}
public static class TestDefectService implements DefectService {
private List<MergedDefectIdDataObj> mergedDefectIds = new ArrayList<>();
private List<MergedDefectDataObj> mergedDefects = new ArrayList<>();
public void addDefect(String domain, String checkerName, String filePath) {
MergedDefectIdDataObj idDataObj = new MergedDefectIdDataObj();
final long cid = (long) mergedDefects.size() + 1;
idDataObj.setCid(cid);
idDataObj.setMergeKey("MK_" + cid);
mergedDefectIds.add(idDataObj);
MergedDefectDataObj defectDataObj = new MergedDefectDataObj();
defectDataObj.setCid(cid);
defectDataObj.setMergeKey("MK_" + cid);
defectDataObj.setCheckerName(checkerName);
defectDataObj.setDomain(domain);
defectDataObj.setDisplayCategory(checkerName + "(category)");
defectDataObj.setDisplayType(checkerName + "(type)");
defectDataObj.setFilePathname(filePath);
defectDataObj.setFunctionDisplayName("defect_function_" + cid + "()");
// set default attribute values for filtering
defectDataObj.getDefectStateAttributeValues().add(newAttribute("Action", "Undecided"));
defectDataObj.getDefectStateAttributeValues().add(newAttribute("Classification", "Unclassified"));
defectDataObj.getDefectStateAttributeValues().add(newAttribute("Severity", "Unspecified"));
defectDataObj.setDisplayImpact("Low");
defectDataObj.setComponentName("Default.Other");
try {
GregorianCalendar calender = new GregorianCalendar();
calender.setTime(new SimpleDateFormat("yyyy-MM-dd").parse("2017-03-20"));
defectDataObj.setFirstDetected(DatatypeFactory.newInstance().newXMLGregorianCalendar(calender));
} catch (ParseException | DatatypeConfigurationException e) {
// ignore exceptions on setting dates
}
mergedDefects.add(defectDataObj);
}
private DefectStateAttributeValueDataObj newAttribute(String name, String value){
DefectStateAttributeValueDataObj attributeValueDataObj = new DefectStateAttributeValueDataObj();
AttributeDefinitionIdDataObj attributeDefinitionId = new AttributeDefinitionIdDataObj();
attributeDefinitionId.setName(name);
attributeValueDataObj.setAttributeDefinitionId(attributeDefinitionId);
AttributeValueIdDataObj attributeValueId = new AttributeValueIdDataObj();
attributeValueId.setName(value);
attributeValueDataObj.setAttributeValueId(attributeValueId);
return attributeValueDataObj;
}
@Override
public void updateDefectInstanceProperties(DefectInstanceIdDataObj defectInstanceId, List<PropertySpecDataObj> properties) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateStreamDefects(List<StreamDefectIdDataObj> streamDefectIds, DefectStateSpecDataObj defectStateSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<TriageHistoryDataObj> getTriageHistory(MergedDefectIdDataObj mergedDefectIdDataObj, List<TriageStoreIdDataObj> triageStoreIds) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<StreamDefectDataObj> getStreamDefects(List<MergedDefectIdDataObj> mergedDefectIdDataObjs, StreamDefectFilterSpecDataObj filterSpec) throws CovRemoteServiceException_Exception {
List<StreamDefectDataObj> streamDefectDataObjs = new ArrayList<>();
for (MergedDefectDataObj mergedDefectDataObj : mergedDefects) {
StreamDefectDataObj streamDataObj = new StreamDefectDataObj();
StreamDefectIdDataObj streamIdDataObj = new StreamDefectIdDataObj();
streamIdDataObj.setId(mergedDefectDataObj.getCid());
streamDataObj.setId(streamIdDataObj);
streamDataObj.setCid(mergedDefectDataObj.getCid());
streamDataObj.setCheckerName(mergedDefectDataObj.getCheckerName());
streamDataObj.setDomain(mergedDefectDataObj.getDomain());
DefectInstanceDataObj defectInstanceDataObj = new DefectInstanceDataObj();
defectInstanceDataObj.setCheckerName(mergedDefectDataObj.getCheckerName());
defectInstanceDataObj.setDomain(mergedDefectDataObj.getDomain());
final LocalizedValueDataObj impact = new LocalizedValueDataObj();
impact.setName(mergedDefectDataObj.getDisplayImpact());
impact.setDisplayName(mergedDefectDataObj.getDisplayImpact());
defectInstanceDataObj.setImpact(impact);
EventDataObj event = new EventDataObj();
event.setLineNumber(1);
defectInstanceDataObj.getEvents().add(event);
streamDataObj.getDefectInstances().add(defectInstanceDataObj);
streamDefectDataObjs.add(streamDataObj);
}
return streamDefectDataObjs;
}
@Override
public MergedDefectsPageDataObj getMergedDefectsForStreams(List<StreamIdDataObj> streamIds, MergedDefectFilterSpecDataObj filterSpec, PageSpecDataObj pageSpec, SnapshotScopeSpecDataObj snapshotScope) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<DefectChangeDataObj> getMergedDefectHistory(MergedDefectIdDataObj mergedDefectIdDataObj, List<StreamIdDataObj> streamIds) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void updateTriageForCIDsInTriageStore(TriageStoreIdDataObj triageStore, List<MergedDefectIdDataObj> mergedDefectIdDataObjs, DefectStateSpecDataObj defectState) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<ProjectMetricsDataObj> getTrendRecordsForProject(ProjectIdDataObj projectId, ProjectTrendRecordFilterSpecDataObj filterSpec) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<ComponentMetricsDataObj> getComponentMetricsForProject(ProjectIdDataObj projectId, List<ComponentIdDataObj> componentIds) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public void createMergedDefect(String mergeKey, XMLGregorianCalendar dateOriginated, String externalPreventVersion, String internalPreventVersion, String checkerName, String domainName) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public FileContentsDataObj getFileContents(StreamIdDataObj streamId, FileIdDataObj fileId) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public MergedDefectsPageDataObj getMergedDefectsForSnapshotScope(ProjectIdDataObj projectId, SnapshotScopeDefectFilterSpecDataObj filterSpec, PageSpecDataObj pageSpec, SnapshotScopeSpecDataObj snapshotScope) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public List<DefectDetectionHistoryDataObj> getMergedDefectDetectionHistory(MergedDefectIdDataObj mergedDefectIdDataObj, List<StreamIdDataObj> streamIds) throws CovRemoteServiceException_Exception {
throw new NotImplementedException();
}
@Override
public MergedDefectsPageDataObj getMergedDefectsForProjectScope(ProjectIdDataObj projectId, ProjectScopeDefectFilterSpecDataObj filterSpec, PageSpecDataObj pageSpec) throws CovRemoteServiceException_Exception {
MergedDefectsPageDataObj mergedDefectsPageDataObj = new MergedDefectsPageDataObj();
final int totalRecords = mergedDefects.size();
mergedDefectsPageDataObj.setTotalNumberOfRecords(totalRecords);
int toIndex = pageSpec.getStartIndex() + pageSpec.getPageSize();
if (toIndex > mergedDefects.size())
toIndex = mergedDefects.size();
List<MergedDefectIdDataObj> defectIds = mergedDefectIds.subList(pageSpec.getStartIndex(), toIndex);
mergedDefectsPageDataObj.getMergedDefectIds().addAll(defectIds);
List<MergedDefectDataObj> defects = mergedDefects.subList(pageSpec.getStartIndex(), toIndex);
mergedDefectsPageDataObj.getMergedDefects().addAll(defects);
return mergedDefectsPageDataObj;
}
}
}