use of org.apache.twill.filesystem.Location in project cdap by caskdata.
the class CoprocessorManager method getCoprocessorDescriptor.
/**
* Get the descriptor for a single coprocessor that uses the pre-built coprocessor jar.
*/
public CoprocessorDescriptor getCoprocessorDescriptor(Class<? extends Coprocessor> coprocessor, @Nullable Integer priority) throws IOException {
if (priority == null) {
priority = Coprocessor.PRIORITY_USER;
}
Location jarFile = ensureCoprocessorExists();
String jarPath = manageCoprocessors ? jarFile.toURI().getPath() : null;
return new CoprocessorDescriptor(coprocessor.getName(), jarPath, priority, null);
}
use of org.apache.twill.filesystem.Location in project cdap by caskdata.
the class IntegrationTestManager method createModuleJarFile.
private File createModuleJarFile(Class<?> cls) throws IOException {
String version = String.format("1.0.%d-SNAPSHOT", System.currentTimeMillis());
File moduleJarFile = new File(tmpFolder, String.format("%s-%s.jar", cls.getSimpleName(), version));
Location deploymentJar = AppJarHelper.createDeploymentJar(locationFactory, cls, new Manifest(), CLASS_ACCEPTOR);
Files.copy(Locations.newInputSupplier(deploymentJar), moduleJarFile);
return moduleJarFile;
}
use of org.apache.twill.filesystem.Location in project cdap by caskdata.
the class IntegrationTestManager method addPluginArtifact.
@Override
public ArtifactManager addPluginArtifact(ArtifactId artifactId, Set<ArtifactRange> parents, Class<?> pluginClass, Class<?>... pluginClasses) throws Exception {
Manifest manifest = createManifest(pluginClass, pluginClasses);
final Location appJar = PluginJarHelper.createPluginJar(locationFactory, manifest, pluginClass, pluginClasses);
artifactClient.add(artifactId, parents, new InputSupplier<InputStream>() {
@Override
public InputStream getInput() throws IOException {
return appJar.getInputStream();
}
});
appJar.delete();
return new RemoteArtifactManager(clientConfig, restClient, artifactId);
}
use of org.apache.twill.filesystem.Location in project cdap by caskdata.
the class IntegrationTestManager method deployApplication.
@Override
@SuppressWarnings("unchecked")
public ApplicationManager deployApplication(NamespaceId namespace, Class<? extends Application> applicationClz, @Nullable Config configObject, File... bundleEmbeddedJars) {
// See if the application class comes from file or jar.
// If it's from JAR, no need to trace dependency since it should already be in an application jar.
URL appClassURL = applicationClz.getClassLoader().getResource(applicationClz.getName().replace('.', '/') + ".class");
// Should never happen, otherwise the ClassLoader is broken
Preconditions.checkNotNull(appClassURL, "Cannot find class %s from the classloader", applicationClz);
String appConfig = "";
Type configType = Artifacts.getConfigType(applicationClz);
try {
if (configObject != null) {
appConfig = GSON.toJson(configObject);
} else {
configObject = (Config) TypeToken.of(configType).getRawType().newInstance();
}
// Create and deploy application jar
File appJarFile = new File(tmpFolder, String.format("%s-1.0.0-SNAPSHOT.jar", applicationClz.getSimpleName()));
try {
if ("jar".equals(appClassURL.getProtocol())) {
copyJarFile(appClassURL, appJarFile);
} else {
Location appJar = AppJarHelper.createDeploymentJar(locationFactory, applicationClz, new Manifest(), CLASS_ACCEPTOR, bundleEmbeddedJars);
Files.copy(Locations.newInputSupplier(appJar), appJarFile);
}
applicationClient.deploy(namespace, appJarFile, appConfig);
} finally {
if (!appJarFile.delete()) {
LOG.warn("Failed to delete temporary app jar {}", appJarFile.getAbsolutePath());
}
}
// Extracts application id from the application class
Application application = applicationClz.newInstance();
MockAppConfigurer configurer = new MockAppConfigurer(application);
application.configure(configurer, new DefaultApplicationContext<>(configObject));
String applicationId = configurer.getName();
return new RemoteApplicationManager(namespace.app(applicationId), clientConfig, restClient);
} catch (Exception e) {
throw Throwables.propagate(e);
}
}
use of org.apache.twill.filesystem.Location in project cdap by caskdata.
the class IntegrationTestManager method addAppArtifact.
@Override
public ArtifactManager addAppArtifact(ArtifactId artifactId, Class<?> appClass, Manifest manifest) throws Exception {
final Location appJar = AppJarHelper.createDeploymentJar(locationFactory, appClass, manifest, CLASS_ACCEPTOR);
artifactClient.add(artifactId, null, new InputSupplier<InputStream>() {
@Override
public InputStream getInput() throws IOException {
return appJar.getInputStream();
}
});
appJar.delete();
return new RemoteArtifactManager(clientConfig, restClient, artifactId);
}
Aggregations