Skip to content
This repository has been archived by the owner on Apr 13, 2023. It is now read-only.

Commit

Permalink
Make sure the DpendencyResolvers don't throw exceptions when dealin…
Browse files Browse the repository at this point in the history
…g with artifact types they don't know how to handle (see #6929)
  • Loading branch information
quintesse committed Feb 24, 2017
1 parent 5f0981f commit 893839e
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 70 deletions.
Expand Up @@ -71,8 +71,13 @@ public ModuleInfo resolve(DependencyContext context, Overrides overrides) {
return null;
}

final ArtifactResult result = context.result();
return readModuleInformation(result.name(), result.artifact(), overrides);
ArtifactResult result = context.result();
File mod = result.artifact();
if (mod != null && mod.getName().toLowerCase().endsWith(ArtifactContext.CAR)) {
return readModuleInformation(result.name(), result.artifact(), overrides);
} else {
return null;
}
}

@Override
Expand Down
Expand Up @@ -25,12 +25,12 @@
import java.util.zip.ZipFile;

import com.redhat.ceylon.cmr.api.AbstractDependencyResolver;
import com.redhat.ceylon.cmr.api.ArtifactContext;
import com.redhat.ceylon.cmr.api.DependencyContext;
import com.redhat.ceylon.cmr.api.ModuleInfo;
import com.redhat.ceylon.cmr.api.Overrides;
import com.redhat.ceylon.cmr.spi.Node;
import com.redhat.ceylon.model.cmr.ArtifactResult;
import com.redhat.ceylon.model.cmr.RepositoryException;

/**
* Read module info from module.xml.
Expand All @@ -47,31 +47,32 @@ protected ModulesDependencyResolver(String descriptorName) {
@Override
public ModuleInfo resolve(DependencyContext context, Overrides overrides) {
final ArtifactResult result = context.result();

if (context.ignoreInner() == false) {
String descriptorPath = getQualifiedMetaInfDescriptorName(result.name(), result.version());
final InputStream descriptor = IOUtils.findDescriptor(result, descriptorPath);
if (descriptor != null) {
try {
return augment(result, resolveFromInputStream(descriptor, result.name(), result.version(), overrides));
} finally {
IOUtils.safeClose(descriptor);
File mod = result.artifact();
if (mod != null && mod.getName().toLowerCase().endsWith(ArtifactContext.JAR)) {
if (context.ignoreInner() == false) {
String descriptorPath = getQualifiedMetaInfDescriptorName(result.name(), result.version());
final InputStream descriptor = IOUtils.findDescriptor(result, descriptorPath);
if (descriptor != null) {
try {
return augment(result, resolveFromInputStream(descriptor, result.name(), result.version(), overrides));
} finally {
IOUtils.safeClose(descriptor);
}
}
}
}

if (context.ignoreExternal() == false) {
final File artifact = result.artifact();
File mp = new File(artifact.getParent(), descriptorName);
if(!mp.exists()){
// if we don't have module.xml, look for module.name-version-module.xml
// FIXME: go through the repository so we can find it in other repos?
String qualifiedDescriptorName = getQualifiedToplevelDescriptorName(result.name(), result.version());
mp = new File(artifact.getParent(), qualifiedDescriptorName);

if (context.ignoreExternal() == false) {
final File artifact = result.artifact();
File mp = new File(artifact.getParent(), descriptorName);
if(!mp.exists()){
// if we don't have module.xml, look for module.name-version-module.xml
// FIXME: go through the repository so we can find it in other repos?
String qualifiedDescriptorName = getQualifiedToplevelDescriptorName(result.name(), result.version());
mp = new File(artifact.getParent(), qualifiedDescriptorName);
}
return augment(result, resolveFromFile(mp, result.name(), result.version(), overrides));
}
return augment(result, resolveFromFile(mp, result.name(), result.version(), overrides));
}

return null;
}

Expand Down
Expand Up @@ -29,6 +29,7 @@
import java.util.logging.Logger;

import com.redhat.ceylon.cmr.api.AbstractDependencyResolver;
import com.redhat.ceylon.cmr.api.ArtifactContext;
import com.redhat.ceylon.cmr.api.DependencyContext;
import com.redhat.ceylon.cmr.api.DependencyResolver;
import com.redhat.ceylon.cmr.api.ModuleDependencyInfo;
Expand All @@ -37,6 +38,7 @@
import com.redhat.ceylon.cmr.spi.Node;
import com.redhat.ceylon.common.Backends;
import com.redhat.ceylon.common.ModuleUtil;
import com.redhat.ceylon.model.cmr.ArtifactResult;

/**
* @author <a href="mailto:ales.justin@jboss.org">Ales Justin</a>
Expand All @@ -48,12 +50,16 @@ public class OSGiDependencyResolver extends AbstractDependencyResolver {
@Override
public ModuleInfo resolve(DependencyContext context, Overrides overrides) {
if (context.ignoreInner() == false) {
InputStream stream = IOUtils.findDescriptor(context.result(), JarFile.MANIFEST_NAME);
if (stream != null) {
try {
return resolveFromInputStream(stream, context.result().name(), context.result().version(), overrides);
} finally {
IOUtils.safeClose(stream);
ArtifactResult result = context.result();
File mod = result.artifact();
if (mod != null && mod.getName().toLowerCase().endsWith(ArtifactContext.JAR)) {
InputStream stream = IOUtils.findDescriptor(result, JarFile.MANIFEST_NAME);
if (stream != null) {
try {
return resolveFromInputStream(stream, result.name(), result.version(), overrides);
} finally {
IOUtils.safeClose(stream);
}
}
}
}
Expand Down
Expand Up @@ -19,13 +19,10 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.redhat.ceylon.cmr.api.AbstractDependencyResolver;
import com.redhat.ceylon.cmr.api.ArtifactContext;
import com.redhat.ceylon.cmr.api.DependencyContext;
import com.redhat.ceylon.cmr.api.ModuleDependencyInfo;
import com.redhat.ceylon.cmr.api.ModuleInfo;
import com.redhat.ceylon.cmr.api.Overrides;
import com.redhat.ceylon.cmr.impl.IOUtils;
Expand All @@ -50,24 +47,27 @@ private MavenBackupDependencyResolver(){}
public ModuleInfo resolve(DependencyContext context, Overrides overrides) {
if (context.ignoreInner() == false) {
ArtifactResult result = context.result();
String name = result.name();
int p = name.indexOf(':');
if (p < 0) {
p = name.lastIndexOf('.');
}
if (p < 0) {
// not a Maven artifact
return null;
}
String groupId = name.substring(0, p);
String artifactId = name.substring(p + 1);
String descriptorPath = String.format("META-INF/maven/%s/%s/pom.xml", groupId, artifactId);
InputStream inputStream = IOUtils.findDescriptor(result, descriptorPath);
if (inputStream != null) {
try {
return resolveFromInputStream(inputStream, name, result.version(), overrides);
} finally {
IOUtils.safeClose(inputStream);
File mod = result.artifact();
if (mod != null && mod.getName().toLowerCase().endsWith(ArtifactContext.JAR)) {
String name = result.name();
int p = name.indexOf(':');
if (p < 0) {
p = name.lastIndexOf('.');
}
if (p < 0) {
// not a Maven artifact
return null;
}
String groupId = name.substring(0, p);
String artifactId = name.substring(p + 1);
String descriptorPath = String.format("META-INF/maven/%s/%s/pom.xml", groupId, artifactId);
InputStream inputStream = IOUtils.findDescriptor(result, descriptorPath);
if (inputStream != null) {
try {
return resolveFromInputStream(inputStream, name, result.version(), overrides);
} finally {
IOUtils.safeClose(inputStream);
}
}
}
}
Expand Down
Expand Up @@ -23,6 +23,7 @@
import java.util.Set;

import com.redhat.ceylon.cmr.api.AbstractDependencyResolver;
import com.redhat.ceylon.cmr.api.ArtifactContext;
import com.redhat.ceylon.cmr.api.DependencyContext;
import com.redhat.ceylon.cmr.api.ModuleDependencyInfo;
import com.redhat.ceylon.cmr.api.ModuleInfo;
Expand Down Expand Up @@ -50,24 +51,27 @@ public class MavenDependencyResolver extends AbstractDependencyResolver {
public ModuleInfo resolve(DependencyContext context, Overrides overrides) {
if (context.ignoreInner() == false) {
ArtifactResult result = context.result();
String name = result.name();
int p = name.indexOf(':');
if (p < 0) {
p = name.lastIndexOf('.');
}
if (p < 0) {
// not a Maven artifact
return null;
}
String groupId = name.substring(0, p);
String artifactId = name.substring(p + 1);
String descriptorPath = String.format("META-INF/maven/%s/%s/pom.xml", groupId, artifactId);
InputStream inputStream = IOUtils.findDescriptor(result, descriptorPath);
if (inputStream != null) {
try {
return resolveFromInputStream(inputStream, name, result.version(), overrides);
} finally {
IOUtils.safeClose(inputStream);
File mod = result.artifact();
if (mod != null && mod.getName().toLowerCase().endsWith(ArtifactContext.JAR)) {
String name = result.name();
int p = name.indexOf(':');
if (p < 0) {
p = name.lastIndexOf('.');
}
if (p < 0) {
// not a Maven artifact
return null;
}
String groupId = name.substring(0, p);
String artifactId = name.substring(p + 1);
String descriptorPath = String.format("META-INF/maven/%s/%s/pom.xml", groupId, artifactId);
InputStream inputStream = IOUtils.findDescriptor(result, descriptorPath);
if (inputStream != null) {
try {
return resolveFromInputStream(inputStream, name, result.version(), overrides);
} finally {
IOUtils.safeClose(inputStream);
}
}
}
}
Expand Down

0 comments on commit 893839e

Please sign in to comment.