{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":1148753,"defaultBranch":"main","name":"spring-framework","ownerLogin":"spring-projects","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2010-12-08T04:04:45.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/317776?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715853696.0","currentOid":""},"activityList":{"items":[{"before":"991be14847cb5448aca94b555266ae2a5ce2b8d7","after":"4d4b343815c013caa1452b2b9bf27a71031e66b1","ref":"refs/heads/main","pushedAt":"2024-05-20T15:22:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"bclozel","name":"Brian Clozel","path":"/bclozel","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/103264?s=80&v=4"},"commit":{"message":"Support Content Negotiation with @ExceptionHandler\n\nPrior to this commit, `@ExceptionHandler` annotated controller methods\ncould be mapped using the exception type declaration as an annotation\nattribute, or as a method parameter.\nWhile such methods support a wide variety of method arguments and return\ntypes, it was not possible to declare the same exception type on\ndifferent methods (in the same controller/controller advice).\n\nThis commit adds a new `produces` attribute on `@ExceptionHandler`; with\nthat, applications can vary the HTTP response depending on the exception\ntype and the requested content-type by the client:\n\n```\n@ExceptionHandler(produces = \"application/json\")\npublic ResponseEntity handleJson(IllegalArgumentException exc) {\n\treturn ResponseEntity.badRequest().body(new ErrorMessage(exc.getMessage(), 42));\n}\n\n@ExceptionHandler(produces = \"text/html\")\npublic String handle(IllegalArgumentException exc, Model model) {\n\tmodel.addAttribute(\"error\", new ErrorMessage(exc.getMessage(), 42));\n\treturn \"errorView\";\n}\n```\n\nThis commit implements support in both Spring MVC and Spring WebFlux.\n\nCloses gh-31936","shortMessageHtmlLink":"Support Content Negotiation with @ExceptionHandler"}},{"before":"97e12bd0e84a4f5bc5689609cc8d5dfddeba3cce","after":"a0f07af375fa817898dcc76a266cc7f1f0b07428","ref":"refs/heads/6.0.x","pushedAt":"2024-05-20T12:04:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Avoid reader on empty content to be shared by multiple requests\n\nThis commit avoids several instances of MockHttpServletRequest to\nhave a common reader for empty content as closing it will have an\nunwanted side effect on the others.\n\nCloses gh-32848","shortMessageHtmlLink":"Avoid reader on empty content to be shared by multiple requests"}},{"before":"2a2ef443a53b891691ff533f327be2e013861bc4","after":"481d036f7a3e750d95aa87c44ea4f76839c1091e","ref":"refs/heads/6.1.x","pushedAt":"2024-05-20T11:58:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Avoid reader on empty content to be shared by multiple requests\n\nThis commit avoids several instances of MockHttpServletRequest to\nhave a common reader for empty content as closing it will have an\nunwanted side effect on the others.\n\nCloses gh-32820","shortMessageHtmlLink":"Avoid reader on empty content to be shared by multiple requests"}},{"before":"99adc58ee33014a152668070a591d57995281cda","after":"991be14847cb5448aca94b555266ae2a5ce2b8d7","ref":"refs/heads/main","pushedAt":"2024-05-20T11:58:52.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Merge branch '6.1.x'","shortMessageHtmlLink":"Merge branch '6.1.x'"}},{"before":"4bbfd4c5e7990244ac5fabccddfea17588eb39ec","after":"99adc58ee33014a152668070a591d57995281cda","ref":"refs/heads/main","pushedAt":"2024-05-20T11:58:16.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Merge branch '6.1.x'","shortMessageHtmlLink":"Merge branch '6.1.x'"}},{"before":"268043a28c5f8b19d78298565e82efccb525dedc","after":"4bbfd4c5e7990244ac5fabccddfea17588eb39ec","ref":"refs/heads/main","pushedAt":"2024-05-20T09:19:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"snicoll","name":"Stéphane Nicoll","path":"/snicoll","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/490484?s=80&v=4"},"commit":{"message":"Add convenient request/response accessors on MvcTestResult\n\nCloses gh-32846","shortMessageHtmlLink":"Add convenient request/response accessors on MvcTestResult"}},{"before":"f0c6fab39ea3d8baf7c3d93036dfe07ec9e0912e","after":"268043a28c5f8b19d78298565e82efccb525dedc","ref":"refs/heads/main","pushedAt":"2024-05-20T08:25:41.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"sdeleuze","name":"Sébastien Deleuze","path":"/sdeleuze","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141109?s=80&v=4"},"commit":{"message":"Merge branch '6.1.x'","shortMessageHtmlLink":"Merge branch '6.1.x'"}},{"before":"617833bec97bdee369af01462b68f8878eb1b155","after":"2a2ef443a53b891691ff533f327be2e013861bc4","ref":"refs/heads/6.1.x","pushedAt":"2024-05-20T08:25:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sdeleuze","name":"Sébastien Deleuze","path":"/sdeleuze","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141109?s=80&v=4"},"commit":{"message":"Refine CDS documentation\n\nCloses gh-32843","shortMessageHtmlLink":"Refine CDS documentation"}},{"before":"de6cf845b102cffd81dd52013cf9dc3cfe0d04df","after":"ef2c140d3cbb5fe7dd53afd65c6ca061f617911a","ref":"refs/heads/5.3.x","pushedAt":"2024-05-17T11:00:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jhoeller","name":"Juergen Hoeller","path":"/jhoeller","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1263688?s=80&v=4"},"commit":{"message":"Defensively catch and log pointcut parsing exceptions\n\nCloses gh-32838\nSee gh-32793\n\n(cherry picked from commit 617833bec97bdee369af01462b68f8878eb1b155)","shortMessageHtmlLink":"Defensively catch and log pointcut parsing exceptions"}},{"before":"c374c46cdc7f9080785b9e8979dd8bbef9a08bb9","after":"97e12bd0e84a4f5bc5689609cc8d5dfddeba3cce","ref":"refs/heads/6.0.x","pushedAt":"2024-05-17T10:50:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jhoeller","name":"Juergen Hoeller","path":"/jhoeller","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1263688?s=80&v=4"},"commit":{"message":"Defensively catch and log pointcut parsing exceptions\n\nCloses gh-32838\nSee gh-32793\n\n(cherry picked from commit 617833bec97bdee369af01462b68f8878eb1b155)","shortMessageHtmlLink":"Defensively catch and log pointcut parsing exceptions"}},{"before":"93387e69b53620b13b379bd972a18cdc3fd54be7","after":"f0c6fab39ea3d8baf7c3d93036dfe07ec9e0912e","ref":"refs/heads/main","pushedAt":"2024-05-17T10:39:35.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"jhoeller","name":"Juergen Hoeller","path":"/jhoeller","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1263688?s=80&v=4"},"commit":{"message":"Merge branch '6.1.x'\n\n# Conflicts:\n#\tgradle.properties\n#\tspring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java","shortMessageHtmlLink":"Merge branch '6.1.x'"}},{"before":"4d633c2ea8c98adb426eb148553fb350e62e5de7","after":"617833bec97bdee369af01462b68f8878eb1b155","ref":"refs/heads/6.1.x","pushedAt":"2024-05-17T10:28:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jhoeller","name":"Juergen Hoeller","path":"/jhoeller","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1263688?s=80&v=4"},"commit":{"message":"Defensively catch and log pointcut parsing exceptions\n\nCloses gh-32838\nSee gh-32793","shortMessageHtmlLink":"Defensively catch and log pointcut parsing exceptions"}},{"before":"10e5029e881be47d26f63de37fa53650ad3732d7","after":"b14a20161f0910ba97411442027e8df60cba79b9","ref":"refs/heads/docs-build","pushedAt":"2024-05-16T16:01:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sdeleuze","name":"Sébastien Deleuze","path":"/sdeleuze","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141109?s=80&v=4"},"commit":{"message":"Update spring-doc-actions to 0.0.16","shortMessageHtmlLink":"Update spring-doc-actions to 0.0.16"}},{"before":"28398624bfdb84c1101a929620079e621dc3a05a","after":"93387e69b53620b13b379bd972a18cdc3fd54be7","ref":"refs/heads/main","pushedAt":"2024-05-16T14:47:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sbrannen","name":"Sam Brannen","path":"/sbrannen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/104798?s=80&v=4"},"commit":{"message":"Polishing","shortMessageHtmlLink":"Polishing"}},{"before":"010e8a303b1caf3b80e244fc5e4aebc23d854118","after":"4d633c2ea8c98adb426eb148553fb350e62e5de7","ref":"refs/heads/6.1.x","pushedAt":"2024-05-16T09:11:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"spring-builds","name":"Spring Builds","path":"/spring-builds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1134463?s=80&v=4"},"commit":{"message":"Next development version (v6.1.8-SNAPSHOT)","shortMessageHtmlLink":"Next development version (v6.1.8-SNAPSHOT)"}},{"before":"ea208dc3048b358f014d1e16a3722d6b73f41e13","after":"c374c46cdc7f9080785b9e8979dd8bbef9a08bb9","ref":"refs/heads/6.0.x","pushedAt":"2024-05-16T08:30:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"spring-builds","name":"Spring Builds","path":"/spring-builds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1134463?s=80&v=4"},"commit":{"message":"Next development version (v6.0.21-SNAPSHOT)","shortMessageHtmlLink":"Next development version (v6.0.21-SNAPSHOT)"}},{"before":"7da43a80e4327bf788d24ce2a3a573766928382d","after":"de6cf845b102cffd81dd52013cf9dc3cfe0d04df","ref":"refs/heads/5.3.x","pushedAt":"2024-05-16T07:15:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"spring-builds","name":"Spring Builds","path":"/spring-builds","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1134463?s=80&v=4"},"commit":{"message":"Next development version (v5.3.36-SNAPSHOT)","shortMessageHtmlLink":"Next development version (v5.3.36-SNAPSHOT)"}},{"before":"da3b59e7a9d34b538c6023ccab6956fe284cc9d1","after":"28398624bfdb84c1101a929620079e621dc3a05a","ref":"refs/heads/main","pushedAt":"2024-05-15T20:20:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jhoeller","name":"Juergen Hoeller","path":"/jhoeller","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1263688?s=80&v=4"},"commit":{"message":"Avoid cyclic package import for javadoc reference","shortMessageHtmlLink":"Avoid cyclic package import for javadoc reference"}},{"before":"c8c95e360fa4a41b40e152b7a77b59c669b7a02d","after":"ea208dc3048b358f014d1e16a3722d6b73f41e13","ref":"refs/heads/6.0.x","pushedAt":"2024-05-15T19:16:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"rstoyanchev","name":"Rossen Stoyanchev","path":"/rstoyanchev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/401908?s=80&v=4"},"commit":{"message":"Polishing contribution\n\nCloses gh-32799","shortMessageHtmlLink":"Polishing contribution"}},{"before":"e4e69101225d915c28f0fff3571fb7f79e7b1db2","after":"010e8a303b1caf3b80e244fc5e4aebc23d854118","ref":"refs/heads/6.1.x","pushedAt":"2024-05-15T19:07:33.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rstoyanchev","name":"Rossen Stoyanchev","path":"/rstoyanchev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/401908?s=80&v=4"},"commit":{"message":"Polishing contribution\n\nCloses gh-32799","shortMessageHtmlLink":"Polishing contribution"}},{"before":"edb6bb717d9ea10429a9e5c1fba285cd7761d5a1","after":"da3b59e7a9d34b538c6023ccab6956fe284cc9d1","ref":"refs/heads/main","pushedAt":"2024-05-15T19:07:33.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"rstoyanchev","name":"Rossen Stoyanchev","path":"/rstoyanchev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/401908?s=80&v=4"},"commit":{"message":"Merge branch '6.1.x'","shortMessageHtmlLink":"Merge branch '6.1.x'"}},{"before":"a3b62a80bc6afbdd7365b57e9285c904e033b928","after":"edb6bb717d9ea10429a9e5c1fba285cd7761d5a1","ref":"refs/heads/main","pushedAt":"2024-05-15T17:45:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"rstoyanchev","name":"Rossen Stoyanchev","path":"/rstoyanchev","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/401908?s=80&v=4"},"commit":{"message":"Add UrlHandlerFilter\n\nCloses gh-31366","shortMessageHtmlLink":"Add UrlHandlerFilter"}},{"before":"6cdb34410bf14aacb08bf9d3b47d22daed821824","after":"a3b62a80bc6afbdd7365b57e9285c904e033b928","ref":"refs/heads/main","pushedAt":"2024-05-15T17:00:27.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sbrannen","name":"Sam Brannen","path":"/sbrannen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/104798?s=80&v=4"},"commit":{"message":"Improve wording in Spring Framework Overview documentation\n\nCloses gh-32829","shortMessageHtmlLink":"Improve wording in Spring Framework Overview documentation"}},{"before":"4b2552f4982b707d4082e66e5a0bf82d86c92185","after":"10e5029e881be47d26f63de37fa53650ad3732d7","ref":"refs/heads/docs-build","pushedAt":"2024-05-15T16:45:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sdeleuze","name":"Sébastien Deleuze","path":"/sdeleuze","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/141109?s=80&v=4"},"commit":{"message":"Upgrade to antora-ui-spring 0.4.13\n\nSee https://github.com/spring-io/antora-ui-spring/pull/234","shortMessageHtmlLink":"Upgrade to antora-ui-spring 0.4.13"}},{"before":"7d8279afeca760223d128e0a5ae57399ae02d2cc","after":"6cdb34410bf14aacb08bf9d3b47d22daed821824","ref":"refs/heads/main","pushedAt":"2024-05-15T15:14:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sbrannen","name":"Sam Brannen","path":"/sbrannen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/104798?s=80&v=4"},"commit":{"message":"Register DynamicPropertyRegistry as singleton bean in test ApplicationContext\n\nPrior to this commit, DynamicPropertyRegistry could only be used with a\nstatic @⁠DynamicPropertySource method in an integration test class;\nhowever, it can also be useful to be able to register a \"dynamic\nproperty\" from within a test's ApplicationContext -- for example, in a\n@⁠Bean method in a @⁠Configuration class that is specific to testing\nscenarios.\n\nTo support such use cases, this commit updates the dynamic property\nsource infrastructure so that a DynamicPropertyRegistry is always\nregistered as a singleton bean in a test's ApplicationContext. This\nallows DynamicPropertyRegistry to be autowired into a @⁠Configuration\nclass or supplied to a @⁠Bean method as an argument as shown in the\nfollowing example.\n\n@⁠Bean\n@⁠DynamicPropertySource\nApiServer apiServer(DynamicPropertyRegistry registry) {\n\tApiServer apiServer = new ApiServer();\n\tregistry.add(\"api.url\", apiServer::getUrl);\n\treturn apiServer;\n}\n\nNote that the use of @⁠DynamicPropertySource on the @⁠Bean method is\noptional and results in the corresponding bean being eagerly\ninitialized so that other singleton beans in the context can be given\naccess to the dynamic properties sourced from that bean when those\nother beans are initialized.\n\nSide note: DynamicPropertySourceBeanInitializer temporarily implements\nLoadTimeWeaverAware since doing so is currently the only way to have a\ncomponent eagerly initialized before the\nConfigurableListableBeanFactory.preInstantiateSingletons() phase.\nHowever, we plan to introduce a first-class callback to support such\nuse cases in the future.\n\nCloses gh-32271","shortMessageHtmlLink":"Register DynamicPropertyRegistry as singleton bean in test Applicatio…"}},{"before":"9fb36a5dcb82c06a482b3388f96eed4017f47b18","after":"c8c95e360fa4a41b40e152b7a77b59c669b7a02d","ref":"refs/heads/6.0.x","pushedAt":"2024-05-15T12:32:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jhoeller","name":"Juergen Hoeller","path":"/jhoeller","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1263688?s=80&v=4"},"commit":{"message":"Polishing (aligned with 6.1.x)","shortMessageHtmlLink":"Polishing (aligned with 6.1.x)"}},{"before":"d625b3de278344078bcba1104d508287645fadb1","after":"7d8279afeca760223d128e0a5ae57399ae02d2cc","ref":"refs/heads/main","pushedAt":"2024-05-15T12:19:56.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"jhoeller","name":"Juergen Hoeller","path":"/jhoeller","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1263688?s=80&v=4"},"commit":{"message":"Merge branch '6.1.x'","shortMessageHtmlLink":"Merge branch '6.1.x'"}},{"before":"70886e32c01a03f8c3080904022f98316497e831","after":"e4e69101225d915c28f0fff3571fb7f79e7b1db2","ref":"refs/heads/6.1.x","pushedAt":"2024-05-15T12:16:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jhoeller","name":"Juergen Hoeller","path":"/jhoeller","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1263688?s=80&v=4"},"commit":{"message":"Polishing","shortMessageHtmlLink":"Polishing"}},{"before":"531da015e108346695a69872335b6bd9ae3d55a5","after":"d625b3de278344078bcba1104d508287645fadb1","ref":"refs/heads/main","pushedAt":"2024-05-15T09:48:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sbrannen","name":"Sam Brannen","path":"/sbrannen","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/104798?s=80&v=4"},"commit":{"message":"Document SpEL IndexAccessor support in the reference manual\n\nCloses gh-32735","shortMessageHtmlLink":"Document SpEL IndexAccessor support in the reference manual"}},{"before":"60c5f44e1df678786eb6af6bd39370b04f0cd36d","after":"531da015e108346695a69872335b6bd9ae3d55a5","ref":"refs/heads/main","pushedAt":"2024-05-15T09:19:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"simonbasle","name":"Simon Baslé","path":"/simonbasle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6986166?s=80&v=4"},"commit":{"message":"Improve MediaTypeAssert to-string-equality assertions\n\nThis commit introduces a `isNotEqualTo(String)` assertion in order to\navoid false negatives when using the default Object-based assertion.\n\nThis is a risk since MediaTypeAssert has a `isEqualTo(String)` method\nthat overrides the base object method and parses the provided String\ninto a MediaType. Users may thus be tempted to use the reverse assertion\nand expect the same parsing behaviour.\n\nThis commit also adds tests around the String parsing and the isNotEqual\ncases.\n\nCloses gh-32756","shortMessageHtmlLink":"Improve MediaTypeAssert to-string-equality assertions"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAETu8ZoQA","startCursor":null,"endCursor":null}},"title":"Activity · spring-projects/spring-framework"}