Giter VIP home page Giter VIP logo

Comments (1)

nscuro avatar nscuro commented on September 22, 2024

Already addressed in BomUploadProcessingTaskV2 which ships with DT v4.11:

if (project != null) {
persistentProject.setBomRef(project.getBomRef()); // Transient
hasChanged |= applyIfChanged(persistentProject, project, Project::getAuthor, persistentProject::setAuthor);
hasChanged |= applyIfChanged(persistentProject, project, Project::getPublisher, persistentProject::setPublisher);
hasChanged |= applyIfChanged(persistentProject, project, Project::getManufacturer, persistentProject::setManufacturer);
hasChanged |= applyIfChanged(persistentProject, project, Project::getSupplier, persistentProject::setSupplier);
hasChanged |= applyIfChanged(persistentProject, project, Project::getClassifier, persistentProject::setClassifier);
// TODO: Currently these properties are "decoupled" from the BOM and managed directly by DT users.
// Perhaps there could be a flag for BOM uploads saying "use BOM properties" or something?
// changed |= applyIfChanged(project, metadataComponent, Project::getGroup, project::setGroup);
// changed |= applyIfChanged(project, metadataComponent, Project::getName, project::setName);
// changed |= applyIfChanged(project, metadataComponent, Project::getVersion, project::setVersion);
// changed |= applyIfChanged(project, metadataComponent, Project::getDescription, project::setDescription);
hasChanged |= applyIfChanged(persistentProject, project, Project::getExternalReferences, persistentProject::setExternalReferences);
hasChanged |= applyIfChanged(persistentProject, project, Project::getPurl, persistentProject::setPurl);
hasChanged |= applyIfChanged(persistentProject, project, Project::getSwidTagId, persistentProject::setSwidTagId);
}

But not in the legacy BomUploadProcessingTask:

if (cycloneDxBom.getMetadata() != null) {
project.setManufacturer(ModelConverter.convert(cycloneDxBom.getMetadata().getManufacture()));
final var projectMetadata = new ProjectMetadata();
projectMetadata.setSupplier(ModelConverter.convert(cycloneDxBom.getMetadata().getSupplier()));
projectMetadata.setAuthors(cycloneDxBom.getMetadata().getAuthors() != null
? new ArrayList<>(ModelConverter.convertCdxContacts(cycloneDxBom.getMetadata().getAuthors()))
: null);
if (project.getMetadata() != null) {
qm.runInTransaction(() -> {
project.getMetadata().setSupplier(projectMetadata.getSupplier());
project.getMetadata().setAuthors(projectMetadata.getAuthors());
});
} else {
qm.runInTransaction(() -> {
projectMetadata.setProject(project);
qm.getPersistenceManager().makePersistent(projectMetadata);
});
}
if (cycloneDxBom.getMetadata().getComponent() != null) {
final org.cyclonedx.model.Component cdxMetadataComponent = cycloneDxBom.getMetadata().getComponent();
if (cdxMetadataComponent.getType() != null && project.getClassifier() == null) {
try {
project.setClassifier(Classifier.valueOf(cdxMetadataComponent.getType().name()));
} catch (IllegalArgumentException ex) {
LOGGER.warn("""
The metadata.component element of the BOM is of unknown type %s. \
Known types are %s.""".formatted(cdxMetadataComponent.getType(),
Arrays.stream(Classifier.values()).map(Enum::name).collect(Collectors.joining(", "))));
}
}
if (cdxMetadataComponent.getSupplier() != null) {
project.setSupplier(ModelConverter.convert(cdxMetadataComponent.getSupplier()));
}
}
}
if (project.getClassifier() == null) {
project.setClassifier(Classifier.APPLICATION);
}
project.setExternalReferences(ModelConverter.convertBomMetadataExternalReferences(cycloneDxBom));

from dependency-track.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.