use of org.gradle.api.tasks.Input in project rest.li by linkedin.
the class GenerateRestClientTask method generate.
@TaskAction
public void generate() {
PegasusOptions.ClientOptions pegasusClientOptions = new PegasusOptions.ClientOptions();
// idl input could include rest model jar files
for (File input : getProject().files(_inputDir)) {
if (input.isDirectory()) {
for (File f : SharedFileUtils.getSuffixedFiles(getProject(), input, PegasusPlugin.IDL_FILE_SUFFIX)) {
if (!pegasusClientOptions.hasRestModelFileName(f.getName())) {
pegasusClientOptions.addClientItem(f.getName(), "", false);
getProject().getLogger().lifecycle("Add interface file: {}", f.getPath());
}
}
}
}
if (pegasusClientOptions.getClientItems().isEmpty()) {
return;
}
getProject().getLogger().info("Generating REST client builders ...");
String resolverPathStr = _resolverPath.getAsPath();
_destinationDir.mkdirs();
Map<String, List<String>> version1Files = new HashMap<>();
Map<String, List<String>> version2Files = new HashMap<>();
List<String> fluentApiFiles = new ArrayList<>();
getProject().getLogger().lifecycle("Destination directory: {}", _destinationDir);
getProject().getLogger().lifecycle("Generate fluent apis: {}", _generateFluentApi);
for (PegasusOptions.ClientItem clientItem : pegasusClientOptions.getClientItems()) {
getProject().getLogger().lifecycle("Generating rest client source files for: {}", clientItem.restModelFileName);
String defaultPackage;
if (clientItem.defaultPackage.equals("") && getProject().hasProperty("idlDefaultPackage")) {
defaultPackage = (String) getProject().property("idlDefaultPackage");
} else {
defaultPackage = clientItem.defaultPackage;
}
String restModelFilePath = _inputDir.toString() + File.separatorChar + clientItem.restModelFileName;
if (!_restli1FormatSuppressed) {
version1Files.computeIfAbsent(defaultPackage, key -> new ArrayList<>()).add(restModelFilePath);
}
if (!_restli2FormatSuppressed) {
version2Files.computeIfAbsent(defaultPackage, key -> new ArrayList<>()).add(restModelFilePath);
}
if (_generateFluentApi) {
fluentApiFiles.add(restModelFilePath);
}
}
String deprecatedVersion = _restli1BuildersDeprecated ? "2.0.0" : null;
FileCollection _pathedCodegenClasspath;
try {
_pathedCodegenClasspath = PathingJarUtil.generatePathingJar(getProject(), getName(), _runtimeClasspath.plus(_codegenClasspath), false);
} catch (IOException e) {
throw new GradleException("Error occurred generating pathing JAR.", e);
}
version1Files.forEach((defaultPackage, files) -> getProject().javaexec(javaExecSpec -> {
List<String> sources = files;
String resolverPathArg = resolverPathStr;
if (isEnableArgFile()) {
sources = Collections.singletonList(getArgFileSyntax(createArgFile("v1_" + defaultPackage, files, getTemporaryDir())));
resolverPathArg = ArgumentFileGenerator.getArgFileSyntax(ArgumentFileGenerator.createArgFile("generateRestClient_resolverPath_v1", Collections.singletonList(resolverPathArg), getTemporaryDir()));
}
javaExecSpec.setClasspath(_pathedCodegenClasspath);
javaExecSpec.setMain("com.linkedin.restli.tools.clientgen.RestRequestBuilderGenerator");
// RestRequestBuilderGenerator.run(resolverPath)
javaExecSpec.jvmArgs("-Dgenerator.resolver.path=" + resolverPathArg);
// RestRequestBuilderGenerator.run(defaultPackage)
javaExecSpec.jvmArgs("-Dgenerator.default.package=" + defaultPackage);
// RestRequestBuilderGenerator.run(generateImported)
javaExecSpec.jvmArgs("-Dgenerator.generate.imported=false");
// RestRequestBuilderGenerator.run(generateDataTemplates)
javaExecSpec.jvmArgs("-Dgenerator.rest.generate.datatemplates=false");
// RestRequestBuilderGenerator.run(version)
javaExecSpec.jvmArgs("-Dgenerator.rest.generate.version=1.0.0");
// RestRequestBuilderGenerator.run(deprecatedByVersion)
javaExecSpec.jvmArgs("-Dgenerator.rest.generate.deprecated.version=" + deprecatedVersion);
if (_generateLowercasePath != null) {
// RestRequestBuilderGenerator.run(generateLowercasePath)
javaExecSpec.jvmArgs("-Dgenerator.rest.generate.lowercase.path=" + _generateLowercasePath);
}
javaExecSpec.jvmArgs("-Droot.path=" + getProject().getRootDir().getPath());
javaExecSpec.args(_destinationDir.getAbsolutePath());
javaExecSpec.args(sources);
}).assertNormalExitValue());
version2Files.forEach((defaultPackage, files) -> getProject().javaexec(javaExecSpec -> {
List<String> sources = files;
String resolverPathArg = resolverPathStr;
if (isEnableArgFile()) {
sources = Collections.singletonList(getArgFileSyntax(createArgFile("v2_" + defaultPackage, files, getTemporaryDir())));
resolverPathArg = ArgumentFileGenerator.getArgFileSyntax(ArgumentFileGenerator.createArgFile("generateRestClient_resolverPath_v2", Collections.singletonList(resolverPathArg), getTemporaryDir()));
}
javaExecSpec.setClasspath(_pathedCodegenClasspath);
javaExecSpec.setMain("com.linkedin.restli.tools.clientgen.RestRequestBuilderGenerator");
// RestRequestBuilderGenerator.run(resolverPath)
javaExecSpec.jvmArgs("-Dgenerator.resolver.path=" + resolverPathArg);
// RestRequestBuilderGenerator.run(defaultPackage)
javaExecSpec.jvmArgs("-Dgenerator.default.package=" + defaultPackage);
// RestRequestBuilderGenerator.run(generateImported)
javaExecSpec.jvmArgs("-Dgenerator.generate.imported=false");
// RestRequestBuilderGenerator.run(generateDataTemplates)
javaExecSpec.jvmArgs("-Dgenerator.rest.generate.datatemplates=false");
// RestRequestBuilderGenerator.run(version)
javaExecSpec.jvmArgs("-Dgenerator.rest.generate.version=2.0.0");
if (_generateLowercasePath != null) {
// RestRequestBuilderGenerator.run(generateLowercasePath)
javaExecSpec.jvmArgs("-Dgenerator.rest.generate.lowercase.path=" + _generateLowercasePath);
}
javaExecSpec.jvmArgs("-Droot.path=" + getProject().getRootDir().getPath());
javaExecSpec.args(_destinationDir.getAbsolutePath());
javaExecSpec.args(sources);
}).assertNormalExitValue());
// These are already generated by the request builder generators and will be reused.
if (!fluentApiFiles.isEmpty()) {
getProject().getLogger().lifecycle("Generating fluent client bindings for {} files.", fluentApiFiles.size());
getProject().javaexec(javaExecSpec -> {
List<String> sources = fluentApiFiles;
String resolverPathArg = resolverPathStr;
if (isEnableArgFile()) {
sources = Collections.singletonList(getArgFileSyntax(createArgFile("fluent_", fluentApiFiles, getTemporaryDir())));
resolverPathArg = getArgFileSyntax(createArgFile("generateRestClient_resolverPath_fluent", Collections.singletonList(resolverPathArg), getTemporaryDir()));
}
javaExecSpec.setClasspath(_pathedCodegenClasspath);
javaExecSpec.setMain("com.linkedin.restli.tools.clientgen.FluentApiGenerator");
javaExecSpec.args("--resolverPath", resolverPathArg);
javaExecSpec.args("--rootPath", getProject().getRootDir().getPath());
javaExecSpec.args("--targetDir", _destinationDir.getAbsolutePath());
javaExecSpec.args(sources);
}).assertNormalExitValue();
}
}
use of org.gradle.api.tasks.Input in project wildfly-swarm by wildfly-swarm.
the class PackageTask method getMainClassName.
@Input
@Optional
private String getMainClassName() {
Project project = getProject();
SwarmExtension swarmExtension = getSwarmExtension();
String mainClassName = swarmExtension.getMainClassName();
if (mainClassName == null && project.getConvention().getPlugins().containsKey("application")) {
ApplicationPluginConvention app = (ApplicationPluginConvention) project.getConvention().getPlugins().get("application");
mainClassName = app.getMainClassName();
}
if (mainClassName != null && !mainClassName.equals("")) {
getLogger().warn("\n------\n" + "Custom main() usage is intended to be deprecated in a future release and is no longer supported, \n" + "please refer to http://docs.wildfly-swarm.io for YAML configuration that replaces it." + "\n------");
}
return mainClassName;
}
use of org.gradle.api.tasks.Input in project wildfly-swarm by wildfly-swarm.
the class PackageTask method getPropertiesFromFile.
@Input
private Properties getPropertiesFromFile() {
final Properties properties = new Properties();
File propertiesFile = getPropertiesFile();
if (propertiesFile != null) {
try {
properties.putAll(PropertiesUtil.loadProperties(propertiesFile));
} catch (IOException e) {
getLogger().error("Failed to load properties from " + propertiesFile, e);
}
}
return properties;
}
Aggregations