{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":108402545,"defaultBranch":"main","name":"daffodil","ownerLogin":"stevedlawrence","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2017-10-26T11:30:02.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/3180601?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1725902704.0","currentOid":""},"activityList":{"items":[{"before":"9f79a3dda9458ed3b5c51745d2683757332a291a","after":"4e91106d97a8c78f612c2e9e2d2583824345c08b","ref":"refs/heads/daffodil-2916-include-no-namespace","pushedAt":"2024-09-09T18:35:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"fixup! Use targetNamespace when resolving global references without a namespace prefix or default namespace","shortMessageHtmlLink":"fixup! Use targetNamespace when resolving global references without a…"}},{"before":"6d362ddee37328eded2a722105a00a35017c968e","after":null,"ref":"refs/heads/daffodil-2918-reproducible-saved-processor","pushedAt":"2024-09-09T17:25:04.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"}},{"before":"ba5ba282229359cf5678beffa2539d31d1c3abdf","after":"6d362ddee37328eded2a722105a00a35017c968e","ref":"refs/heads/daffodil-2918-reproducible-saved-processor","pushedAt":"2024-09-09T17:02:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Remove absolute URI from SchemaFileLocation to improve reproducibility\n\nWhen we create a saved parser, the absolute URI of the schema context is\nstored in the ScemaFileLocation. This absolute URI is very likely to be\ndifferent if compiled on different machines or in different directories.\nThis makes verify reproducible saved processors difficult.\n\nTo fix this, this removes the URI from the SchemaFileLocation.\nSchemaFileLocation is only used for diagnostics so does not need the\nabsolute URI--diagnosticFile should be used for that. The URI is still\nstored in some objects where it is needed (e.g. import/include), but not\nin any places that are serialized when we created a saved parser.\n\nPrevious places that used the URI from SchemaFileLocation are modified\nto either get the URI from somewhere else (that isn't serialized) or use\ndiagnosticFile, which is depersonalized and allows for reproducible\nbuilds.\n\nTo verify correctness, this adds a CLI test that builds the same saved\nparser in two different randomly created directories and ensures they\nhave the same hash. Some CLI test utilities were updated to support\nthis, including the ability to specific a different working directory to\nrun the CLI command from. Note however that this tests is disabled due\nto differences sometimes caused by inconsistent JVM optimizations (see\nDAFFODIL-2925).\n\nDAFFODIL-2918","shortMessageHtmlLink":"Remove absolute URI from SchemaFileLocation to improve reproducibility"}},{"before":"c88c9cd372685506bb799f7015e82b173366b0ce","after":"ba5ba282229359cf5678beffa2539d31d1c3abdf","ref":"refs/heads/daffodil-2918-reproducible-saved-processor","pushedAt":"2024-09-09T16:36:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Remove absolute URI from SchemaFileLocation to improve reproducibility\n\nWhen we create a saved parser, the absolute URI of the schema context is\nstored in the ScemaFileLocation. This absolute URI is very likely to be\ndifferent if compiled on different machines or in different directories.\nThis makes verify reproducible saved processors difficult.\n\nTo fix this, this removes the URI from the SchemaFileLocation.\nSchemaFileLocation is only used for diagnostics so does not need the\nabsolute URI--diagnosticFile should be used for that. The URI is still\nstored in some objects where it is needed (e.g. import/include), but not\nin any places that are serialized when we created a saved parser.\n\nPrevious places that used the URI from SchemaFileLocation are modified\nto either get the URI from somewhere else (that isn't serialized) or use\ndiagnosticFile, which is depersonalized and allows for reproducible\nbuilds.\n\nTo verify correctness, this adds a CLI test that builds the same saved\nparser in two different randomly created directories and ensures they\nhave the same hash. Some CLI test utilities were updated to support\nthis, including the ability to specific a different working directory to\nrun the CLI command from. Note however that this tests is disabled due\nto differences sometimes caused by inconsistent JVM optimizations (see\nDAFFODIL-2925).\n\nDAFFODIL-2918","shortMessageHtmlLink":"Remove absolute URI from SchemaFileLocation to improve reproducibility"}},{"before":"dcbe80d6759e7ece35a33d81bb168019a272f158","after":"c88c9cd372685506bb799f7015e82b173366b0ce","ref":"refs/heads/daffodil-2918-reproducible-saved-processor","pushedAt":"2024-09-09T16:22:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Remove absolute URI from SchemaFileLocation to improve reproducibility\n\nWhen we create a saved parser, the absolute URI of the schema context is\nstored in the ScemaFileLocation. This absolute URI is very likely to be\ndifferent if compiled on different machines or in different directories.\nThis makes verify reproducible saved processors difficult.\n\nTo fix this, this removes the URI from the SchemaFileLocation.\nSchemaFileLocation is only used for diagnostics so does not need the\nabsolute URI--diagnosticFile should be used for that. The URI is still\nstored in some objects where it is needed (e.g. import/include), but not\nin any places that are serialized when we created a saved parser.\n\nPrevious places that used the URI from SchemaFileLocation are modified\nto either get the URI from somewhere else (that isn't serialized) or use\ndiagnosticFile, which is depersonalized and allows for reproducible\nbuilds.\n\nTo verify correctness, this adds a CLI test that builds the same saved\nparser in two different randomly created directories and ensures they\nhave the same hash. Some CLI test utilities were updated to support\nthis, including the ability to specific a different working directory to\nrun the CLI command from. Note however that this tests is disabled due\nto differences sometimes caused by inconsistent JVM optimizations (see\nDAFFODIL-2925).\n\nDAFFODIL-2918","shortMessageHtmlLink":"Remove absolute URI from SchemaFileLocation to improve reproducibility"}},{"before":"13e1f0e25cc5f81ad82a9c6ab5cd34d79e27c495","after":null,"ref":"refs/heads/daffodil-XXX-reproduce-CI","pushedAt":"2024-09-09T16:13:41.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"}},{"before":null,"after":"a2d98759ce2743ddd66823ef3f448cbed973acd3","ref":"refs/heads/daffodil-2888-length-facet-out-of-range-warning","pushedAt":"2024-09-06T19:21:11.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Fix check for explicit length within length facet range\n\nWhen we check if an explicit dfdl:length is within range of the\nminLength/maxLength/length facets, we do not take into account units or\ncharacter encoding, which can lead to incorrect and confusing warnings.\n\nThis modifies the check to use the existing LengthInBitsEv to calculate\nthe length in bits of an element (which uses lengthUnits), and uses\nCharsetEv for string types to correctly convert the explicit bit length\nto infoset length, where possible\n\nDAFFODIL-2888","shortMessageHtmlLink":"Fix check for explicit length within length facet range"}},{"before":null,"after":"9f79a3dda9458ed3b5c51745d2683757332a291a","ref":"refs/heads/daffodil-2916-include-no-namespace","pushedAt":"2024-09-05T16:54:50.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Use targetNamespace when resolving global references without a namespace prefix or default namespace\n\nWhen resolving global references (e.g. global element declaration,\ncomplex types, DFDL variables, DFDL formats), if the QName does not have\na prefix then we currently use the default namespace (i.e. xmlns=\"...\")\nwhen resolving the reference. And if the schema does not define a\ndefault namespace then we just assume NoNamespace.\n\nThis works fine except when a schema with a targetNamespace includes a\nschema with no targetNamespace and default namespace. In that case,\nresolving global references in the included schema must use the\ntargetNamespace of the including schema because all the global\ncomponents have been chameleoned into a different namespace.\n\nTo fix this, we now pass around targetNamespace to a number of places\nwhere resolving a global reference might be done (which is a lot of\nplaces), and use that targetNamespace when resolving a QName without a\nprefix and no default namespace.\n\nNote that the logic to resolve defineFormat references already did\nsomething similar using its custom \"adjustNamespace\" logic. This is\nremoved so all global references use the same logic when resolving\nreferences--no post-resolution adjustment is needed.\n\nA number of functions were refactored a bit to make the logic and style\nmore consistent, making it easier to see where logic differed. Some\nunused functions were discovered and removed.\n\nDAFFODIL-2916","shortMessageHtmlLink":"Use targetNamespace when resolving global references without a namesp…"}},{"before":"e7daed897d7a286a50a6c69d85732218bf00041a","after":"13e1f0e25cc5f81ad82a9c6ab5cd34d79e27c495","ref":"refs/heads/daffodil-XXX-reproduce-CI","pushedAt":"2024-08-30T11:53:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"NOPUSH\n\nDAFFODIL-XXX","shortMessageHtmlLink":"NOPUSH"}},{"before":"6dc55b05ffe3f7311a9ab0668986ee10a118e191","after":"e7daed897d7a286a50a6c69d85732218bf00041a","ref":"refs/heads/daffodil-XXX-reproduce-CI","pushedAt":"2024-08-30T03:53:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"NOPUSH\n\nDAFFODIL-XXX","shortMessageHtmlLink":"NOPUSH"}},{"before":"e6d84c977f0146a0222c31fa1ca66772a10a4a80","after":"6dc55b05ffe3f7311a9ab0668986ee10a118e191","ref":"refs/heads/daffodil-XXX-reproduce-CI","pushedAt":"2024-08-30T03:11:29.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"NOPUSH\n\nDAFFODIL-XXX","shortMessageHtmlLink":"NOPUSH"}},{"before":"8dfbf114028514b5b03c35f69413d6d2afc741ff","after":"e6d84c977f0146a0222c31fa1ca66772a10a4a80","ref":"refs/heads/daffodil-XXX-reproduce-CI","pushedAt":"2024-08-29T23:36:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"NOPUSH\n\nDAFFODIL-XXX","shortMessageHtmlLink":"NOPUSH"}},{"before":"a5e6222a3769e920050ba0a9d4fab3b7217467c5","after":"8dfbf114028514b5b03c35f69413d6d2afc741ff","ref":"refs/heads/daffodil-XXX-reproduce-CI","pushedAt":"2024-08-29T23:35:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"NOPUSH\n\nDAFFODIL-XXX","shortMessageHtmlLink":"NOPUSH"}},{"before":"f133070c2822adfa8af363d710b90744bca39a12","after":"a5e6222a3769e920050ba0a9d4fab3b7217467c5","ref":"refs/heads/daffodil-XXX-reproduce-CI","pushedAt":"2024-08-29T22:43:45.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"NOPUSH\n\nDAFFODIL-2918","shortMessageHtmlLink":"NOPUSH"}},{"before":"188ec64edaa1789cc4330dccd2527968b5da477f","after":"f133070c2822adfa8af363d710b90744bca39a12","ref":"refs/heads/daffodil-XXX-reproduce-CI","pushedAt":"2024-08-29T22:37:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"NOPUSH\n\nDAFFODIL-2918","shortMessageHtmlLink":"NOPUSH"}},{"before":null,"after":"188ec64edaa1789cc4330dccd2527968b5da477f","ref":"refs/heads/daffodil-XXX-reproduce-CI","pushedAt":"2024-08-29T22:33:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"NOPUSH\n\nDAFFODIL-2918","shortMessageHtmlLink":"NOPUSH"}},{"before":"dfb7fb0a8cb7ccdd4c919466326d04035495a245","after":"dcbe80d6759e7ece35a33d81bb168019a272f158","ref":"refs/heads/daffodil-2918-reproducible-saved-processor","pushedAt":"2024-08-29T17:52:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Remove absolute URI from SchemaFileLocation to improve reproducibility\n\nWhen we create a saved parser, the absolute URI of the schema context is\nstored in the ScemaFileLocation. This absolute URI is very likely to be\ndifferent if compiled on different machines or in different directories.\nThis makes verify reproducible saved processors difficult.\n\nTo fix this, this removes the URI from the SchemaFileLocation.\nSchemaFileLocation is only used for diagnostics so does not need the\nabsolute URI--diagnosticFile should be used for that. The URI is still\nstored in some objects where it is needed (e.g. import/include), but not\nin any places that are serialized when we created a saved parser.\n\nPrevious places that used the URI from SchemaFileLocation are modified\nto either get the URI from somewhere else (that isn't serialized) or use\ndiagnosticFile, which is depersonalized and allows for reproducible\nbuilds.\n\nTo verify correctness, this adds a CLI test that builds the same saved\nparser in two different randomly created directories and ensures they\nhave the same hash. Some CLI test utilities were updated to support\nthis, including the ability to specific a different working directory to\nrun the CLI command from.\n\nDAFFODIL-2918","shortMessageHtmlLink":"Remove absolute URI from SchemaFileLocation to improve reproducibility"}},{"before":"161afeca4f2ee94af7adf71b51bb93cb4c37ae3a","after":"dfb7fb0a8cb7ccdd4c919466326d04035495a245","ref":"refs/heads/daffodil-2918-reproducible-saved-processor","pushedAt":"2024-08-29T15:07:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"fixup! Remove absolute URI from SchemaFileLocation to improve reproducibility","shortMessageHtmlLink":"fixup! Remove absolute URI from SchemaFileLocation to improve reprodu…"}},{"before":null,"after":"161afeca4f2ee94af7adf71b51bb93cb4c37ae3a","ref":"refs/heads/daffodil-2918-reproducible-saved-processor","pushedAt":"2024-08-28T16:27:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Remove absolute URI from SchemaFileLocation to improve reproducibility\n\nWhen we create a saved parser, the absolute URI of the schema context is\nstored in the ScemaFileLocation. This absolute URI is very likely to be\ndifferent if compiled on different machines or in different directories.\nThis makes verify reproducible saved processors difficult.\n\nTo fix this, this removes the URI from the SchemaFileLocation.\nSchemaFileLocation is only used for diagnostics so does not need the\nabsolute URI--diagnosticFile should be used for that. The URI is still\nstored in some objects where it is needed (e.g. import/include), but not\nin any places that are serialized when we created a saved parser.\n\nPrevious places that used the URI from SchemaFileLocation are modified\nto either get the URI from somewhere else (that isn't serialized) or use\ndiagnosticFile, which is depersonalized and allows for reproducible\nbuilds.\n\nTo verify correctness, this adds a CLI test that builds the same saved\nparser in two different randomly created directories and ensures they\nhave the same hash. Some CLI test utilities were updated to support\nthis, including the ability to specific a different working directory to\nrun the CLI command from.\n\nDAFFODIL-2918","shortMessageHtmlLink":"Remove absolute URI from SchemaFileLocation to improve reproducibility"}},{"before":"d97c155d87c7c89f45da95f8f33668f9be66f961","after":null,"ref":"refs/heads/daffodil-2919-compile-resource-api","pushedAt":"2024-08-28T11:39:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"}},{"before":"eeea03bdae722b40c0d5d6eac4a4a158369cb5d8","after":null,"ref":"refs/heads/daffodil-2915-reload-missing-plugin","pushedAt":"2024-08-27T21:32:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"}},{"before":"e887251e971a890542e8aa687648a0b4686ec51c","after":"d97c155d87c7c89f45da95f8f33668f9be66f961","ref":"refs/heads/daffodil-2919-compile-resource-api","pushedAt":"2024-08-27T19:31:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Add compileResource API method\n\nSome API users want to find a DFDL schema resource on the classpath\n(e.g. by using Class.getResource). However, this results in an absolute\nURI which when passed to compileSource cannot be depersonalized in some\ncases and leads to verbose diagnostic paths. This is also one issue that\nprevents reproducible saved parsers since these absolute paths are\nincluded in the saved parser and are specific to the build environment.\n\nTo fix this, this adds a new compileResource API function that accepts a\nresource path. This new API calls getResource instead of the user having\nto call it, and it creates a URISchemaSource with the resulting URI and\ndiagnostic path context set to the resource path. This allows the\ndiagnostic paths to be depersonalized and is one step towards\nreproducible saved parsers.\n\nDAFFODIL-2919","shortMessageHtmlLink":"Add compileResource API method"}},{"before":"51af1d0b343e609e803554e9af0ab878beb94e07","after":"eeea03bdae722b40c0d5d6eac4a4a158369cb5d8","ref":"refs/heads/daffodil-2915-reload-missing-plugin","pushedAt":"2024-08-27T19:30:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Improve reload diagnosics when a character set plugin is missing\n\nCurrently, reloading a saved parser when a neccessary character set\nplugin is not on the classpath results in an exception with a very\nhelpful message that has nothing to do with character sets or plugins,\nfor example:\n\n java.lang.ClassCastException: cannot assign instance of\n scala.collection.immutable.List$SerializationProxy to field\n org.apache.daffodil.runtime1.processors.ModelGroupRuntimeData.groupMembers\n of type scala.collection.Seq in instance of\n org.apache.daffodil.runtime1.processors.SequenceRuntimeData\n\nThis is a known issue with scala and its use of proxy when serializing\ndata structures like Lists and Maps.\n\nTo fix the exception and improve diagnostics, this uses writeReplace to\nserialize a BitsCharset as a BitsCharsetSerializationProxy with\ninformation about the needed BitsCharset. This proxy implements\nreadResolve to look up the BitsCharset from the bits charset registry\nand restore the original BitsChraset. If not found in the registry, then\nwe throw an helpful exception that bubbles up to the reload function and\nwe can output a helpful diagnostic. Now we get something like:\n\n [error] The saved parser was created with a different set of\n dependencies containing a class no longer on the classpath: Charset\n plugin com.example.MyCustomCharset for X-DFDL-MY-CUSTOM-CHARSET\n\nAdd an integraion test to make sure this errors with a reasonable\ndiagnostic, which require splitting a schema file into valid and invalid\nparts so we can reuse it with the CLI.\n\nAdd tests for reloading UDFs and layers without a correct classpath.\nUDF's work as is. For layers we just need to catch SDE exception when\nreloading.\n\nDAFFODIL-2915","shortMessageHtmlLink":"Improve reload diagnosics when a character set plugin is missing"}},{"before":"a655e1ca4840f8342018b412050cef7659dad070","after":"e887251e971a890542e8aa687648a0b4686ec51c","ref":"refs/heads/daffodil-2919-compile-resource-api","pushedAt":"2024-08-27T17:08:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"fixup! fixup! Add compileResource API method","shortMessageHtmlLink":"fixup! fixup! Add compileResource API method"}},{"before":"a2ad165206fb33ed5e39fd4ea8e26450c1129620","after":"a655e1ca4840f8342018b412050cef7659dad070","ref":"refs/heads/daffodil-2919-compile-resource-api","pushedAt":"2024-08-27T16:59:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"fixup! Add compileResource API method","shortMessageHtmlLink":"fixup! Add compileResource API method"}},{"before":null,"after":"a2ad165206fb33ed5e39fd4ea8e26450c1129620","ref":"refs/heads/daffodil-2919-compile-resource-api","pushedAt":"2024-08-27T16:33:32.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Add compileResource API method\n\nSome API users want to find a DFDL schema resource on the classpath\n(e.g. by using Class.getResource). However, this results in an absolute\nURI which when passed to compileSource cannot be depersonalized in some\ncases and leads to verbose diagnostic paths. This is also one issue that\nprevents reproducible saved parsers since these absolute paths are\nincluded in the saved parser and are specific to the build environment.\n\nTo fix this, this adds a new compileResource API function that accepts a\nresource path. This new API calls getResource instead of the user having\nto call it, and it creates a URISchemaSource with the resulting URI and\ndiagnostic path context set to the resource path. This allows the\ndiagnostic paths to be depersonalized and is one step towards\nreproducible saved parsers.\n\nDAFFODIL-2919","shortMessageHtmlLink":"Add compileResource API method"}},{"before":"88907389b396d0673306b016297847d9c157a496","after":"51af1d0b343e609e803554e9af0ab878beb94e07","ref":"refs/heads/daffodil-2915-reload-missing-plugin","pushedAt":"2024-08-23T14:34:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"squash! Improve reload diagnosics when a character set plugin is missing\n\n- Add tests for reloading UDFs and layers without a correct classpath.\n UDF's work as is. For layers we just need to catch SDE exception when\n reloading.","shortMessageHtmlLink":"squash! Improve reload diagnosics when a character set plugin is missing"}},{"before":"8ca4f65571f7093048a4576c9a30213e71bb73e3","after":"88907389b396d0673306b016297847d9c157a496","ref":"refs/heads/daffodil-2915-reload-missing-plugin","pushedAt":"2024-08-22T20:05:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Improve reload diagnosics when a character set plugin is missing\n\nCurrently, reloading a saved parser when a neccessary character set\nplugin is not on the classpath results in an exception with a very\nhelpful message that has nothing to do with character sets or plugins,\nfor example:\n\n java.lang.ClassCastException: cannot assign instance of\n scala.collection.immutable.List$SerializationProxy to field\n org.apache.daffodil.runtime1.processors.ModelGroupRuntimeData.groupMembers\n of type scala.collection.Seq in instance of\n org.apache.daffodil.runtime1.processors.SequenceRuntimeData\n\nThis is a known issue with scala and its use of proxy when serializing\ndata structures like Lists and Maps.\n\nTo fix the exception and improve diagnostics, this uses writeReplace to\nserialize a BitsCharset as a BitsCharsetSerializationProxy with\ninformation about the needed BitsCharset. This proxy implements\nreadResolve to look up the BitsCharset from the bits charset registry\nand restore the original BitsChraset. If not found in the registry, then\nwe throw an helpful exception that bubbles up to the reload function and\nwe can output a helpful diagnostic. Now we get something like:\n\n [error] The saved parser was created with a different set of\n dependencies containing a class no longer on the classpath: Charset\n plugin com.example.MyCustomCharset for X-DFDL-MY-CUSTOM-CHARSET\n\nAdd an integraion test to make sure this errors with a reasonable\ndiagnostic, which require splitting a schema file into valid and invalid\nparts so we can reuse it with the CLI.\n\nDAFFODIL-2915","shortMessageHtmlLink":"Improve reload diagnosics when a character set plugin is missing"}},{"before":"7d3c106e92653602726fcdaa9c93cf1de192e0b6","after":"8ca4f65571f7093048a4576c9a30213e71bb73e3","ref":"refs/heads/daffodil-2915-reload-missing-plugin","pushedAt":"2024-08-22T19:43:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Improve reload diagnosics when a character set plugin is missing\n\nCurrently, reloading a saved parser when a neccessary character set\nplugin is not on the classpath results in an exception with a very\nhelpful message that has nothing to do with character sets or plugins,\nfor example:\n\n java.lang.ClassCastException: cannot assign instance of\n scala.collection.immutable.List$SerializationProxy to field\n org.apache.daffodil.runtime1.processors.ModelGroupRuntimeData.groupMembers\n of type scala.collection.Seq in instance of\n org.apache.daffodil.runtime1.processors.SequenceRuntimeData\n\nThis is a known issue with scala and its use of proxy when serializing\ndata structures like Lists and Maps.\n\nTo fix the exception and improve diagnostics, this uses writeReplace to\nserialize a BitsCharset as a BitsCharsetSerializationProxy with\ninformation about the needed BitsCharset. This proxy implements\nreadResolve to look up the BitsCharset from the bits charset registry\nand restore the original BitsChraset. If not found in the registry, then\nwe throw an helpful exception that bubbles up to the reload function and\nwe can output a helpful diagnostic. Now we get something like:\n\n [error] The saved parser was created with a different set of\n dependencies containing a class no longer on the classpath: Charset\n plugin com.example.MyCustomCharset for X-DFDL-MY-CUSTOM-CHARSET\n\nAdd an integraion test to make sure this errors with a reasonable\ndiagnostic, which require splitting a schema file into valid and invalid\nparts so we can reuse it with the CLI.\n\nDAFFODIL-2915","shortMessageHtmlLink":"Improve reload diagnosics when a character set plugin is missing"}},{"before":null,"after":"7d3c106e92653602726fcdaa9c93cf1de192e0b6","ref":"refs/heads/daffodil-2915-reload-missing-plugin","pushedAt":"2024-08-22T19:35:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"stevedlawrence","name":"Steve Lawrence","path":"/stevedlawrence","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3180601?s=80&v=4"},"commit":{"message":"Improve reload diagnosics when a character set plugin is missing\n\nCurrently, reloading a saved parser when a neccessary character set\nplugin is not on the classpath results in an exception with a very\nhelpful message that has nothing to do with character sets or plugins,\nfor example:\n\n java.lang.ClassCastException: cannot assign instance of\n scala.collection.immutable.List$SerializationProxy to field\n org.apache.daffodil.runtime1.processors.ModelGroupRuntimeData.groupMembers\n of type scala.collection.Seq in instance of\n org.apache.daffodil.runtime1.processors.SequenceRuntimeData\n\nThis is a known issue with scala and its use of proxy when serializing\ndata structures like Lists and Maps.\n\nTo fix the exception and improve diagnostics, this uses writeReplace to\nserialize a BitsCharset as a BitsCharsetSerializationProxy with\ninformation about the needed BitsCharset. This proxy implements\nreadResolve to look up the BitsCharset from the bits charset registry\nand restore the original BitsChraset. If not found in the registry, then\nwe throw an helpful exception that bubbles up to the reload function and\nwe can output a helpful diagnostic. Now we get something like:\n\n [error] The saved parser was created with a different set of\n dependencies containing a class no longer on the classpath: Charset\n plugin com.example.MyCustomCharset for X-DFDL-MY-CUSTOM-CHARSET\n\nAdd an integraion test to make sure this errors with a reasonable\ndiagnostic, which require splitting a schema file into valid and invalid\nparts so we can reuse it with the CLI.\n\nDAFFODIL-2915","shortMessageHtmlLink":"Improve reload diagnosics when a character set plugin is missing"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wOVQxODozNTo0My4wMDAwMDBazwAAAASxPTPd","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wOVQxODozNTo0My4wMDAwMDBazwAAAASxPTPd","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yMlQxOTozNTowNy4wMDAwMDBazwAAAAShqKDC"}},"title":"Activity · stevedlawrence/daffodil"}