use of org.eclipse.sw360.datahandler.thrift.attachments.AttachmentContent in project sw360portal by sw360.
the class CLIParser method getLicenseInfos.
@Override
public <T> List<LicenseInfoParsingResult> getLicenseInfos(Attachment attachment, User user, T context) throws TException {
AttachmentContent attachmentContent = attachmentContentProvider.getAttachmentContent(attachment);
LicenseInfo licenseInfo = new LicenseInfo().setFilenames(Arrays.asList(attachmentContent.getFilename()));
LicenseInfoParsingResult result = new LicenseInfoParsingResult().setLicenseInfo(licenseInfo);
InputStream attachmentStream = null;
try {
attachmentStream = attachmentConnector.getAttachmentStream(attachmentContent, user, context);
Document doc = getDocument(attachmentStream);
Set<String> copyrights = getCopyrights(doc);
licenseInfo.setCopyrights(copyrights);
Set<LicenseNameWithText> licenseNamesWithTexts = getLicenseNameWithTexts(doc);
licenseInfo.setLicenseNamesWithTexts(licenseNamesWithTexts);
result.setStatus(LicenseInfoRequestStatus.SUCCESS);
} catch (ParserConfigurationException | IOException | XPathExpressionException | SAXException | SW360Exception e) {
log.error(e);
result.setStatus(LicenseInfoRequestStatus.FAILURE).setMessage("Error while parsing CLI file: " + e.toString());
} finally {
closeQuietly(attachmentStream, log);
}
return Collections.singletonList(result);
}
use of org.eclipse.sw360.datahandler.thrift.attachments.AttachmentContent in project sw360portal by sw360.
the class CombinedCLIParserTest method testIsApplicableToFailsOnMalformedXML.
@Test
public void testIsApplicableToFailsOnMalformedXML() throws Exception {
AttachmentContent content = new AttachmentContent().setId("A1").setFilename("a.xml").setContentType("application/xml");
when(connector.getAttachmentStream(content, new User(), new Project())).thenReturn(new ReaderInputStream(new StringReader("this is not an xml file")));
assertFalse(parser.isApplicableTo(attachment, new User(), new Project()));
}
use of org.eclipse.sw360.datahandler.thrift.attachments.AttachmentContent in project sw360portal by sw360.
the class CombinedCLIParser method getLicenseInfos.
@Override
public <T> List<LicenseInfoParsingResult> getLicenseInfos(Attachment attachment, User user, T context) throws TException {
AttachmentContent attachmentContent = attachmentContentProvider.getAttachmentContent(attachment);
InputStream attachmentStream = null;
List<LicenseInfoParsingResult> parsingResults = new ArrayList<>();
Map<String, Release> releasesByExternalId = prepareReleasesByExternalId(getCorrelationKey());
try {
attachmentStream = attachmentConnector.getAttachmentStream(attachmentContent, user, context);
Document doc = getDocument(attachmentStream);
Map<String, Set<String>> copyrightSetsByExternalId = getCopyrightSetsByExternalIdsMap(doc);
Map<String, Set<LicenseNameWithText>> licenseNamesWithTextsByExternalId = getLicenseNamesWithTextsByExternalIdsMap(doc);
Set<String> allExternalIds = Sets.union(copyrightSetsByExternalId.keySet(), licenseNamesWithTextsByExternalId.keySet());
allExternalIds.forEach(extId -> {
LicenseInfoParsingResult parsingResult = getLicenseInfoParsingResultForExternalId(attachmentContent, releasesByExternalId, copyrightSetsByExternalId, licenseNamesWithTextsByExternalId, extId);
parsingResults.add(parsingResult);
});
} catch (ParserConfigurationException | IOException | XPathExpressionException | SAXException | SW360Exception e) {
log.error(e);
parsingResults.add(new LicenseInfoParsingResult().setStatus(LicenseInfoRequestStatus.FAILURE).setMessage("Error while parsing combined CLI file: " + e.toString()));
} finally {
closeQuietly(attachmentStream, log);
}
return parsingResults;
}
use of org.eclipse.sw360.datahandler.thrift.attachments.AttachmentContent in project sw360portal by sw360.
the class CombinedCLIParser method getLicenseInfoParsingResultForExternalId.
@NotNull
private LicenseInfoParsingResult getLicenseInfoParsingResultForExternalId(AttachmentContent attachmentContent, Map<String, Release> releasesByExternalId, Map<String, Set<String>> copyrightSetsByExternalId, Map<String, Set<LicenseNameWithText>> licenseNamesWithTextsByExternalId, String extId) {
LicenseInfo licenseInfo = new LicenseInfo().setFilenames(Arrays.asList(attachmentContent.getFilename()));
licenseInfo.setCopyrights(copyrightSetsByExternalId.get(extId));
licenseInfo.setLicenseNamesWithTexts(licenseNamesWithTextsByExternalId.get(extId));
LicenseInfoParsingResult parsingResult = new LicenseInfoParsingResult().setLicenseInfo(licenseInfo);
Release release = releasesByExternalId.get(extId);
if (release != null) {
parsingResult.setVendor(release.isSetVendor() ? release.getVendor().getShortname() : "");
parsingResult.setName(release.getName());
parsingResult.setVersion(release.getVersion());
} else {
parsingResult.setName("No info found for external component ID " + extId);
}
parsingResult.setStatus(LicenseInfoRequestStatus.SUCCESS);
return parsingResult;
}
use of org.eclipse.sw360.datahandler.thrift.attachments.AttachmentContent in project sw360portal by sw360.
the class SPDXParser method getLicenseInfo.
public <T> LicenseInfoParsingResult getLicenseInfo(Attachment attachment, User user, T context) throws TException {
AttachmentContent attachmentContent = attachmentContentProvider.getAttachmentContent(attachment);
final Optional<SpdxDocument> spdxDocument = openAsSpdx(attachmentContent, user, context);
if (!spdxDocument.isPresent()) {
return new LicenseInfoParsingResult().setStatus(LicenseInfoRequestStatus.FAILURE);
}
return getLicenseInfoFromSpdx(attachmentContent, spdxDocument.get());
}
Aggregations