Skip to content

spring-projects/spring-rewrite-commons

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Spring Rewrite Commons

Spring Rewrite Commons provides a set of components to parse a Java project to OpenRewrite LST and apply recipes outside a build tool plugin.

Get started

Add Dependency

Maven

<dependency>
    <groupId>org.springframwork.rewrite</groupId>
    <artifactId>spring-rewrite-commons-launcher</artifactId>
    <version>0.1.0-SNAPSHOT</version>
</dependency>

Gradle

compile 'org.springframework.rewrite:spring-rewrite-commons-launcher:0.1.0-SNAPSHOT'

Implement a Recipe Launcher

package com.acme.example;

import org.openrewrite.Recipe;
import org.openrewrite.SourceFile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.rewrite.RewriteProjectParser;
import org.springframework.rewrite.parser.RewriteProjectParsingResult;
import org.springframework.rewrite.resource.ProjectResourceSet;
import org.springframework.rewrite.resource.ProjectResourceSetFactory;
import org.springframework.rewrite.resource.ProjectResourceSetSerializer;
import org.springframework.rewrite.RewriteRecipeDiscovery;
import org.springframework.stereotype.Component;

import java.nio.file.Path;

@Component
public class MyMigrationApplication {

    @Autowired (1)
    private RewriteProjectParser parser;

    @Autowired
    private RewriteRecipeDiscovery discovery; (2)

    @Autowired
    private ProjectResourceSetFactory resourceSetFactory;

    @Autowired
    private ProjectResourceSetSerializer serializer;


    public void migrateToBoot3_1() {
        Path baseDir = Path.of("."); (2)
        String recipeName = "org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_1";
        Recipe boot3Upgrade = discovery.getByName(recipeName); (3)

        RewriteProjectParsingResult result = parser.parse(baseDir); (4)
        List<SourceFile> lst = result.sourceFiles(); (5)
        ProjectResourceSet resourceSet = resourceSetFactory.create(baseDir, lst); (6)
        resourceSet.apply(boot3Upgrade); (7)
        serializer.writeChanges(resourceSet); (8)
    }
}
  1. All components are Spring beans and can be injected as such.

  2. The path of the project that should be migrated.

  3. RewriteRecipeDiscovery is used to discover an OpenRewrite recipe by name.

  4. RewriteProjectParser parses a given project to OpenRewrite LST.

  5. The result contains the list of SourceFiles (the LST).

  6. ProjectResourceSetFactory can be used to create a ProjectResourceSet.

  7. The recipe is applied to the ProjectResourceSet which wraps the LST.

  8. ProjectResourceSetSerializer is used to serialize the changes to disk.

Reference documentation

Find the reference documentation here.

Contributing

Pull requests are welcome. Note, that we expect everyone to follow the code of conduct.

License

Spring Rewrite Commons is Open Source software released under the Apache 2.0 license.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published