org.eclipse.sw360.rest.resourceserver.vulnerability.Sw360VulnerabilityService.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.sw360.rest.resourceserver.vulnerability.Sw360VulnerabilityService.java

Source

/*
 * Copyright Bosch Software Innovations GmbH, 2017.
 * Part of the SW360 Portal Project.
 *
 * SPDX-License-Identifier: EPL-1.0
 *
 * 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.eclipse.sw360.rest.resourceserver.vulnerability;

import java.util.List;

import org.apache.thrift.TException;
import org.apache.thrift.protocol.TCompactProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.THttpClient;
import org.apache.thrift.transport.TTransportException;
import org.eclipse.sw360.datahandler.permissions.VulnerabilityPermissions;
import org.eclipse.sw360.datahandler.thrift.users.User;
import org.eclipse.sw360.datahandler.thrift.vulnerabilities.Vulnerability;
import org.eclipse.sw360.datahandler.thrift.vulnerabilities.VulnerabilityDTO;
import org.eclipse.sw360.datahandler.thrift.vulnerabilities.VulnerabilityService;
import org.eclipse.sw360.datahandler.thrift.vulnerabilities.VulnerabilityWithReleaseRelations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Service
@Slf4j
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class Sw360VulnerabilityService {
    @Value("${sw360.thrift-server-url:http://localhost:8080}")
    private String thriftServerUrl;

    public List<Vulnerability> getVulnerabilities(User sw360User) {
        try {
            VulnerabilityService.Iface sw360VulnerabilityClient = getThriftVulnerabilityClient();
            return sw360VulnerabilityClient.getVulnerabilities(sw360User);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    public Vulnerability getVulnerabilityByExternalId(String externalId, User sw360User) {
        try {
            VulnerabilityService.Iface sw360VulnerabilityClient = getThriftVulnerabilityClient();
            return sw360VulnerabilityClient.getVulnerabilityByExternalId(externalId, sw360User);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    public Vulnerability getVulnerabilityWithReleaseRelationsByExternalId(String externalId, User sw360User) {
        try {
            VulnerabilityService.Iface sw360VulnerabilityClient = getThriftVulnerabilityClient();
            final VulnerabilityWithReleaseRelations vulWithRel = sw360VulnerabilityClient
                    .getVulnerabilityWithReleaseRelationsByExternalId(externalId, sw360User);
            return vulWithRel.getVulnerability();
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    public List<VulnerabilityDTO> getVulnerabilitiesByReleaseId(String releaseId, User sw360User) {
        try {
            VulnerabilityService.Iface sw360VulnerabilityClient = getThriftVulnerabilityClient();
            return sw360VulnerabilityClient.getVulnerabilitiesByReleaseId(releaseId, sw360User);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    public List<VulnerabilityDTO> getVulnerabilitiesByProjectId(String projectId, User sw360User) {
        try {
            VulnerabilityService.Iface sw360VulnerabilityClient = getThriftVulnerabilityClient();
            return sw360VulnerabilityClient.getVulnerabilitiesByProjectId(projectId, sw360User);
        } catch (TException e) {
            throw new RuntimeException(e);
        }
    }

    private VulnerabilityService.Iface getThriftVulnerabilityClient() throws TTransportException {
        THttpClient thriftClient = new THttpClient(thriftServerUrl + "/vulnerabilities/thrift");
        TProtocol protocol = new TCompactProtocol(thriftClient);
        return new VulnerabilityService.Client(protocol);
    }
}