|
| 1 | +--- |
| 2 | +description: What's changed in OpenRewrite version 8.49.0. |
| 3 | +--- |
| 4 | + |
| 5 | +# 8.49.0 release (2025-03-28) |
| 6 | + |
| 7 | +_Total recipe count: 3086_ |
| 8 | + |
| 9 | +:::info |
| 10 | +This changelog only shows what recipes have been added, removed, or changed. OpenRewrite may do releases that do not include these types of changes. To see these changes, please go to the [releases page](https://github.com/openrewrite/rewrite/releases). |
| 11 | +::: |
| 12 | + |
| 13 | +## New Recipes |
| 14 | + |
| 15 | +* [io.quarkus.updates.core.quarkus321.TlsRegistrySplitPackagesFix](https://docs.openrewrite.org/recipes/io/quarkus/updates/core/quarkus321/tlsregistrysplitpackagesfix): |
| 16 | +* [io.quarkus.updates.minio.minio38.UpdateAll](https://docs.openrewrite.org/recipes/io/quarkus/updates/minio/minio38/updateall): |
| 17 | +* [io.quarkus.updates.minio.minio38.UpdateProperties](https://docs.openrewrite.org/recipes/io/quarkus/updates/minio/minio38/updateproperties): |
| 18 | +* [io.quarkus.updates.quarkiverse.minio.minio38.AdjustURLPropertyValue](https://docs.openrewrite.org/recipes/io/quarkus/updates/quarkiverse/minio/minio38/adjusturlpropertyvalue): Adjust quarkus.minio.url property key to quarkus.minio.host. |
| 19 | +* [org.openrewrite.apache.poi.ReplaceSetBoldweightWithSetBold](https://docs.openrewrite.org/recipes/apache/poi/replacesetboldweightwithsetbold): Replace `Font.setBoldweight(short)` or equivalent with `Font.setBold(boolean)`. |
| 20 | +* [org.openrewrite.apache.poi.ReplaceSetCellType](https://docs.openrewrite.org/recipes/apache/poi/replacesetcelltype): `Cell.setCellType()` can be configured with either an integer or a the `CellType` enumeration. It is clearer and less error-prone to use the `CellType` enumeration, so this recipe converts all `setCellType()` calls to use it. |
| 21 | +* [org.openrewrite.java.logging.CatchBlockLogLevel](https://docs.openrewrite.org/recipes/java/logging/catchblockloglevel): Sometimes exceptions are caught and logged at the wrong log level. This will set the log level of logging statements within a catch block not containing an exception to "warn", and the log level of logging statements containing an exception to "error". This supports SLF4J, Log4J1, Log4j2, and Logback. |
| 22 | +* [org.openrewrite.java.logging.logback.ConfigureLoggerLevel](https://docs.openrewrite.org/recipes/java/logging/logback/configureloggerlevel): Within logback.xml configuration files sets the specified log level for a particular class. Will not create a logback.xml if one does not already exist. |
| 23 | +* [org.openrewrite.java.migrate.jakarta.UpdateAnnotationAttributeJavaxToJakarta](https://docs.openrewrite.org/recipes/java/migrate/jakarta/updateannotationattributejavaxtojakarta): Replace `javax` with `jakarta` in annotation attributes for matching annotation signatures. |
| 24 | +* [org.openrewrite.java.migrate.jakarta.UpdateApacheCommonsEmailDependencies](https://docs.openrewrite.org/recipes/java/migrate/jakarta/updateapachecommonsemaildependencies): Update Apache Commons Email to Email2 for Jakarta. |
| 25 | +* [org.openrewrite.java.migrate.jakarta.UpdateApacheShiroDependencies](https://docs.openrewrite.org/recipes/java/migrate/jakarta/updateapacheshirodependencies): Update Apache Shiro Dependencies to 2.0.x. |
| 26 | +* [org.openrewrite.java.migrate.jakarta.UpdateEclipseLinkDependencies](https://docs.openrewrite.org/recipes/java/migrate/jakarta/updateeclipselinkdependencies): Update EclipseLink Dependencies to 4.x. |
| 27 | +* [org.openrewrite.java.migrate.jakarta.UpdateJerseyDependencies](https://docs.openrewrite.org/recipes/java/migrate/jakarta/updatejerseydependencies): Update GlassFish Jersey Dependencies to 3.1.x. |
| 28 | +* [org.openrewrite.java.migrate.jakarta.UpdateYassonDependencies](https://docs.openrewrite.org/recipes/java/migrate/jakarta/updateyassondependencies): Update Eclipse Yasson Dependencies to 3.0.x. |
| 29 | +* [org.openrewrite.java.spring.boot3.SpringBoot33BestPractices](https://docs.openrewrite.org/recipes/java/spring/boot3/springboot33bestpractices): Applies best practices to Spring Boot 3 applications. |
| 30 | +* [org.openrewrite.java.testing.mockito.PowerMockitoWhenNewToMockito](https://docs.openrewrite.org/recipes/java/testing/mockito/powermockitowhennewtomockito): Replaces `PowerMockito.whenNew` calls with respective `Mockito.whenConstructed` calls. |
| 31 | +* [software.amazon.awssdk.v2migration.DateToInstant](https://docs.openrewrite.org/recipes/software/amazon/awssdk/v2migration/datetoinstant): Convert Date to Instant by calling Date#toInstant |
| 32 | +* [software.amazon.awssdk.v2migration.S3PutObjectRequestToV2](https://docs.openrewrite.org/recipes/software/amazon/awssdk/v2migration/s3putobjectrequesttov2): Transform V1 S3 PutObjectRequest to V2, as well as methods that take it as an argument. |
| 33 | +* [tech.picnic.errorprone.refasterrules.FileRulesRecipes$FileMkDirsFileExistsRecipe](https://docs.openrewrite.org/recipes/tech/picnic/errorprone/refasterrules/filerulesrecipesusdfilemkdirsfileexistsrecipe): Invoke `File#mkdirs()` before `File#exists()` to avoid concurrency issues |
| 34 | +* [tech.picnic.errorprone.refasterrules.FileRulesRecipes$PathToFileMkDirsFilesExistsRecipe](https://docs.openrewrite.org/recipes/tech/picnic/errorprone/refasterrules/filerulesrecipesusdpathtofilemkdirsfilesexistsrecipe): Invoke `File#mkdirs()` before `Files#exists(Path, LinkOption...)` to avoid concurrency issues |
| 35 | + |
| 36 | +## Removed Recipes |
| 37 | + |
| 38 | +* **org.openrewrite.apache.poi.ReplaceSetBoldweightWithSetBoldRecipes**: Replace `Font.setBoldweight(short)` or equivalent with `Font.setBold(boolean)`. |
| 39 | +* **org.openrewrite.apache.poi.ReplaceSetBoldweightWithSetBoldRecipes$ReplaceSetBoldweightBoldWithSetBoldTrueRecipe**: Replace `Font.setBoldweight(Font.BOLDWEIGHT_BOLD)` or equivalent with `Font.setBold(true)`. |
| 40 | +* **org.openrewrite.apache.poi.ReplaceSetBoldweightWithSetBoldRecipes$ReplaceSetBoldweightNormalWithSetBoldFalseRecipe**: Replace `Font.setBoldweight(Font.BOLDWEIGHT_NORMAL)` or equivalent with `Font.setBold(false)`. |
| 41 | +* **org.openrewrite.apache.poi.ReplaceSetCellTypeRecipes**: Replace `Cell.setCellType(int)` with equivalent `Cell.setCellType(CellType)`. |
| 42 | +* **org.openrewrite.apache.poi.ReplaceSetCellTypeRecipes$ReplaceSetCellTypeBlankRecipe**: Replace `Cell.setCellType(Cell.CELL_TYPE_BLANK)` with `Cell.setCellType(CellType.BLANK)`. |
| 43 | +* **org.openrewrite.apache.poi.ReplaceSetCellTypeRecipes$ReplaceSetCellTypeBooleanRecipe**: Replace `Cell.setCellType(Cell.CELL_TYPE_BOOLEAN)` with `Cell.setCellType(CellType.BOOLEAN)`. |
| 44 | +* **org.openrewrite.apache.poi.ReplaceSetCellTypeRecipes$ReplaceSetCellTypeErrorRecipe**: Replace `Cell.setCellType(Cell.CELL_TYPE_ERROR)` with `Cell.setCellType(CellType.ERROR)`. |
| 45 | +* **org.openrewrite.apache.poi.ReplaceSetCellTypeRecipes$ReplaceSetCellTypeFormulaRecipe**: Replace `Cell.setCellType(Cell.CELL_TYPE_FORMULA)` with `Cell.setCellType(CellType.FORMULA)`. |
| 46 | +* **org.openrewrite.apache.poi.ReplaceSetCellTypeRecipes$ReplaceSetCellTypeNumericRecipe**: Replace `Cell.setCellType(Cell.CELL_TYPE_NUMERIC)` with `Cell.setCellType(CellType.NUMERIC)`. |
| 47 | +* **org.openrewrite.apache.poi.ReplaceSetCellTypeRecipes$ReplaceSetCellTypeStringRecipe**: Replace `Cell.setCellType(Cell.CELL_TYPE_STRING)` with `Cell.setCellType(CellType.STRING)`. |
| 48 | +* **org.openrewrite.codemods.migrate.react.ClassComponentToFunctionComponent**: Class components are still going to be supported by React for the foreseeable future. However, it is no longer recommended to write new components in class-style. |
| 49 | + |
| 50 | + This recipe will convert class components to function components using [react-declassify](https://github.com/wantedly/react-declassify) |
| 51 | +* **org.openrewrite.java.migrate.jakarta.BeanValidationMessages**: Migrate `javax.validation.constraints` messages found in Java files to `jakarta.validation.constraints` equivalents. |
| 52 | +* **org.openrewrite.java.spring.boot3.SpringBoot3BestPractices**: Applies best practices to Spring Boot 3 applications. |
| 53 | + |
| 54 | +## Changed Recipes |
| 55 | + |
| 56 | +* [org.openrewrite.text.FindMultiselect](https://docs.openrewrite.org/recipes/text/findmultiselect) was changed: |
| 57 | + * Old Options: |
| 58 | + * `filePattern: { type: String, required: true }` |
| 59 | + * `find: { type: String, required: true }` |
| 60 | + * `regex: { type: Boolean, required: false }` |
| 61 | + * `regexOptions: { type: Set, required: false }` |
| 62 | + * New Options: |
| 63 | + * `filePattern: { type: String, required: false }` |
| 64 | + * `find: { type: String, required: true }` |
| 65 | + * `regex: { type: Boolean, required: false }` |
| 66 | + * `regexOptions: { type: Set, required: false }` |
| 67 | +* [org.openrewrite.gradle.AddProperty](https://docs.openrewrite.org/recipes/gradle/addproperty) was changed: |
| 68 | + * Old Options: |
| 69 | + * `filePattern: { type: String, required: true }` |
| 70 | + * `key: { type: String, required: true }` |
| 71 | + * `overwrite: { type: Boolean, required: true }` |
| 72 | + * `value: { type: String, required: true }` |
| 73 | + * New Options: |
| 74 | + * `filePattern: { type: String, required: false }` |
| 75 | + * `key: { type: String, required: true }` |
| 76 | + * `overwrite: { type: Boolean, required: true }` |
| 77 | + * `value: { type: String, required: true }` |
| 78 | +* [org.openrewrite.java.AddOrUpdateAnnotationAttribute](https://docs.openrewrite.org/recipes/java/addorupdateannotationattribute) was changed: |
| 79 | + * Old Options: |
| 80 | + * `addOnly: { type: Boolean, required: true }` |
| 81 | + * `annotationType: { type: String, required: true }` |
| 82 | + * `appendArray: { type: Boolean, required: true }` |
| 83 | + * `attributeName: { type: String, required: false }` |
| 84 | + * `attributeValue: { type: String, required: true }` |
| 85 | + * `oldAttributeValue: { type: String, required: true }` |
| 86 | + * New Options: |
| 87 | + * `addOnly: { type: Boolean, required: false }` |
| 88 | + * `annotationType: { type: String, required: true }` |
| 89 | + * `appendArray: { type: Boolean, required: false }` |
| 90 | + * `attributeName: { type: String, required: false }` |
| 91 | + * `attributeValue: { type: String, required: false }` |
| 92 | + * `oldAttributeValue: { type: String, required: false }` |
| 93 | +* [org.openrewrite.java.search.FindMissingTypes](https://docs.openrewrite.org/recipes/java/search/findmissingtypes) was changed: |
| 94 | + * Old Options: |
| 95 | + * `None` |
| 96 | + * New Options: |
| 97 | + * `checkDocumentation: { type: boolean, required: false }` |
| 98 | +* [org.openrewrite.java.dependencies.DependencyList](https://docs.openrewrite.org/recipes/java/dependencies/dependencylist) was changed: |
| 99 | + * Old Options: |
| 100 | + * `includeTransitive: { type: boolean, required: true }` |
| 101 | + * `scope: { type: Scope, required: true }` |
| 102 | + * `validateResolvable: { type: boolean, required: true }` |
| 103 | + * New Options: |
| 104 | + * `includeTransitive: { type: boolean, required: false }` |
| 105 | + * `scope: { type: Scope, required: false }` |
| 106 | + * `validateResolvable: { type: boolean, required: false }` |
| 107 | +* [org.openrewrite.java.dependencies.DependencyVulnerabilityCheck](https://docs.openrewrite.org/recipes/java/dependencies/dependencyvulnerabilitycheck) was changed: |
| 108 | + * Old Options: |
| 109 | + * `maximumUpgradeDelta: { type: UpgradeDelta, required: false }` |
| 110 | + * `overrideTransitive: { type: Boolean, required: false }` |
| 111 | + * `scope: { type: String, required: false }` |
| 112 | + * New Options: |
| 113 | + * `maximumUpgradeDelta: { type: UpgradeDelta, required: false }` |
| 114 | + * `overrideTransitive: { type: Boolean, required: false }` |
| 115 | + * `overrideVulnerabilityDatabase: { type: URI, required: false }` |
| 116 | + * `scope: { type: String, required: false }` |
0 commit comments