Skip to content

Commit

Permalink
Excavator: Upgrades Baseline to the latest version
Browse files Browse the repository at this point in the history
  • Loading branch information
svc-excavator-bot committed Dec 7, 2019
1 parent 6f5a264 commit 335d66a
Show file tree
Hide file tree
Showing 14 changed files with 381 additions and 233 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ buildscript {
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
classpath 'com.netflix.nebula:nebula-publishing-plugin:14.1.1'
classpath 'com.palantir.gradle.consistentversions:gradle-consistent-versions:1.13.1'
classpath 'com.palantir.baseline:gradle-baseline-java:2.39.0'
classpath 'com.palantir.baseline:gradle-baseline-java:2.40.2'
classpath 'com.palantir.gradle.conjure:gradle-conjure:4.14.0'
classpath 'com.palantir.gradle.gitversion:gradle-git-version:0.12.2'
classpath 'gradle.plugin.org.inferred:gradle-processors:3.1.0'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,11 @@ public final void action() throws IOException {
File output = getOutputFile().getAsFile().get();
getProject().mkdir(output.getParent());

writer.writeValue(output, getSource().getFiles().stream()
.map(CompileMetricSchemaTask::readFile)
.collect(ImmutableSet.toImmutableSet()));
writer.writeValue(
output,
getSource().getFiles().stream()
.map(CompileMetricSchemaTask::readFile)
.collect(ImmutableSet.toImmutableSet()));
}

private static MetricSchema readFile(File file) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,9 @@ public final void createManifest() throws IOException {

private Map<String, List<MetricSchema>> getLocalMetrics() throws IOException {
if (getMetricsFile().getAsFile().isPresent()) {
return ImmutableMap.of(getProjectCoordinates(getProject()), mapper.readValue(
getMetricsFile().getAsFile().get(), new TypeReference<List<MetricSchema>>() {}));
return ImmutableMap.of(
getProjectCoordinates(getProject()),
mapper.readValue(getMetricsFile().getAsFile().get(), new TypeReference<List<MetricSchema>>() {}));
}
return Collections.emptyMap();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,11 @@ public final void generate() throws IOException {
GFileUtils.writeFile(upToDateContents, markdown);
} else {
if (!markdown.exists()) {
throw new GradleException(String.format(
"%s does not exist, please run `./gradlew %s --write-locks` and commit the resultant file",
markdown.getName(), getName()));
throw new GradleException(
String.format(
"%s does not exist, please run `./gradlew %s --write-locks` and commit the resultant"
+ " file",
markdown.getName(), getName()));
} else {
String fromDisk = GFileUtils.readFile(markdown);
Preconditions.checkState(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,15 @@ public final void generate() {
GFileUtils.deleteDirectory(output);
getProject().mkdir(output);

JavaGenerator.generate(JavaGeneratorArgs.builder()
.inputs(getSource().getFiles().stream().map(File::toPath).collect(ImmutableSet.toImmutableSet()))
.output(output.toPath())
// TODO(forozco): probably want something better
.defaultPackageName(getProject().getGroup().toString())
.build());
JavaGenerator.generate(
JavaGeneratorArgs.builder()
.inputs(
getSource().getFiles().stream()
.map(File::toPath)
.collect(ImmutableSet.toImmutableSet()))
.output(output.toPath())
// TODO(forozco): probably want something better
.defaultPackageName(getProject().getGroup().toString())
.build());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -134,14 +134,16 @@ private static void configureIdea(
project.getTasks().getByName("ideaModule", task -> task.dependsOn(generateMetrics));
project.getExtensions().configure(IdeaModel.class, idea -> {
IdeaModule module = idea.getModule();
module.setSourceDirs(ImmutableSet.<File>builder()
.addAll(module.getSourceDirs())
.add(outputDir.get().getAsFile())
.build());
module.setGeneratedSourceDirs(ImmutableSet.<File>builder()
.addAll(module.getGeneratedSourceDirs())
.add(outputDir.get().getAsFile())
.build());
module.setSourceDirs(
ImmutableSet.<File>builder()
.addAll(module.getSourceDirs())
.add(outputDir.get().getAsFile())
.build());
module.setGeneratedSourceDirs(
ImmutableSet.<File>builder()
.addAll(module.getGeneratedSourceDirs())
.add(outputDir.get().getAsFile())
.build());
});
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ public final class JavaGenerator {
public static List<Path> generate(JavaGeneratorArgs args) {
return args.inputs().stream()
.map(SchemaParser.get()::parseFile)
.flatMap(schema ->
schema.getNamespaces().entrySet().stream().map(entry -> UtilityGenerator.generateUtilityClass(
.flatMap(schema -> schema.getNamespaces().entrySet().stream().map(entry ->
UtilityGenerator.generateUtilityClass(
entry.getKey(), entry.getValue(), getPackage(args, schema), getVisibility(schema))))
.map(javaFile -> Goethe.formatAndEmit(javaFile, args.output()))
.collect(ImmutableList.toImmutableList());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,21 +43,23 @@ static JavaFile generateUtilityClass(
TypeSpec.Builder builder = TypeSpec.classBuilder(className.simpleName())
.addModifiers(visibility.apply(Modifier.FINAL))
.addJavadoc(Javadoc.render(metrics.getDocs()))
.addMethod(MethodSpec.methodBuilder(ReservedNames.FACTORY_METHOD)
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addParameter(TaggedMetricRegistry.class, ReservedNames.REGISTRY_NAME)
.addStatement(
"return new $T($T.checkNotNull(registry, \"TaggedMetricRegistry\"))",
className,
Preconditions.class)
.returns(className)
.build())
.addMethod(
MethodSpec.methodBuilder(ReservedNames.FACTORY_METHOD)
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addParameter(TaggedMetricRegistry.class, ReservedNames.REGISTRY_NAME)
.addStatement(
"return new $T($T.checkNotNull(registry, \"TaggedMetricRegistry\"))",
className,
Preconditions.class)
.returns(className)
.build())
.addField(TaggedMetricRegistry.class, ReservedNames.REGISTRY_NAME, Modifier.PRIVATE, Modifier.FINAL)
.addMethod(MethodSpec.constructorBuilder()
.addModifiers(Modifier.PRIVATE)
.addParameter(TaggedMetricRegistry.class, ReservedNames.REGISTRY_NAME)
.addStatement("this.$1L = $1L", ReservedNames.REGISTRY_NAME)
.build());
.addMethod(
MethodSpec.constructorBuilder()
.addModifiers(Modifier.PRIVATE)
.addParameter(TaggedMetricRegistry.class, ReservedNames.REGISTRY_NAME)
.addStatement("this.$1L = $1L", ReservedNames.REGISTRY_NAME)
.build());

// metrics
for (Map.Entry<String, MetricDefinition> entry : metrics.getMetrics().entrySet()) {
Expand Down Expand Up @@ -115,9 +117,10 @@ private static MethodSpec generateSimpleMetricFactory(
MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder(Custodian.sanitizeName(metricName))
.addModifiers(visibility.apply())
.returns(MetricTypes.get(definition.getType()))
.addParameters(definition.getTags().stream()
.map(tag -> ParameterSpec.builder(String.class, Custodian.sanitizeName(tag)).build())
.collect(ImmutableList.toImmutableList()))
.addParameters(
definition.getTags().stream()
.map(tag -> ParameterSpec.builder(String.class, Custodian.sanitizeName(tag)).build())
.collect(ImmutableList.toImmutableList()))
.addJavadoc(Javadoc.render(definition.getDocs()));
CodeBlock metricNameBlock = metricName(namespace, metricName, definition.getTags());
String metricRegistryMethod = definition.getType().toString().toLowerCase(Locale.ENGLISH);
Expand Down Expand Up @@ -155,23 +158,29 @@ private static void generateMetricFactoryBuilder(
ParameterizedTypeName.get(ClassName.get(Gauge.class), WildcardTypeName.subtypeOf(Object.class)),
ReservedNames.GAUGE_NAME);
}
outerBuilder.addType(TypeSpec.interfaceBuilder(buildStage(metricName))
.addModifiers(visibility.apply())
.addMethod(abstractBuildMethodBuilder.build())
.build());
outerBuilder.addType(
TypeSpec.interfaceBuilder(buildStage(metricName))
.addModifiers(visibility.apply())
.addMethod(abstractBuildMethodBuilder.build())
.build());
ImmutableList<String> tagList = ImmutableList.copyOf(definition.getTags());
for (int i = 0; i < tagList.size(); i++) {
boolean lastTag = i == tagList.size() - 1;
String tag = tagList.get(i);
outerBuilder.addType(TypeSpec.interfaceBuilder(stageName(metricName, tag))
.addModifiers(visibility.apply())
.addMethod(MethodSpec.methodBuilder(Custodian.sanitizeName(tag))
.addParameter(String.class, Custodian.sanitizeName(tag))
.addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
.returns(ClassName.bestGuess(
lastTag ? buildStage(metricName) : stageName(metricName, tagList.get(i + 1))))
.build())
.build());
outerBuilder.addType(
TypeSpec.interfaceBuilder(stageName(metricName, tag))
.addModifiers(visibility.apply())
.addMethod(
MethodSpec.methodBuilder(Custodian.sanitizeName(tag))
.addParameter(String.class, Custodian.sanitizeName(tag))
.addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT)
.returns(
ClassName.bestGuess(
lastTag
? buildStage(metricName)
: stageName(metricName, tagList.get(i + 1))))
.build())
.build());
}
CodeBlock metricNameBlock = metricName(namespaceName, metricName, definition.getTags());
String metricRegistryMethod = definition.getType().toString().toLowerCase(Locale.ENGLISH);
Expand Down Expand Up @@ -199,32 +208,43 @@ private static void generateMetricFactoryBuilder(
"return $L.$L($L)", ReservedNames.REGISTRY_NAME, metricRegistryMethod, metricNameBlock);
}

outerBuilder.addType(TypeSpec.classBuilder(Custodian.anyToUpperCamel(metricName) + "Builder")
.addModifiers(Modifier.PRIVATE, Modifier.FINAL)
.addSuperinterfaces(tagList.stream()
.map(tag -> ClassName.bestGuess(stageName(metricName, tag)))
.collect(ImmutableList.toImmutableList()))
.addSuperinterface(ClassName.bestGuess(buildStage(metricName)))
.addFields(tagList.stream()
.map(tag -> FieldSpec.builder(String.class, Custodian.sanitizeName(tag), Modifier.PRIVATE)
.build())
.collect(ImmutableList.toImmutableList()))
.addMethod(buildMethodBuilder.build())
.addMethods(tagList.stream()
.map(tag -> MethodSpec.methodBuilder(Custodian.sanitizeName(tag))
.addModifiers(Modifier.PUBLIC)
.addAnnotation(Override.class)
.returns(ClassName.bestGuess(Custodian.anyToUpperCamel(metricName) + "Builder"))
.addParameter(String.class, Custodian.sanitizeName(tag))
.addStatement(
"this.$1L = $2T.checkNotNull($1L, $3S)",
Custodian.sanitizeName(tag),
Preconditions.class,
tag + " is required")
.addStatement("return this")
.build())
.collect(ImmutableList.toImmutableList()))
.build());
outerBuilder.addType(
TypeSpec.classBuilder(Custodian.anyToUpperCamel(metricName) + "Builder")
.addModifiers(Modifier.PRIVATE, Modifier.FINAL)
.addSuperinterfaces(
tagList.stream()
.map(tag -> ClassName.bestGuess(stageName(metricName, tag)))
.collect(ImmutableList.toImmutableList()))
.addSuperinterface(ClassName.bestGuess(buildStage(metricName)))
.addFields(
tagList.stream()
.map(tag ->
FieldSpec.builder(
String.class,
Custodian.sanitizeName(tag),
Modifier.PRIVATE)
.build())
.collect(ImmutableList.toImmutableList()))
.addMethod(buildMethodBuilder.build())
.addMethods(
tagList.stream()
.map(tag ->
MethodSpec.methodBuilder(Custodian.sanitizeName(tag))
.addModifiers(Modifier.PUBLIC)
.addAnnotation(Override.class)
.returns(ClassName.bestGuess(Custodian.anyToUpperCamel(
metricName)
+ "Builder"))
.addParameter(String.class, Custodian.sanitizeName(tag))
.addStatement(
"this.$1L = $2T.checkNotNull($1L, $3S)",
Custodian.sanitizeName(tag),
Preconditions.class,
tag + " is required")
.addStatement("return this")
.build())
.collect(ImmutableList.toImmutableList()))
.build());

MethodSpec.Builder methodBuilder = MethodSpec.methodBuilder(Custodian.sanitizeName(metricName))
.addModifiers(visibility.apply())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,18 @@ private static void validateNamespace(String namespace, MetricNamespace namespac
// Provide enough data to figure out which schema is missing a namespace
SafeArg.of("namespaceValue", namespaceValue));
Preconditions.checkArgument(
NAME_PREDICATE.matcher(namespace).matches(), "Namespace must match pattern", SafeArg.of(
"pattern", NAME_PATTERN));
NAME_PREDICATE.matcher(namespace).matches(),
"Namespace must match pattern",
SafeArg.of("pattern", NAME_PATTERN));
validateShortName(namespaceValue);
validateDocumentation(namespaceValue.getDocs());
namespaceValue.getMetrics().forEach((name, definition) -> {
Preconditions.checkArgument(
!name.isEmpty(), "MetricDefinition names must not be empty", SafeArg.of("namespace", namespace));
Preconditions.checkArgument(
NAME_PREDICATE.matcher(name).matches(), "MetricDefinition names must match pattern", SafeArg.of(
"pattern", NAME_PATTERN));
NAME_PREDICATE.matcher(name).matches(),
"MetricDefinition names must match pattern",
SafeArg.of("pattern", NAME_PATTERN));
Preconditions.checkArgument(
MetricType.Value.UNKNOWN != definition.getType().get(),
"Unknown metric type",
Expand All @@ -64,16 +66,19 @@ private static void validateNamespace(String namespace, MetricNamespace namespac
SafeArg.of("namespace", namespace),
SafeArg.of("definition", definition));
Preconditions.checkArgument(
NAME_PREDICATE.matcher(tag).matches(), "MetricDefinition tags must match pattern", SafeArg.of(
"pattern", NAME_PATTERN));
NAME_PREDICATE.matcher(tag).matches(),
"MetricDefinition tags must match pattern",
SafeArg.of("pattern", NAME_PATTERN));
});
});
}

private static void validateShortName(MetricNamespace namespace) {
namespace.getShortName().ifPresent(shortName -> Preconditions.checkArgument(
SHORT_NAME_PREDICATE.matcher(shortName).matches(), "ShortName must match pattern", SafeArg.of(
"pattern", SHORT_NAME_PATTERN)));
namespace.getShortName().ifPresent(shortName ->
Preconditions.checkArgument(
SHORT_NAME_PREDICATE.matcher(shortName).matches(),
"ShortName must match pattern",
SafeArg.of("pattern", SHORT_NAME_PATTERN)));
}

private static void validateDocumentation(Documentation documentation) {
Expand Down
Loading

0 comments on commit 335d66a

Please sign in to comment.