diff options
author | janakr <janakr@google.com> | 2018-03-05 08:25:25 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-05 08:27:29 -0800 |
commit | b54f0c5aa5d8f95c7178103fba4ebc545983f6d2 (patch) | |
tree | 767d1e69196d5621925076170729d53f9ba55413 /src/main/java/com/google/devtools/build/lib/packages | |
parent | 29bf55b32702303c100e9b9a5fbac806f7c779bf (diff) |
Automated rollback of commit 96145511b34a2d7be834e3eb05927674e875c813.
*** Reason for rollback ***
Fixed issue that led to rollback.
RELNOTES: None
*** Original change description ***
Automated rollback of commit eee53d3a33dde441f7e7adaecde81ef2d3db7c1b.
*** Reason for rollback ***
breaks Blaze_CorpTest
*** Original change description ***
@AutoCodec ConfiguredTargetValue.
PiperOrigin-RevId: 187869560
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java b/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java index 30b7ae8abf..3aae40312f 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java +++ b/src/main/java/com/google/devtools/build/lib/packages/NativeProvider.java @@ -16,6 +16,8 @@ package com.google.devtools.build.lib.packages; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.FunctionSignature; import com.google.devtools.build.lib.syntax.SkylarkType; @@ -108,12 +110,14 @@ public abstract class NativeProvider<V extends Info> extends Provider { this(clazz, name, SIGNATURE); } + @SuppressWarnings("unchecked") protected NativeProvider( Class<V> valueClass, String name, FunctionSignature.WithValues<Object, SkylarkType> signature) { super(name, signature, Location.BUILTIN); - key = new NativeKey(name, getClass()); + Class<? extends NativeProvider<?>> clazz = (Class<? extends NativeProvider<?>>) getClass(); + key = new NativeKey(name, clazz); this.valueClass = valueClass; errorMessageFormatForUnknownField = String.format("'%s' object has no attribute '%%s'", name); } @@ -170,10 +174,12 @@ public abstract class NativeProvider<V extends Info> extends Provider { return Pair.of(key.name, key.aClass.getName()); } + @SuppressWarnings("unchecked") public static NativeKey getNativeKeyFromSerializedRepresentation(Pair<String, String> serialized) throws ClassNotFoundException { - Class<? extends NativeProvider> aClass = - Class.forName(serialized.second).asSubclass(NativeProvider.class); + Class<? extends NativeProvider<?>> aClass = + (Class<? extends NativeProvider<?>>) + Class.forName(serialized.second).asSubclass(NativeProvider.class); return new NativeKey(serialized.first, aClass); } @@ -182,12 +188,14 @@ public abstract class NativeProvider<V extends Info> extends Provider { * * <p>Just a wrapper around its class. */ + @AutoCodec @Immutable public static final class NativeKey extends Key { private final String name; - private final Class<? extends NativeProvider> aClass; + private final Class<? extends NativeProvider<?>> aClass; - private NativeKey(String name, Class<? extends NativeProvider> aClass) { + @VisibleForSerialization + NativeKey(String name, Class<? extends NativeProvider<?>> aClass) { this.name = name; this.aClass = aClass; } |