)]}'
{
  "commit": "654717f6f2e9e626b60debc657d3a8723f057b97",
  "tree": "007f6f91cf0c67098be1900cc97550c5c7d912f0",
  "parents": [
    "83514648f2e4e63dcd039e976f3b5d47552e0383"
  ],
  "author": {
    "name": "Dmitry Lomov",
    "email": "dslomov@google.com",
    "time": "Thu Mar 02 14:39:52 2017 +0000"
  },
  "committer": {
    "name": "Yue Gan",
    "email": "yueg@google.com",
    "time": "Fri Mar 03 10:35:22 2017 +0000"
  },
  "message": "Refactor implementation of native and Skylark declared providers.\n\n1) Instead of having a single class for both, split them into\n   {Skylark,Native}ClassObjectConstructors\n2) Allow NativeClassObjectConstructors to customize their instantiation\n   logic.\n3) Prepare ClassObjectConstructor.Key to be serializable.\n\n--\nPiperOrigin-RevId: 148997553\nMOS_MIGRATED_REVID\u003d148997553\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b2c20e64eba2e20c25780d9fb7a537903df984f0",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java",
      "new_id": "d32b279b49c68a83ff5f3f637baccefe409b88be",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java"
    },
    {
      "type": "modify",
      "old_id": "b9cae02f0bb305bc4313e728e19d3731e703318e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/ActionsProvider.java",
      "new_id": "f34bc310d2f495d440745b436ffd6d77e6ef1410",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/ActionsProvider.java"
    },
    {
      "type": "modify",
      "old_id": "1abc8934e4a79819e75c408f9d4c74260fddb93c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java",
      "new_id": "01004d1a3c39681a4b773c689dbcf57a4577f109",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java"
    },
    {
      "type": "modify",
      "old_id": "f1dc77d2cd35cd0efeb0490b5159d95d6bbe8075",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java",
      "new_id": "8578e765e799b10681b541ce9673183e6572c864",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java"
    },
    {
      "type": "modify",
      "old_id": "4a345f109f74536f018318c85af14306c5904f2c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/EnvironmentGroupConfiguredTarget.java",
      "new_id": "5d3ca37b32d24869be694ad7008ad3fb8cafe2bf",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/EnvironmentGroupConfiguredTarget.java"
    },
    {
      "type": "modify",
      "old_id": "3009d1dfecc4cb9255892f139c2134a3a744eb03",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java",
      "new_id": "0bc9b5342b9cbcfe240854c61f1bd3486cf790de",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java"
    },
    {
      "type": "modify",
      "old_id": "c8462980f7f58d49d933019d2390289f381450e8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/MergedConfiguredTarget.java",
      "new_id": "6240bf8ae0387435584ac66ebf1b90be632ba7d1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/MergedConfiguredTarget.java"
    },
    {
      "type": "modify",
      "old_id": "343e69878f6026c3e1355f310d0f9ea75f204fe0",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java",
      "new_id": "7a3a33a7d9f14456d1b2aeead880c890ebb81c7a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java"
    },
    {
      "type": "modify",
      "old_id": "094b10f9cbbe3dcde260bbc6f27ad585e2595250",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java",
      "new_id": "4a14b13e7f680c63b7959d62e3eed0cf8b03d298",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java"
    },
    {
      "type": "modify",
      "old_id": "61b8109160ae88497c40f13b5babfffb1d2c8e9b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java",
      "new_id": "fd5bca0873864d498184ef4425ce995c7cbec877",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java"
    },
    {
      "type": "modify",
      "old_id": "76f6aa2f56c87e2b370685affcca376b1feb6818",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java",
      "new_id": "ca00f10ebbadc4467f01c233bc133e55b7619d93",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java"
    },
    {
      "type": "modify",
      "old_id": "e8fe2d581cf915a5e2e33d8df0a00f58f4f67c36",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviders.java",
      "new_id": "be75e14d944ed24ed3bb4420ca02728a1eaa104a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviders.java"
    },
    {
      "type": "modify",
      "old_id": "58eee47a70f0e803ff0e94c53df8addb8a278216",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java",
      "new_id": "03f9d955c8866692cbaedf311e7531c99013ffca",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java"
    },
    {
      "type": "modify",
      "old_id": "97a8f593689fe714314bcbe0419d4c2d82f6ebd5",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java",
      "new_id": "60f23eb627d1e06c0cd05213420c98b79f6bb1d1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java"
    },
    {
      "type": "modify",
      "old_id": "f5e9b95eb9506f2e37a04277eaa57db44d400561",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/Attribute.java",
      "new_id": "9077e0fb4e610c8a2d1d6c73be2a16f2248a634b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/Attribute.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e2e0ccf7b07254869863e99c4d07c0c8caacfeaf",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/ClassObjectConstructor.java"
    },
    {
      "type": "modify",
      "old_id": "a2f0b6e4f6855c939943a8c8f4bcd1da55983f3c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java",
      "new_id": "efb6b08f60307643706aa924952033224b978438",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/ImplicitOutputsFunction.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "011bf3bcfefaa358b07cf85734110cb398680786",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/NativeClassObjectConstructor.java"
    },
    {
      "type": "modify",
      "old_id": "1dc58df5111b54ed588f3f0986519ffc0dbfd800",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java",
      "new_id": "16df4e0b51422d2272d51cded9ec84598741ce90",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java"
    },
    {
      "type": "modify",
      "old_id": "6946ea30f9e1cba34b50531e888f2daaeb06392f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkClassObject.java",
      "new_id": "1b67b131752090ade069da6edb0aeb50391ec75e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkClassObject.java"
    },
    {
      "type": "modify",
      "old_id": "907702a27e64cef7d222459bf3a0bfda03f9bf8b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkClassObjectConstructor.java",
      "new_id": "9a6605de5ffdc650aaa10e3572f5aaabdcde642b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkClassObjectConstructor.java"
    },
    {
      "type": "modify",
      "old_id": "f34dffd6955c5de1200e9f9aacd89018bb1de252",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkProviderIdentifier.java",
      "new_id": "42684f7f34afb505e59a137a3636acd4345ced8a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/SkylarkProviderIdentifier.java"
    },
    {
      "type": "modify",
      "old_id": "d2b872adad3be1ae10a7f66399b837ea997ca1df",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java",
      "new_id": "abe66c67bbdfa05a1b82d601ce082ce85f508c40",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java"
    },
    {
      "type": "modify",
      "old_id": "458fba16d1b3773d758613b03b3a98e2b6bec276",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java",
      "new_id": "7be13d2dda01d13dafbbdc16efa7f4e760ee6f21",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java"
    },
    {
      "type": "modify",
      "old_id": "5a01e6fd88d764712218d973fa04786bd4b469b9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java",
      "new_id": "1f714240482ac398a708262dc2a811d0107acdbe",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java"
    },
    {
      "type": "modify",
      "old_id": "f78e96d731b4d8afb6c9b67300322b8984fbe2ba",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java",
      "new_id": "3bf2cdc9dfeb906ce6ad3c2520df5b68250a6ede",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java"
    },
    {
      "type": "modify",
      "old_id": "def045239b48fc7cabc9df436f981f6a338f3c2d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java",
      "new_id": "9f3aa43e5f6c238c292ae49051ac8d0e07acbd68",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java"
    },
    {
      "type": "modify",
      "old_id": "a76594c8ca485511abdeddbed2ee95ba2b0e84be",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java",
      "new_id": "f5e2bc43a0789598afdeee0d51d1ffecb21e0c96",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/apple/Platform.java"
    },
    {
      "type": "modify",
      "old_id": "03afc08fd5bc467bbbe518f431bc8d526de0777b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java",
      "new_id": "e52726f454b92eda1b6589f59b2f942abc62cffa",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java"
    },
    {
      "type": "modify",
      "old_id": "2734acf9c913b00ee9a86affa97746ea440a330f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java",
      "new_id": "0f103b7eb6d41fe46f96a2f97560b56cb4353a6b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java"
    },
    {
      "type": "modify",
      "old_id": "d4b2b997b3c84e4ea706910e87ca64038c21e892",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java",
      "new_id": "73ba8759b39bfef7dcb980ff05e9a148c6c86bd2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java"
    },
    {
      "type": "modify",
      "old_id": "20f88f9abb891019d117bc1ff09f44c94d4657d6",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java",
      "new_id": "c7b413437cdce915f63db4c06c5855f348be63ac",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java"
    },
    {
      "type": "modify",
      "old_id": "d80c3238c43dad63d33ed8efcaa8e8f1f66cee3e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java",
      "new_id": "b25c61630b8c25a0099cee4e57d457243b19cc10",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java"
    },
    {
      "type": "modify",
      "old_id": "b0f494df17a1f2e4fed592bd4f4da36f06edad72",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java",
      "new_id": "76e04d684fb5eba33ea0aed4181082aa5144c95f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java"
    },
    {
      "type": "modify",
      "old_id": "501074f8cd5184d3499664a2d32d3f9905d5b2dd",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java",
      "new_id": "24002a47367762067c920d6ca8e64fabd0f3fc48",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java"
    },
    {
      "type": "modify",
      "old_id": "ce7d2d454cd29e7f7016648f3f0a1ddecf1ecd2f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java",
      "new_id": "f271b7361754a624607c1918addaad368d3b82ae",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java"
    },
    {
      "type": "modify",
      "old_id": "03317d1ef78a0e36636db4321aa7f67100149532",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java",
      "new_id": "fd9b10bbf032db628f4dd7d513b6c02880f1870f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/AppleSkylarkCommon.java"
    },
    {
      "type": "modify",
      "old_id": "810f071804b074a6032f7c03c49e5881f2d5321e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java",
      "new_id": "79e62b8064f521055504d97ad379a0265fce8092",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java"
    },
    {
      "type": "modify",
      "old_id": "c16a1052e6e5971a7b975ab80b48283b0252caac",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java",
      "new_id": "a028b0936d05189ec6b59af381f80d1fb79852c8",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java"
    },
    {
      "type": "modify",
      "old_id": "ee8a37c35f78c0dfa8a84a6d9eec725cf62c7292",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java",
      "new_id": "46665908eecca024148d92c2617397d5b03eb28e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProviderSkylarkConverters.java"
    },
    {
      "type": "modify",
      "old_id": "3a9656d244d93926bd839f4df211cc5bb46c8fea",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java",
      "new_id": "38219406c173dfd5af423751ccc0d077e8d70919",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java"
    },
    {
      "type": "modify",
      "old_id": "f5875fa48c2714246d6e0efe2dc2358facdd90c4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java",
      "new_id": "a34388381648c3b5e4c68871aa076616a094cac2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java"
    },
    {
      "type": "modify",
      "old_id": "37639c6ce2befad70d309a008c684764b036efb1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java",
      "new_id": "5567f2719a76f26be3cb046d5784a4689d66a131",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java"
    },
    {
      "type": "modify",
      "old_id": "9c81c0c6a477f9e1d32800d7ecb5d811661430bc",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java",
      "new_id": "e2b5fc8510bc019ce4d296d44447e0e57adb42a1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java"
    },
    {
      "type": "modify",
      "old_id": "bf366466ab56d1f9407f4762680af8bc35c0eeba",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java",
      "new_id": "14f783e91539046457603698842597a4ff0ffc02",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkIntegrationTest.java"
    },
    {
      "type": "modify",
      "old_id": "9067b899525f5bd8d8101c73911c4cd654791465",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java",
      "new_id": "2966fc8fd7087d6d64dad0ebc1e54da48b1c0575",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java"
    },
    {
      "type": "modify",
      "old_id": "36bdd8d6968f764abf00a9704cc9f8ebf7c8f1e5",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java",
      "new_id": "343e03cac51184949fe1e67cdf7cfad075d53ae2",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java"
    },
    {
      "type": "modify",
      "old_id": "e0b48b8e4b86979833808e174bf4dbd19f5b29ed",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java",
      "new_id": "e5f669e587a486f9fe541bcc958a2ab91451d311",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java"
    }
  ]
}
