Skip to content

Commit

Permalink
[BZ-1200784] read pom file from the project stored in the KieContaine…
Browse files Browse the repository at this point in the history
…r when available
  • Loading branch information
mariofusco committed Mar 20, 2015
1 parent 1beb005 commit cbd266d
Show file tree
Hide file tree
Showing 11 changed files with 68 additions and 4 deletions.
Expand Up @@ -390,7 +390,12 @@ private byte[] getPomXml() {
return getBytes(((ReleaseIdImpl)releaseId).getPomXmlPath());
}

public static boolean updateResource(CompositeKnowledgeBuilder ckbuilder,
public InputStream getPomAsStream() {
byte[] pom = getBytes(((ReleaseIdImpl)releaseId).getPomXmlPath());
return pom != null ? new ByteArrayInputStream(pom) : null;
}

public static boolean updateResource(CompositeKnowledgeBuilder ckbuilder,
InternalKieModule kieModule,
String resourceName,
ResourceChangeSet changes) {
Expand Down
Expand Up @@ -17,6 +17,7 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
Expand Down Expand Up @@ -413,4 +414,8 @@ public ClassLoader getClassLoader() {
public ClassLoader getClonedClassLoader() {
return createProjectClassLoader(classLoader.getParent());
}

public InputStream getPomAsStream() {
return classLoader.getResourceAsStream("pom.xml");
}
}
Expand Up @@ -8,6 +8,8 @@
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.StatelessKieSession;

import java.io.InputStream;

public interface InternalKieContainer extends KieContainer {

/**
Expand Down Expand Up @@ -48,4 +50,6 @@ public interface InternalKieContainer extends KieContainer {
long getCreationTimestamp();

Results updateDependencyToVersion(ReleaseId currentReleaseId, ReleaseId newReleaseId);

InputStream getPomAsStream();
}
Expand Up @@ -12,6 +12,7 @@
import org.kie.internal.definition.KnowledgePackage;

import java.io.File;
import java.io.InputStream;
import java.util.Collection;
import java.util.Map;

Expand Down Expand Up @@ -60,4 +61,6 @@ public interface InternalKieModule extends KieModule {
boolean addResourceToCompiler(CompositeKnowledgeBuilder ckbuilder, String fileName);

long getCreationTimestamp();

InputStream getPomAsStream();
}
Expand Up @@ -45,6 +45,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Expand Down Expand Up @@ -93,6 +94,10 @@ public ReleaseId getReleaseId() {
return kProject.getGAV();
}

public InputStream getPomAsStream() {
return kProject.getPomAsStream();
}

public long getCreationTimestamp() {
return kProject.getCreationTimestamp();
}
Expand Down
Expand Up @@ -10,6 +10,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -83,6 +84,10 @@ private Map<String, byte[]> getClassesMap() {
return classes;
}

public InputStream getPomAsStream() {
return kieModule.getPomAsStream();
}

public ReleaseId getGAV() {
return kieModule.getReleaseId();
}
Expand Down
Expand Up @@ -4,6 +4,7 @@
import org.kie.api.builder.model.KieBaseModel;
import org.kie.api.builder.model.KieSessionModel;

import java.io.InputStream;
import java.util.Collection;
import java.util.Set;

Expand Down Expand Up @@ -39,4 +40,6 @@ public interface KieProject {

Set<String> getTransitiveIncludes(String kBaseName);
Set<String> getTransitiveIncludes(KieBaseModel kBaseModel);

InputStream getPomAsStream();
}
2 changes: 1 addition & 1 deletion kie-ci/src/main/java/org/kie/scanner/Aether.java
Expand Up @@ -48,7 +48,7 @@ private Aether(String localRepoDir, boolean offline) {
}

Aether(MavenProject mavenProject) {
this(mavenProject, getAether().localRepoDir, getAether().offline);
this(mavenProject, MavenSettings.getSettings().getLocalRepository(), MavenSettings.getSettings().isOffline());
}

public static synchronized Aether getAether() {
Expand Down
12 changes: 12 additions & 0 deletions kie-ci/src/main/java/org/kie/scanner/ArtifactResolver.java
@@ -1,6 +1,7 @@
package org.kie.scanner;

import org.apache.maven.project.MavenProject;
import org.drools.compiler.kie.builder.impl.InternalKieContainer;
import org.drools.compiler.kproject.xml.MinimalPomParser;
import org.drools.compiler.kproject.xml.PomModel;
import org.kie.api.builder.KieScanner;
Expand Down Expand Up @@ -68,6 +69,17 @@ Collection<DependencyDescriptor> getAllDependecies() {
return dependencies;
}

public static ArtifactResolver getResolverFor(InternalKieContainer kieContainer, boolean allowDefaultPom) {
InputStream pomStream = kieContainer.getPomAsStream();
if (pomStream != null) {
ArtifactResolver artifactResolver = getResolverFor(pomStream);
if (artifactResolver != null) {
return artifactResolver;
}
}
return getResolverFor(kieContainer.getReleaseId(), allowDefaultPom);
}

public static ArtifactResolver getResolverFor(ReleaseId releaseId, boolean allowDefaultPom) {
File pomFile = getPomFileForGAV(releaseId, allowDefaultPom);
if (pomFile != null) {
Expand Down
Expand Up @@ -69,7 +69,7 @@ public synchronized void setKieContainer(KieContainer kieContainer) {
kieProjectDescr = new DependencyDescriptor(this.kieContainer.getReleaseId(),
this.kieContainer.getCreationTimestamp());

artifactResolver = getResolverFor(kieContainer.getReleaseId(), true);
artifactResolver = getResolverFor(this.kieContainer, true);
usedDependencies = indexAtifacts(artifactResolver);

KieScannersRegistry.register(this);
Expand Down Expand Up @@ -294,7 +294,7 @@ private void updateKieModule(DependencyDescriptor oldDependency, Artifact artifa
}

private Map<DependencyDescriptor, Artifact> scanForUpdates() {
artifactResolver = getResolverFor(kieContainer.getReleaseId(), true);
artifactResolver = getResolverFor(kieContainer, true);
Map<DependencyDescriptor, Artifact> newArtifacts = new HashMap<DependencyDescriptor, Artifact>();

Artifact newArtifact = artifactResolver.resolveArtifact(this.kieContainer.getContainerReleaseId());
Expand Down
22 changes: 22 additions & 0 deletions kie-ci/src/test/java/org/kie/scanner/KieRepositoryScannerTest.java
Expand Up @@ -85,6 +85,28 @@ public void testKScanner() throws Exception {
ks.getRepository().removeKieModule(releaseId);
}

@Test
public void testKScannerStartNotDeployed() throws Exception {
// BZ-1200784
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId = ks.newReleaseId("org.kie", "scanner-start-not-deployed-test", "1.0-SNAPSHOT");
InternalKieModule kJar1 = createKieJar(ks, releaseId, "rule1", "rule2");
KieContainer kieContainer = ks.newKieContainer(releaseId);

// starting KieScanner
KieScanner scanner = ks.newKieScanner(kieContainer);

// scan the maven repo to get the new kjar version before it is deployed into Maven repo
// should not throw NPE because of uninitialized dependencies due to parsing parent pom failure
scanner.scanNow();
MavenRepository repository = getMavenRepository();
repository.deployArtifact(releaseId, kJar1, kPom);

// create a ksesion and check it works as expected
KieSession ksession = kieContainer.newKieSession("KSession1");
checkKSession(ksession, "rule1", "rule2");
}

@Test
public void testKScannerWithRange() throws Exception {
KieServices ks = KieServices.Factory.get();
Expand Down

0 comments on commit cbd266d

Please sign in to comment.