Provide AspectDescriptor to ConfiguredAspect.

Also clean up the setting of aspect name in ConfiguredAspect and
AspectDefintion - it is now obtained from the AspectClass.

--
MOS_MIGRATED_REVID=140357052
diff --git a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java
index 1c6eebd..a6363b7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java
@@ -117,9 +117,9 @@
 
   @Override
   public Object getValue(String name) {
-    if (name.equals("label")) {
+    if (name.equals(LABEL_FIELD)) {
       return getLabel();
-    } else if (name.equals("files")) {
+    } else if (name.equals(FILES_FIELD)) {
       // A shortcut for files to build in Skylark. FileConfiguredTarget and RuleConfiguredTarget
       // always has FileProvider and Error- and PackageGroupConfiguredTarget-s shouldn't be
       // accessible in Skylark.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
index 4d31393..e743a92 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNeverlinkAspect.java
@@ -49,7 +49,7 @@
       ConfiguredTarget base, RuleContext ruleContext, AspectParameters parameters) {
     if (!JavaCommon.getConstraints(ruleContext).contains("android")
         && !ruleContext.getRule().getRuleClass().startsWith("android_")) {
-      return new ConfiguredAspect.Builder(NAME, ruleContext).build();
+      return new ConfiguredAspect.Builder(this, parameters, ruleContext).build();
     }
 
     List<TransitiveInfoCollection> deps = new ArrayList<>();
@@ -65,7 +65,7 @@
       deps.addAll(ruleContext.getPrerequisites(attribute, Mode.TARGET));
     }
 
-    return new ConfiguredAspect.Builder(NAME, ruleContext)
+    return new ConfiguredAspect.Builder(this, parameters, ruleContext)
         .addProvider(
             AndroidNeverLinkLibrariesProvider.create(
                 AndroidCommon.collectTransitiveNeverlinkLibraries(
@@ -77,7 +77,7 @@
 
   @Override
   public AspectDefinition getDefinition(AspectParameters aspectParameters) {
-    AspectDefinition.Builder builder = new AspectDefinition.Builder("AndroidNeverlinkAspect");
+    AspectDefinition.Builder builder = new AspectDefinition.Builder(this);
     for (String attribute : ATTRIBUTES) {
       builder.attributeAspect(attribute, this);
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
index de29a01..eec142c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
@@ -110,7 +110,7 @@
 
   @Override
   public AspectDefinition getDefinition(AspectParameters params) {
-    AspectDefinition.Builder result = new AspectDefinition.Builder(NAME)
+    AspectDefinition.Builder result = new AspectDefinition.Builder(this)
         // Actually we care about JavaRuntimeJarProvider, but rules don't advertise that provider.
         .requireProvider(JavaCompilationArgsProvider.class)
         // Parse labels since we don't have RuleDefinitionEnvironment.getLabel like in a rule
@@ -136,7 +136,7 @@
   @Override
   public ConfiguredAspect create(ConfiguredTarget base, RuleContext ruleContext,
       AspectParameters params) throws InterruptedException {
-    ConfiguredAspect.Builder result = new ConfiguredAspect.Builder(NAME, ruleContext);
+    ConfiguredAspect.Builder result = new ConfiguredAspect.Builder(this, params, ruleContext);
     Function<Artifact, Artifact> desugaredJars =
         desugarJarsIfRequested(base, ruleContext, result);
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java
index 0a39076..4df83e7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java
@@ -60,7 +60,7 @@
       throw new IllegalStateException(e);
     }
 
-    return new AspectDefinition.Builder("JackAspect")
+    return new AspectDefinition.Builder(this)
         .requireProvider(JavaSourceInfoProvider.class)
         .add(attr(":android_sdk", LABEL)
               .allowedRuleClasses("android_sdk")
@@ -76,7 +76,7 @@
   public ConfiguredAspect create(
       ConfiguredTarget base, RuleContext ruleContext, AspectParameters params) {
     if (base.getProvider(JackLibraryProvider.class) != null) {
-      return new ConfiguredAspect.Builder(NAME, ruleContext).build();
+      return new ConfiguredAspect.Builder(this, params, ruleContext).build();
     }
     JavaSourceInfoProvider sourceProvider = base.getProvider(JavaSourceInfoProvider.class);
     PathFragment rulePath = ruleContext.getLabel().toPathFragment();
@@ -116,7 +116,7 @@
         JavaCommon.isNeverLink(ruleContext)
             ? jackHelper.compileAsNeverlinkLibrary()
             : jackHelper.compileAsLibrary();
-    return new ConfiguredAspect.Builder(NAME, ruleContext).addProvider(result).build();
+    return new ConfiguredAspect.Builder(this, params, ruleContext).addProvider(result).build();
   }
 
   /** Gets a list of targets on the given LABEL_LIST attribute if it exists, else an empty list. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
index 5760cbd..7ae7cad 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
@@ -89,7 +89,7 @@
       ConfiguredTarget base, RuleContext ruleContext, AspectParameters parameters)
       throws InterruptedException {
     ConfiguredAspect.Builder aspect =
-        new ConfiguredAspect.Builder(getClass().getSimpleName(), ruleContext);
+        new ConfiguredAspect.Builder(this, parameters, ruleContext);
 
     // Get SupportData, which is provided by the proto_library rule we attach to.
     SupportData supportData =
@@ -103,7 +103,7 @@
   @Override
   public AspectDefinition getDefinition(AspectParameters aspectParameters) {
     AspectDefinition.Builder result =
-        new AspectDefinition.Builder(getClass().getSimpleName())
+        new AspectDefinition.Builder(this)
             .attributeAspect("deps", this)
             .requiresConfigurationFragments(JavaConfiguration.class, ProtoConfiguration.class)
             .requireProvider(ProtoSourcesProvider.class)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
index 721648f..9de5625 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
@@ -125,7 +125,7 @@
       ConfiguredTarget base, RuleContext ruleContext, AspectParameters parameters)
       throws InterruptedException {
     ConfiguredAspect.Builder aspect =
-        new ConfiguredAspect.Builder(getClass().getSimpleName(), ruleContext);
+        new ConfiguredAspect.Builder(this, parameters, ruleContext);
 
     if (!rpcSupport.checkAttributes(ruleContext, parameters)) {
       return aspect.build();
@@ -153,7 +153,7 @@
   @Override
   public AspectDefinition getDefinition(AspectParameters aspectParameters) {
     AspectDefinition.Builder result =
-        new AspectDefinition.Builder(getClass().getSimpleName())
+        new AspectDefinition.Builder(this)
             .attributeAspect("deps", this)
             .requiresConfigurationFragments(JavaConfiguration.class, ProtoConfiguration.class)
             .requireProvider(ProtoSourcesProvider.class)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AbstractJ2ObjcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AbstractJ2ObjcProtoAspect.java
index c4dabc6..a6a8a1e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AbstractJ2ObjcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AbstractJ2ObjcProtoAspect.java
@@ -82,7 +82,7 @@
 
   @Override
   public AspectDefinition getDefinition(AspectParameters aspectParameters) {
-    AspectDefinition.Builder builder = new AspectDefinition.Builder("J2ObjcProtoAspect")
+    AspectDefinition.Builder builder = new AspectDefinition.Builder(this)
         .requireProvider(ProtoSourcesProvider.class)
         .requiresConfigurationFragments(
             AppleConfiguration.class,
@@ -125,7 +125,7 @@
       ConfiguredTarget base, RuleContext ruleContext, AspectParameters parameters)
       throws InterruptedException {
     if (!checkShouldCreateAspect(ruleContext)) {
-      return new ConfiguredAspect.Builder(getName(), ruleContext).build();
+      return new ConfiguredAspect.Builder(this, parameters, ruleContext).build();
     }
 
     ProtoSourcesProvider protoSourcesProvider = base.getProvider(ProtoSourcesProvider.class);
@@ -195,7 +195,7 @@
     NestedSet<Artifact> j2ObjcTransitiveClassMappingFiles = j2ObjcTransitiveClassMappingFiles(
         ruleContext, classMappingFiles);
 
-    return new ConfiguredAspect.Builder(getName(), ruleContext)
+    return new ConfiguredAspect.Builder(this, parameters, ruleContext)
         .addProviders(
             new J2ObjcMappingFileProvider(
                 j2ObjcTransitiveHeaderMappingFiles,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 4653d1f..8679970 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -106,7 +106,7 @@
 
   @Override
   public AspectDefinition getDefinition(AspectParameters aspectParameters) {
-    return addAdditionalAttributes(new AspectDefinition.Builder("J2ObjCAspect"))
+    return addAdditionalAttributes(new AspectDefinition.Builder(this))
         .attributeAspect("deps", this, j2ObjcProtoAspect)
         .attributeAspect("exports", this, j2ObjcProtoAspect)
         .attributeAspect("runtime_deps", this, j2ObjcProtoAspect)
@@ -167,7 +167,7 @@
   public ConfiguredAspect create(
       ConfiguredTarget base, RuleContext ruleContext, AspectParameters parameters)
       throws InterruptedException {
-    ConfiguredAspect.Builder builder = new ConfiguredAspect.Builder(NAME, ruleContext);
+    ConfiguredAspect.Builder builder = new ConfiguredAspect.Builder(this, parameters, ruleContext);
     JavaCompilationArgsProvider compilationArgsProvider =
         base.getProvider(JavaCompilationArgsProvider.class);
     JavaSourceInfoProvider sourceInfoProvider =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
index 4184f70..fa959e1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
@@ -35,7 +35,7 @@
 
   @Override
   public AspectDefinition getDefinition(AspectParameters aspectParameters) {
-    return new AspectDefinition.Builder(NAME)
+    return new AspectDefinition.Builder(this)
         .attributeAspect("deps", this)
         .build();
   }
@@ -44,7 +44,8 @@
   public ConfiguredAspect create(
       ConfiguredTarget base, RuleContext ruleContext, AspectParameters parameters)
       throws InterruptedException {
-    ConfiguredAspect.Builder aspectBuilder = new ConfiguredAspect.Builder(NAME, ruleContext);
+    ConfiguredAspect.Builder aspectBuilder = new ConfiguredAspect.Builder(
+        this, parameters, ruleContext);
 
     ObjcProtoProvider.Builder aspectObjcProtoProvider = new ObjcProtoProvider.Builder();