/** * Finds or creates a repository descriptor for the given url. * * @param store * the {@link Store} * @param url * the repository url * @return a {@link MavenRepositoryDescriptor} for the given url. */ private MavenRepositoryDescriptor getRepositoryDescriptor(Store store, String url) { MavenRepositoryDescriptor repositoryDescriptor = store.find(MavenRepositoryDescriptor.class, url); if (repositoryDescriptor == null) { repositoryDescriptor = store.create(MavenRepositoryDescriptor.class); repositoryDescriptor.setUrl(url); } return repositoryDescriptor; }
/** * Resolves a maven project. * * @param project * The project * @param expectedType * The expected descriptor type. * @param scannerContext * The scanner context. * @param <T> * The expected descriptor type. * @return The maven project descriptor. */ protected <T extends MavenProjectDescriptor> T resolveProject(MavenProject project, Class<T> expectedType, ScannerContext scannerContext) { Store store = scannerContext.getStore(); String id = project.getGroupId() + ":" + project.getArtifactId() + ":" + project.getVersion(); MavenProjectDescriptor projectDescriptor = store.find(MavenProjectDescriptor.class, id); if (projectDescriptor == null) { projectDescriptor = store.create(expectedType, id); projectDescriptor.setName(project.getName()); projectDescriptor.setGroupId(project.getGroupId()); projectDescriptor.setArtifactId(project.getArtifactId()); projectDescriptor.setVersion(project.getVersion()); projectDescriptor.setPackaging(project.getPackaging()); projectDescriptor.setFullQualifiedName(id); } else if (!expectedType.isAssignableFrom(projectDescriptor.getClass())) { projectDescriptor = store.migrate(projectDescriptor, expectedType); } return expectedType.cast(projectDescriptor); }
@Override public boolean visitConcept(Concept concept, Severity effectiveSeverity) throws RuleException { try { analyzerContext.getStore().beginTransaction(); ConceptDescriptor conceptDescriptor = analyzerContext.getStore().find(ConceptDescriptor.class, concept.getId()); Result.Status status; if (conceptDescriptor == null || configuration.isExecuteAppliedConcepts()) { analyzerContext.getLogger() .info("Applying concept '" + concept.getId() + "' with severity: '" + concept.getSeverity().getInfo(effectiveSeverity) + "'."); reportPlugin.beginConcept(concept); Result<Concept> result = execute(concept, effectiveSeverity); reportPlugin.setResult(result); status = result.getStatus(); if (conceptDescriptor == null) { conceptDescriptor = analyzerContext.getStore().create(ConceptDescriptor.class); conceptDescriptor.setId(concept.getId()); conceptDescriptor.setStatus(status); } reportPlugin.endConcept(); } else { status = conceptDescriptor.getStatus(); } analyzerContext.getStore().commitTransaction(); return Result.Status.SUCCESS.equals(status); } catch (XOException e) { analyzerContext.getStore().rollbackTransaction(); throw new RuleException("Cannot apply concept " + concept.getId(), e); } }