class FortifySscUploader extends AbstractIntegrationPoint implements ProjectFindingUploader {

    private static final Logger LOGGER = Logger.getLogger(FortifySscUploader.class);
    private static final String APPID_PROPERTY = "fortify.ssc.applicationId";

    @Override
    public String name() {
        return "Fortify SSC";
    }

    @Override
    public String description() {
        return "Pushes Dependency-Track findings to Software Security Center";
    }

    @Override
    public boolean isEnabled() {
        final ConfigProperty enabled = qm.getConfigProperty(FORTIFY_SSC_ENABLED.getGroupName(), FORTIFY_SSC_ENABLED.getPropertyName());
        return enabled != null && Boolean.valueOf(enabled.getPropertyValue());
    }

    @Override
    public boolean isProjectConfigured(final Project project) {
        final ProjectProperty applicationId = qm.getProjectProperty(project, FORTIFY_SSC_ENABLED.getGroupName(), APPID_PROPERTY);
        return applicationId != null && applicationId.getPropertyValue() != null;
    }

    @Override
    public InputStream process(final Project project, final List<Finding> findings) {
        final JSONObject fpf = new FindingPackagingFormat(project.getUuid(), findings).getDocument();
        return new ByteArrayInputStream(fpf.toString(2).getBytes());
    }

    @Override
    public void upload(final Project project, final InputStream payload) {<FILL_FUNCTION_BODY>}
}

        final ConfigProperty sscUrl = qm.getConfigProperty(FORTIFY_SSC_URL.getGroupName(), FORTIFY_SSC_URL.getPropertyName());
        final ConfigProperty citoken = qm.getConfigProperty(FORTIFY_SSC_TOKEN.getGroupName(), FORTIFY_SSC_TOKEN.getPropertyName());
        final ProjectProperty applicationId = qm.getProjectProperty(project, FORTIFY_SSC_ENABLED.getGroupName(), APPID_PROPERTY);
        if (citoken == null || citoken.getPropertyValue() == null) {
            LOGGER.warn("Fortify SSC token not specified. Aborting");
            return;
        }
        try {
            final FortifySscClient client = new FortifySscClient(this, new URL(sscUrl.getPropertyValue()));
            final String token = client.generateOneTimeUploadToken(DataEncryption.decryptAsString(citoken.getPropertyValue()));
            if (token != null) {
                client.uploadDependencyTrackFindings(token, applicationId.getPropertyValue(), payload);
            }
        } catch (Exception e) {
            LOGGER.error("An error occurred attempting to upload findings to Fortify Software Security Center", e);
            handleException(LOGGER, e);
        }
    
<methods>public non-sealed void <init>() ,public void handleException(Logger, java.lang.Exception) ,public void handleUnexpectedHttpResponse(Logger, java.lang.String, int, java.lang.String) ,public void setQueryManager(org.dependencytrack.persistence.QueryManager) <variables>protected org.dependencytrack.persistence.QueryManager qm