Search in sources :

Example 1 with ReleaseVulnerabilityRelation

use of org.eclipse.sw360.datahandler.thrift.vulnerabilities.ReleaseVulnerabilityRelation in project sw360portal by sw360.

the class CveSearchDataTranslator method apply.

@Override
public VulnerabilityWithRelation apply(CveSearchData cveSearchData) {
    Vulnerability vulnerability = new CveSearchDataToVulnerabilityTranslator().apply(cveSearchData);
    ReleaseVulnerabilityRelation relation = new CveSearchDataToReleaseVulnerabilityRelationTranslator().apply(cveSearchData);
    return new VulnerabilityWithRelation(vulnerability, relation);
}
Also used : ReleaseVulnerabilityRelation(org.eclipse.sw360.datahandler.thrift.vulnerabilities.ReleaseVulnerabilityRelation) Vulnerability(org.eclipse.sw360.datahandler.thrift.vulnerabilities.Vulnerability)

Example 2 with ReleaseVulnerabilityRelation

use of org.eclipse.sw360.datahandler.thrift.vulnerabilities.ReleaseVulnerabilityRelation in project sw360portal by sw360.

the class VulnerabilityConnector method addOrUpdate.

public UpdateType addOrUpdate(Vulnerability vulnerability, ReleaseVulnerabilityRelation partiallyFilledRelation) {
    RequestStatus vulRequestStatus = RequestStatus.SUCCESS;
    UpdateType updateType;
    Vulnerability dbVulnerability = vulnerabilityDatabaseHandler.getByExternalId(Vulnerability.class, vulnerability.getExternalId());
    if (dbVulnerability != null) {
        if (isMoreRecent(vulnerability, dbVulnerability)) {
            updateType = UpdateType.UPDATED;
            dbVulnerability = VulnerabilityMapper.updateFromVulnerability(dbVulnerability, vulnerability);
            vulRequestStatus = vulnerabilityDatabaseHandler.update(dbVulnerability);
        } else {
            updateType = UpdateType.OLD;
        }
    } else {
        updateType = UpdateType.NEW;
        vulRequestStatus = vulnerabilityDatabaseHandler.add(vulnerability);
        dbVulnerability = vulnerability;
    }
    if (RequestStatus.FAILURE.equals(vulRequestStatus)) {
        return UpdateType.FAILED;
    }
    partiallyFilledRelation.setVulnerabilityId(dbVulnerability.getId());
    RequestStatus requestStatus = addOrUpdate(partiallyFilledRelation);
    if (RequestStatus.FAILURE.equals(requestStatus)) {
        return UpdateType.FAILED;
    }
    return updateType;
}
Also used : Vulnerability(org.eclipse.sw360.datahandler.thrift.vulnerabilities.Vulnerability) UpdateType(org.eclipse.sw360.datahandler.thrift.cvesearch.UpdateType) RequestStatus(org.eclipse.sw360.datahandler.thrift.RequestStatus)

Example 3 with ReleaseVulnerabilityRelation

use of org.eclipse.sw360.datahandler.thrift.vulnerabilities.ReleaseVulnerabilityRelation in project sw360portal by sw360.

the class VulnerabilityConnector method addOrUpdate.

public VulnerabilityUpdateStatus addOrUpdate(Vulnerability vulnerability, ReleaseVulnerabilityRelation partiallyFilledRelation, VulnerabilityUpdateStatus currentVulnerabilityUpdateStatus) {
    UpdateType updateType = addOrUpdate(vulnerability, partiallyFilledRelation);
    currentVulnerabilityUpdateStatus.getStatusToVulnerabilityIds().get(updateType).add(vulnerability.getExternalId());
    return currentVulnerabilityUpdateStatus;
}
Also used : UpdateType(org.eclipse.sw360.datahandler.thrift.cvesearch.UpdateType)

Example 4 with ReleaseVulnerabilityRelation

use of org.eclipse.sw360.datahandler.thrift.vulnerabilities.ReleaseVulnerabilityRelation in project sw360portal by sw360.

the class ComponentPortlet method updateVulnerabilityVerification.

private void updateVulnerabilityVerification(ResourceRequest request, ResourceResponse response) throws IOException {
    String[] releaseIds = request.getParameterValues(PortalConstants.RELEASE_IDS + "[]");
    String[] vulnerabilityIds = request.getParameterValues(PortalConstants.VULNERABILITY_IDS + "[]");
    User user = UserCacheHolder.getUserFromRequest(request);
    VulnerabilityService.Iface vulClient = thriftClients.makeVulnerabilityClient();
    RequestStatus requestStatus = RequestStatus.SUCCESS;
    try {
        if (vulnerabilityIds.length != releaseIds.length) {
            throw new SW360Exception("Length of vulnerabilities (" + vulnerabilityIds.length + ") does not match the length of releases (" + releaseIds.length + ")!");
        }
        for (int i = 0; i < vulnerabilityIds.length; i++) {
            String vulnerabilityId = vulnerabilityIds[i];
            String releaseId = releaseIds[i];
            Vulnerability dbVulnerability = vulClient.getVulnerabilityByExternalId(vulnerabilityId, user);
            ReleaseVulnerabilityRelation dbRelation = vulClient.getRelationByIds(releaseId, dbVulnerability.getId(), user);
            ReleaseVulnerabilityRelation resultRelation = ComponentPortletUtils.updateReleaseVulnerabilityRelationFromRequest(dbRelation, request);
            requestStatus = vulClient.updateReleaseVulnerabilityRelation(resultRelation, user);
            if (requestStatus != RequestStatus.SUCCESS) {
                break;
            }
        }
    } catch (TException e) {
        log.error("Error updating vulnerability verification in backend.", e);
        requestStatus = RequestStatus.FAILURE;
    }
    JSONObject responseData = JSONFactoryUtil.createJSONObject();
    responseData.put(PortalConstants.REQUEST_STATUS, requestStatus.toString());
    PrintWriter writer = response.getWriter();
    writer.write(responseData.toString());
}
Also used : TException(org.apache.thrift.TException) User(org.eclipse.sw360.datahandler.thrift.users.User) VulnerabilityService(org.eclipse.sw360.datahandler.thrift.vulnerabilities.VulnerabilityService) Vulnerability(org.eclipse.sw360.datahandler.thrift.vulnerabilities.Vulnerability) JSONObject(com.liferay.portal.kernel.json.JSONObject) ReleaseVulnerabilityRelation(org.eclipse.sw360.datahandler.thrift.vulnerabilities.ReleaseVulnerabilityRelation) PrintWriter(java.io.PrintWriter)

Example 5 with ReleaseVulnerabilityRelation

use of org.eclipse.sw360.datahandler.thrift.vulnerabilities.ReleaseVulnerabilityRelation in project sw360portal by sw360.

the class ComponentPortlet method addToVulnerabilityVerifications.

private void addToVulnerabilityVerifications(Map<String, Map<String, VerificationState>> vulnerabilityVerifications, Map<String, Map<String, String>> vulnerabilityTooltips, VulnerabilityDTO vulnerability) {
    String vulnerabilityId = vulnerability.getExternalId();
    String releaseId = vulnerability.getIntReleaseId();
    Map<String, VerificationState> vulnerabilityVerification = vulnerabilityVerifications.computeIfAbsent(vulnerabilityId, k -> new HashMap<>());
    Map<String, String> vulnerabilityTooltip = vulnerabilityTooltips.computeIfAbsent(vulnerabilityId, k -> new HashMap<>());
    ReleaseVulnerabilityRelation relation = vulnerability.getReleaseVulnerabilityRelation();
    if (!relation.isSetVerificationStateInfo()) {
        vulnerabilityVerification.put(releaseId, VerificationState.NOT_CHECKED);
        vulnerabilityTooltip.put(releaseId, "Not checked yet.");
    } else {
        List<VerificationStateInfo> infoHistory = relation.getVerificationStateInfo();
        VerificationStateInfo info = infoHistory.get(infoHistory.size() - 1);
        vulnerabilityVerification.put(releaseId, info.getVerificationState());
        vulnerabilityTooltip.put(releaseId, formatedMessageForVul(infoHistory));
    }
}
Also used : ReleaseVulnerabilityRelation(org.eclipse.sw360.datahandler.thrift.vulnerabilities.ReleaseVulnerabilityRelation) PortletUtils.getVerificationState(org.eclipse.sw360.portal.common.PortletUtils.getVerificationState)

Aggregations

ReleaseVulnerabilityRelation (org.eclipse.sw360.datahandler.thrift.vulnerabilities.ReleaseVulnerabilityRelation)3 Vulnerability (org.eclipse.sw360.datahandler.thrift.vulnerabilities.Vulnerability)3 UpdateType (org.eclipse.sw360.datahandler.thrift.cvesearch.UpdateType)2 JSONObject (com.liferay.portal.kernel.json.JSONObject)1 PrintWriter (java.io.PrintWriter)1 TException (org.apache.thrift.TException)1 RequestStatus (org.eclipse.sw360.datahandler.thrift.RequestStatus)1 User (org.eclipse.sw360.datahandler.thrift.users.User)1 VulnerabilityService (org.eclipse.sw360.datahandler.thrift.vulnerabilities.VulnerabilityService)1 PortletUtils.getVerificationState (org.eclipse.sw360.portal.common.PortletUtils.getVerificationState)1