Skip to content

Commit a2c23c5

Browse files
committed
Adding a plugin adds it to plugins
Previously if there was an existing plugins attribute, and an additional plugin was added, the old value would get preserved rather than merged.
1 parent 6681526 commit a2c23c5

File tree

8 files changed

+368
-1
lines changed

8 files changed

+368
-1
lines changed

Diff for: java/gazelle/lang.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ var kindWithRuntimeDeps = rule.KindInfo{
8484
MergeableAttrs: map[string]bool{"srcs": true},
8585
ResolveAttrs: map[string]bool{
8686
"deps": true,
87+
"plugins": true,
8788
"runtime_deps": true,
8889
},
8990
}
@@ -94,7 +95,8 @@ var kindWithoutRuntimeDeps = rule.KindInfo{
9495
},
9596
MergeableAttrs: map[string]bool{"srcs": true},
9697
ResolveAttrs: map[string]bool{
97-
"deps": true,
98+
"deps": true,
99+
"plugins": true,
98100
},
99101
}
100102

@@ -108,6 +110,7 @@ var javaLibraryKind = rule.KindInfo{
108110
ResolveAttrs: map[string]bool{
109111
"deps": true,
110112
"exports": true,
113+
"plugins": true,
111114
"runtime_deps": true,
112115
},
113116
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# gazelle:java_annotation_processor_plugin com.google.auto.value.AutoValue com.google.auto.value.processor.AutoValueProcessor
2+
# gazelle:java_annotation_processor_plugin org.apache.logging.log4j.core.config.plugins.Plugin org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
2+
3+
RULES_JVM_EXTERNAL_TAG = "6.1"
4+
5+
RULES_JVM_EXTERNAL_SHA = "08ea921df02ffe9924123b0686dc04fd0ff875710bfadb7ad42badb931b0fd50"
6+
7+
http_archive(
8+
name = "rules_jvm_external",
9+
sha256 = RULES_JVM_EXTERNAL_SHA,
10+
strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
11+
url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz" % (RULES_JVM_EXTERNAL_TAG, RULES_JVM_EXTERNAL_TAG),
12+
)
13+
14+
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
15+
16+
rules_jvm_external_deps()
17+
18+
load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
19+
20+
rules_jvm_external_setup()
21+
22+
load("@rules_jvm_external//:defs.bzl", "maven_install")
23+
24+
maven_install(
25+
name = "maven",
26+
artifacts = [
27+
"com.google.auto.value:auto-value:1.10.4",
28+
"com.google.auto.value:auto-value-annotations:1.10.4",
29+
"org.apache.logging.log4j:log4j-core:2.23.1",
30+
],
31+
maven_install_json = "@//:maven_install.json",
32+
repositories = [
33+
"https://repo1.maven.org/maven2",
34+
],
35+
)
36+
37+
load("@maven//:defs.bzl", "pinned_maven_install")
38+
39+
pinned_maven_install()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
{
2+
"__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL",
3+
"__INPUT_ARTIFACTS_HASH": -925168523,
4+
"__RESOLVED_ARTIFACTS_HASH": -749883653,
5+
"artifacts": {
6+
"com.google.auto.value:auto-value": {
7+
"shasums": {
8+
"jar": "f3c438d1f82904bbcb452084d488b660f3c7488e9274c3a58f049e121632d434"
9+
},
10+
"version": "1.10.4"
11+
},
12+
"com.google.auto.value:auto-value-annotations": {
13+
"shasums": {
14+
"jar": "e1c45e6beadaef9797cb0d9afd5a45621ad061cd8632012f85582853a3887825"
15+
},
16+
"version": "1.10.4"
17+
},
18+
"org.apache.logging.log4j:log4j-api": {
19+
"shasums": {
20+
"jar": "92ec1fd36ab3bc09de6198d2d7c0914685c0f7127ea931acc32fd2ecdd82ea89"
21+
},
22+
"version": "2.23.1"
23+
},
24+
"org.apache.logging.log4j:log4j-core": {
25+
"shasums": {
26+
"jar": "7079368005fc34f56248f57f8a8a53361c3a53e9007d556dbc66fc669df081b5"
27+
},
28+
"version": "2.23.1"
29+
}
30+
},
31+
"dependencies": {
32+
"org.apache.logging.log4j:log4j-core": [
33+
"org.apache.logging.log4j:log4j-api"
34+
]
35+
},
36+
"packages": {
37+
"com.google.auto.value:auto-value": [
38+
"autovalue.shaded.com.google.auto.common",
39+
"autovalue.shaded.com.google.auto.service",
40+
"autovalue.shaded.com.google.common.annotations",
41+
"autovalue.shaded.com.google.common.base",
42+
"autovalue.shaded.com.google.common.cache",
43+
"autovalue.shaded.com.google.common.collect",
44+
"autovalue.shaded.com.google.common.escape",
45+
"autovalue.shaded.com.google.common.eventbus",
46+
"autovalue.shaded.com.google.common.graph",
47+
"autovalue.shaded.com.google.common.hash",
48+
"autovalue.shaded.com.google.common.html",
49+
"autovalue.shaded.com.google.common.io",
50+
"autovalue.shaded.com.google.common.math",
51+
"autovalue.shaded.com.google.common.net",
52+
"autovalue.shaded.com.google.common.primitives",
53+
"autovalue.shaded.com.google.common.reflect",
54+
"autovalue.shaded.com.google.common.util.concurrent",
55+
"autovalue.shaded.com.google.common.xml",
56+
"autovalue.shaded.com.google.errorprone.annotations",
57+
"autovalue.shaded.com.google.errorprone.annotations.concurrent",
58+
"autovalue.shaded.com.google.escapevelocity",
59+
"autovalue.shaded.com.google.j2objc.annotations",
60+
"autovalue.shaded.com.squareup.javapoet",
61+
"autovalue.shaded.kotlin",
62+
"autovalue.shaded.kotlin.annotation",
63+
"autovalue.shaded.kotlin.collections",
64+
"autovalue.shaded.kotlin.collections.builders",
65+
"autovalue.shaded.kotlin.collections.unsigned",
66+
"autovalue.shaded.kotlin.comparisons",
67+
"autovalue.shaded.kotlin.contracts",
68+
"autovalue.shaded.kotlin.coroutines",
69+
"autovalue.shaded.kotlin.coroutines.intrinsics",
70+
"autovalue.shaded.kotlin.coroutines.jvm.internal",
71+
"autovalue.shaded.kotlin.enums",
72+
"autovalue.shaded.kotlin.experimental",
73+
"autovalue.shaded.kotlin.internal",
74+
"autovalue.shaded.kotlin.internal.jdk7",
75+
"autovalue.shaded.kotlin.internal.jdk8",
76+
"autovalue.shaded.kotlin.jvm",
77+
"autovalue.shaded.kotlin.jvm.functions",
78+
"autovalue.shaded.kotlin.jvm.internal",
79+
"autovalue.shaded.kotlin.jvm.internal.markers",
80+
"autovalue.shaded.kotlin.random",
81+
"autovalue.shaded.kotlin.random.jdk8",
82+
"autovalue.shaded.kotlin.ranges",
83+
"autovalue.shaded.kotlin.reflect",
84+
"autovalue.shaded.kotlin.sequences",
85+
"autovalue.shaded.kotlin.text",
86+
"autovalue.shaded.kotlinx.metadata",
87+
"autovalue.shaded.kotlinx.metadata.internal",
88+
"autovalue.shaded.kotlinx.metadata.internal.common",
89+
"autovalue.shaded.kotlinx.metadata.internal.extensions",
90+
"autovalue.shaded.kotlinx.metadata.internal.metadata",
91+
"autovalue.shaded.kotlinx.metadata.internal.metadata.deserialization",
92+
"autovalue.shaded.kotlinx.metadata.internal.metadata.jvm",
93+
"autovalue.shaded.kotlinx.metadata.internal.metadata.jvm.deserialization",
94+
"autovalue.shaded.kotlinx.metadata.internal.metadata.jvm.serialization",
95+
"autovalue.shaded.kotlinx.metadata.internal.metadata.serialization",
96+
"autovalue.shaded.kotlinx.metadata.internal.protobuf",
97+
"autovalue.shaded.kotlinx.metadata.jvm",
98+
"autovalue.shaded.kotlinx.metadata.jvm.internal",
99+
"autovalue.shaded.net.ltgt.gradle.incap",
100+
"autovalue.shaded.org.checkerframework.checker.nullness.qual",
101+
"autovalue.shaded.org.checkerframework.framework.qual",
102+
"autovalue.shaded.org.jetbrains.annotations",
103+
"autovalue.shaded.org.objectweb.asm",
104+
"com.google.auto.value.extension",
105+
"com.google.auto.value.extension.memoized.processor",
106+
"com.google.auto.value.extension.serializable.processor",
107+
"com.google.auto.value.extension.serializable.serializer",
108+
"com.google.auto.value.extension.serializable.serializer.impl",
109+
"com.google.auto.value.extension.serializable.serializer.interfaces",
110+
"com.google.auto.value.extension.serializable.serializer.runtime",
111+
"com.google.auto.value.extension.toprettystring.processor",
112+
"com.google.auto.value.processor"
113+
],
114+
"com.google.auto.value:auto-value-annotations": [
115+
"com.google.auto.value",
116+
"com.google.auto.value.extension.memoized",
117+
"com.google.auto.value.extension.serializable",
118+
"com.google.auto.value.extension.toprettystring"
119+
],
120+
"org.apache.logging.log4j:log4j-api": [
121+
"org.apache.logging.log4j",
122+
"org.apache.logging.log4j.internal",
123+
"org.apache.logging.log4j.message",
124+
"org.apache.logging.log4j.simple",
125+
"org.apache.logging.log4j.spi",
126+
"org.apache.logging.log4j.status",
127+
"org.apache.logging.log4j.util",
128+
"org.apache.logging.log4j.util.internal"
129+
],
130+
"org.apache.logging.log4j:log4j-core": [
131+
"org.apache.logging.log4j.core",
132+
"org.apache.logging.log4j.core.appender",
133+
"org.apache.logging.log4j.core.appender.db",
134+
"org.apache.logging.log4j.core.appender.db.jdbc",
135+
"org.apache.logging.log4j.core.appender.mom",
136+
"org.apache.logging.log4j.core.appender.mom.jeromq",
137+
"org.apache.logging.log4j.core.appender.mom.kafka",
138+
"org.apache.logging.log4j.core.appender.nosql",
139+
"org.apache.logging.log4j.core.appender.rewrite",
140+
"org.apache.logging.log4j.core.appender.rolling",
141+
"org.apache.logging.log4j.core.appender.rolling.action",
142+
"org.apache.logging.log4j.core.appender.routing",
143+
"org.apache.logging.log4j.core.async",
144+
"org.apache.logging.log4j.core.config",
145+
"org.apache.logging.log4j.core.config.arbiters",
146+
"org.apache.logging.log4j.core.config.builder.api",
147+
"org.apache.logging.log4j.core.config.builder.impl",
148+
"org.apache.logging.log4j.core.config.composite",
149+
"org.apache.logging.log4j.core.config.json",
150+
"org.apache.logging.log4j.core.config.plugins",
151+
"org.apache.logging.log4j.core.config.plugins.convert",
152+
"org.apache.logging.log4j.core.config.plugins.processor",
153+
"org.apache.logging.log4j.core.config.plugins.util",
154+
"org.apache.logging.log4j.core.config.plugins.validation",
155+
"org.apache.logging.log4j.core.config.plugins.validation.constraints",
156+
"org.apache.logging.log4j.core.config.plugins.validation.validators",
157+
"org.apache.logging.log4j.core.config.plugins.visitors",
158+
"org.apache.logging.log4j.core.config.properties",
159+
"org.apache.logging.log4j.core.config.status",
160+
"org.apache.logging.log4j.core.config.xml",
161+
"org.apache.logging.log4j.core.config.yaml",
162+
"org.apache.logging.log4j.core.filter",
163+
"org.apache.logging.log4j.core.filter.mutable",
164+
"org.apache.logging.log4j.core.impl",
165+
"org.apache.logging.log4j.core.jackson",
166+
"org.apache.logging.log4j.core.jmx",
167+
"org.apache.logging.log4j.core.layout",
168+
"org.apache.logging.log4j.core.layout.internal",
169+
"org.apache.logging.log4j.core.lookup",
170+
"org.apache.logging.log4j.core.message",
171+
"org.apache.logging.log4j.core.net",
172+
"org.apache.logging.log4j.core.net.ssl",
173+
"org.apache.logging.log4j.core.osgi",
174+
"org.apache.logging.log4j.core.parser",
175+
"org.apache.logging.log4j.core.pattern",
176+
"org.apache.logging.log4j.core.script",
177+
"org.apache.logging.log4j.core.selector",
178+
"org.apache.logging.log4j.core.time",
179+
"org.apache.logging.log4j.core.time.internal",
180+
"org.apache.logging.log4j.core.tools",
181+
"org.apache.logging.log4j.core.tools.picocli",
182+
"org.apache.logging.log4j.core.util",
183+
"org.apache.logging.log4j.core.util.datetime",
184+
"org.apache.logging.log4j.core.util.internal"
185+
]
186+
},
187+
"repositories": {
188+
"https://repo1.maven.org/maven2/": [
189+
"com.google.auto.value:auto-value",
190+
"com.google.auto.value:auto-value-annotations",
191+
"org.apache.logging.log4j:log4j-api",
192+
"org.apache.logging.log4j:log4j-core"
193+
]
194+
},
195+
"services": {
196+
"com.google.auto.value:auto-value": {
197+
"autovalue.shaded.kotlinx.metadata.internal.extensions.MetadataExtensions": [
198+
"autovalue.shaded.kotlinx.metadata.jvm.internal.JvmMetadataExtensions"
199+
],
200+
"com.google.auto.value.extension.AutoValueExtension": [
201+
"com.google.auto.value.extension.memoized.processor.MemoizeExtension",
202+
"com.google.auto.value.extension.serializable.processor.SerializableAutoValueExtension",
203+
"com.google.auto.value.extension.toprettystring.processor.ToPrettyStringExtension"
204+
],
205+
"com.google.auto.value.extension.serializable.serializer.interfaces.SerializerExtension": [
206+
"com.google.auto.value.extension.serializable.serializer.impl.ImmutableListSerializerExtension",
207+
"com.google.auto.value.extension.serializable.serializer.impl.ImmutableMapSerializerExtension",
208+
"com.google.auto.value.extension.serializable.serializer.impl.OptionalSerializerExtension"
209+
],
210+
"javax.annotation.processing.Processor": [
211+
"com.google.auto.value.extension.memoized.processor.MemoizedValidator",
212+
"com.google.auto.value.extension.toprettystring.processor.ToPrettyStringValidator",
213+
"com.google.auto.value.processor.AutoAnnotationProcessor",
214+
"com.google.auto.value.processor.AutoBuilderProcessor",
215+
"com.google.auto.value.processor.AutoOneOfProcessor",
216+
"com.google.auto.value.processor.AutoValueBuilderProcessor",
217+
"com.google.auto.value.processor.AutoValueProcessor"
218+
]
219+
},
220+
"org.apache.logging.log4j:log4j-api": {
221+
"org.apache.logging.log4j.util.PropertySource": [
222+
"org.apache.logging.log4j.util.EnvironmentPropertySource",
223+
"org.apache.logging.log4j.util.SystemPropertiesPropertySource"
224+
]
225+
},
226+
"org.apache.logging.log4j:log4j-core": {
227+
"javax.annotation.processing.Processor": [
228+
"org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor"
229+
],
230+
"org.apache.logging.log4j.core.util.ContextDataProvider": [
231+
"org.apache.logging.log4j.core.impl.ThreadContextDataProvider"
232+
],
233+
"org.apache.logging.log4j.message.ThreadDumpMessage$ThreadInfoFactory": [
234+
"org.apache.logging.log4j.core.message.ExtendedThreadInfoFactory"
235+
],
236+
"org.apache.logging.log4j.spi.Provider": [
237+
"org.apache.logging.log4j.core.impl.Log4jProvider"
238+
]
239+
}
240+
},
241+
"version": "2"
242+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
load("@rules_java//java:defs.bzl", "java_binary", "java_library")
2+
3+
java_library(
4+
name = "example",
5+
srcs = ["Main.java"],
6+
plugins = ["@maven//:com_google_auto_value_auto_value__java_plugin__com_google_auto_value_processor_AutoValueProcessor"],
7+
visibility = ["//:__subpackages__"],
8+
deps = ["@maven//:com_google_auto_value_auto_value_annotations"],
9+
)
10+
11+
java_binary(
12+
name = "Main",
13+
main_class = "com.example.Main",
14+
visibility = ["//visibility:public"],
15+
runtime_deps = [":example"],
16+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
load("@rules_java//java:defs.bzl", "java_binary", "java_library")
2+
3+
java_library(
4+
name = "example",
5+
srcs = [
6+
"LogProcessor.java",
7+
"Main.java",
8+
],
9+
plugins = [
10+
"@maven//:com_google_auto_value_auto_value__java_plugin__com_google_auto_value_processor_AutoValueProcessor",
11+
"@maven//:org_apache_logging_log4j_log4j_core__java_plugin__org_apache_logging_log4j_core_config_plugins_processor_PluginProcessor",
12+
],
13+
visibility = ["//:__subpackages__"],
14+
deps = [
15+
"@maven//:com_google_auto_value_auto_value_annotations",
16+
"@maven//:org_apache_logging_log4j_log4j_core",
17+
],
18+
)
19+
20+
java_binary(
21+
name = "Main",
22+
main_class = "com.example.Main",
23+
visibility = ["//visibility:public"],
24+
runtime_deps = [":example"],
25+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.example;
2+
3+
import org.apache.logging.log4j.core.LogEvent;
4+
import org.apache.logging.log4j.core.appender.AbstractAppender;
5+
import org.apache.logging.log4j.core.config.plugins.Plugin;
6+
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
7+
8+
@Plugin(name = "LogProcessor")
9+
public class LogProcessor extends AbstractAppender {
10+
@PluginFactory
11+
public static LogProcessor create() {
12+
return new LogProcessor();
13+
}
14+
15+
@Override
16+
public void append(LogEvent event) {
17+
// This is not a very useful log appender, and that's ok.
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.example;
2+
3+
import com.google.auto.value.AutoValue;
4+
5+
class Main {
6+
public static void main(String[] args) {
7+
Animal pig = Animal.create("pig", 4);
8+
Animal chicken = Animal.create("chicken", 2);
9+
System.out.printf("Checking if %s has same legs as %s: %s%n", pig, chicken, pig.numberOfLegs() == chicken.numberOfLegs());
10+
}
11+
12+
@AutoValue
13+
public abstract static class Animal {
14+
static Animal create(String name, int numberOfLegs) {
15+
return new AutoValue_Main_Animal(name, numberOfLegs);
16+
}
17+
18+
abstract String name();
19+
abstract int numberOfLegs();
20+
}
21+
}

0 commit comments

Comments
 (0)