in src/main/java/org/apache/sling/installer/factory/model/impl/InstallFeatureModelTask.java [205:246]
private boolean addArtifact(final Artifact artifact,
final List<InstallableResource> result) {
File artifactFile = (this.installContext.storageDirectory == null ? null
: getArtifactFile(this.installContext.storageDirectory, artifact.getId()));
ArtifactHandler handler;
if (artifactFile == null || !artifactFile.exists()) {
try {
handler = this.installContext.artifactManager.getArtifactHandler(artifact.getId().toMvnUrl());
} catch (final IOException ignore) {
return false;
}
} else {
try {
handler = new ArtifactHandler(artifactFile);
} catch (final MalformedURLException e) {
return false;
}
}
if (handler == null) {
return false;
}
try {
final URLConnection connection = handler.getLocalURL().openConnection();
connection.connect();
final InputStream is = connection.getInputStream();
final long lastModified = connection.getLastModified();
final String digest = lastModified == 0 ? null : String.valueOf(lastModified);
// handle start order
final Dictionary<String, Object> dict = new Hashtable<String, Object>();
if (artifact.getStartOrder() > 0) {
dict.put(InstallableResource.BUNDLE_START_LEVEL, artifact.getStartOrder());
}
dict.put(InstallableResource.RESOURCE_URI_HINT, handler.getLocalURL().toString());
result.add(new InstallableResource("/".concat(artifact.getId().toMvnName()), is, dict, digest,
InstallableResource.TYPE_FILE, null));
} catch (final IOException ioe) {
logger.warn("Unable to read artifact " + handler.getLocalURL(), ioe);
return false;
}
return true;
}