diff --git a/Dockerfile b/Dockerfile index 55e2b45..1a89744 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ RUN microdnf -y install git &&\ FROM quay.io/konveyor/static-report:latest as static-report # Build the manager binary -FROM golang:1.19 as builder +FROM golang:1.21 as builder WORKDIR /workspace # Copy the Go Modules manifests diff --git a/cmd/analyze.go b/cmd/analyze.go index 85b6e16..1d9c5f9 100644 --- a/cmd/analyze.go +++ b/cmd/analyze.go @@ -9,6 +9,7 @@ import ( "io" "io/fs" "os" + "os/exec" "path" "runtime" @@ -16,7 +17,6 @@ import ( "sort" "strings" - "github.com/devfile/alizer/pkg/apis/model" "github.com/devfile/alizer/pkg/apis/recognizer" "github.com/go-logr/logr" "github.com/konveyor-ecosystem/kantra/cmd/internal/hiddenfile" @@ -24,6 +24,7 @@ import ( "github.com/konveyor/analyzer-lsp/engine" outputv1 "github.com/konveyor/analyzer-lsp/output/v1/konveyor" "github.com/konveyor/analyzer-lsp/provider" + "github.com/phayes/freeport" "go.lsp.dev/uri" "gopkg.in/yaml.v2" @@ -47,6 +48,11 @@ var ( ProviderSettingsMountPath = path.Join(ConfigMountPath, "settings.json") ) +const ( + javaProvider = "java" + goProvider = "go" +) + // kantra analyze flags type analyzeCommand struct { listSources bool @@ -75,7 +81,11 @@ type analyzeCommand struct { // isFileInput is set when input points to a file and not a dir isFileInput bool logLevel *uint32 - cleanup bool + // used for cleanup + networkName string + volumeName string + providerContainerNames []string + cleanup bool } // analyzeCmd represents the analyze command @@ -112,6 +122,13 @@ func NewAnalyzeCmd(log logr.Logger) *cobra.Command { if val, err := cmd.Flags().GetBool(noCleanupFlag); err == nil { analyzeCmd.cleanup = !val } + // defer cleaning created resources here instead of PostRun + // if Run returns an error, PostRun does not run + defer func() { + if err := analyzeCmd.CleanAnalysisResources(cmd.Context()); err != nil { + log.Error(err, "failed to clean temporary directories") + } + }() if analyzeCmd.listSources || analyzeCmd.listTargets { err := analyzeCmd.ListLabels(cmd.Context()) if err != nil { @@ -130,10 +147,31 @@ func NewAnalyzeCmd(log logr.Logger) *cobra.Command { log.Error(err, "Failed to determine languages for input") return err } + foundProviders := []string{} for _, c := range components { log.Info("Got component", "component language", c.Languages, "path", c.Path) + for _, l := range c.Languages { + foundProviders = append(foundProviders, strings.ToLower(l.Name)) + } + } + containerNetworkName, err := analyzeCmd.createContainerNetwork() + if err != nil { + log.Error(err, "failed to create container network") + return err + } + // share source app with provider and engine containers + containerVolName, err := analyzeCmd.createContainerVolume(analyzeCmd.input) + if err != nil { + log.Error(err, "failed to create container volume") + return err + } + // allow for 5 retries of running provider in the case of port in use + providerPorts, err := analyzeCmd.RunProviders(cmd.Context(), containerNetworkName, containerVolName, foundProviders, 5) + if err != nil { + log.Error(err, "failed to run provider") + return err } - err = analyzeCmd.RunAnalysis(cmd.Context(), xmlOutputDir, components) + err = analyzeCmd.RunAnalysis(cmd.Context(), xmlOutputDir, containerVolName, foundProviders, providerPorts) if err != nil { log.Error(err, "failed to run analysis") return err @@ -148,14 +186,7 @@ func NewAnalyzeCmd(log logr.Logger) *cobra.Command { log.Error(err, "failed to generate static report") return err } - return nil - }, - PostRunE: func(cmd *cobra.Command, args []string) error { - err := analyzeCmd.Clean(cmd.Context()) - if err != nil { - log.Error(err, "failed to clean temporary container resources") - return err - } + return nil }, } @@ -411,7 +442,7 @@ func listOptionsFromLabels(sl []string, label string) { } } -func (a *analyzeCommand) getConfigVolumes(components []model.Component) (map[string]string, error) { +func (a *analyzeCommand) getConfigVolumes(providers []string, ports map[string]int) (map[string]string, error) { tempDir, err := os.MkdirTemp("", "analyze-config-") if err != nil { a.log.V(1).Error(err, "failed creating temp dir", "dir", tempDir) @@ -422,14 +453,12 @@ func (a *analyzeCommand) getConfigVolumes(components []model.Component) (map[str var foundJava bool var foundGolang bool - for _, c := range components { - for _, l := range c.Languages { - if l.Name == "Java" { - foundJava = true - } - if l.Name == "Go" { - foundGolang = true - } + for _, p := range providers { + if p == javaProvider { + foundJava = true + } + if p == goProvider { + foundGolang = true } } // TODO (pgaikwad): binaries don't work with alizer right now, we need to revisit this @@ -446,14 +475,14 @@ func (a *analyzeCommand) getConfigVolumes(components []model.Component) (map[str } javaConfig := provider.Config{ - Name: "java", - BinaryPath: "/usr/local/bin/java-external-provider", + Name: javaProvider, + Address: fmt.Sprintf("0.0.0.0:%v", ports[javaProvider]), InitConfig: []provider.InitConfig{ { Location: SourceMountPath, AnalysisMode: provider.AnalysisMode(a.mode), ProviderSpecificConfig: map[string]interface{}{ - "lspServerName": "java", + "lspServerName": javaProvider, "bundles": JavaBundlesLocation, "depOpenSourceLabelsFile": "/usr/local/etc/maven.default.index", provider.LspServerPathConfigKey: "/jdtls/bin/jdtls", @@ -474,15 +503,15 @@ func (a *analyzeCommand) getConfigVolumes(components []model.Component) (map[str } goConfig := provider.Config{ - Name: "go", - BinaryPath: "/usr/local/bin/generic-external-provider", + Name: goProvider, + Address: fmt.Sprintf("0.0.0.0:%v", ports[goProvider]), InitConfig: []provider.InitConfig{ { - Location: otherProvsMountPath, AnalysisMode: provider.FullAnalysisMode, ProviderSpecificConfig: map[string]interface{}{ - "name": "go", - "dependencyProviderPath": "/usr/local/bin/golang-dependency-provider", + "lspServerName": "generic", + "workspaceFolders": []string{fmt.Sprintf("file://%s", otherProvsMountPath)}, + "dependencyProviderPath": "/usr/local/bin/go-dependency-provider", provider.LspServerPathConfigKey: "/root/go/bin/gopls", }, }, @@ -503,7 +532,7 @@ func (a *analyzeCommand) getConfigVolumes(components []model.Component) (map[str if foundJava { provConfig = append(provConfig, javaConfig) } - if foundGolang { + if foundGolang && a.mode == string(provider.FullAnalysisMode) { provConfig = append(provConfig, goConfig) } @@ -519,11 +548,6 @@ func (a *analyzeCommand) getConfigVolumes(components []model.Component) (map[str } } - // go provider only supports full analysis mode - if a.mode == string(provider.FullAnalysisMode) { - provConfig = append(provConfig, goConfig) - } - jsonData, err := json.MarshalIndent(&provConfig, "", " ") if err != nil { a.log.V(1).Error(err, "failed to marshal provider config") @@ -671,8 +695,8 @@ func copyFileContents(src string, dst string) (err error) { return nil } -func (a analyzeCommand) createTempRuleSet(path string, name string) error { - a.log.Info("createing temp ruleset ", "path", path, "name", name) +func (a *analyzeCommand) createTempRuleSet(path string, name string) error { + a.log.Info("creating temp ruleset ", "path", path, "name", name) _, err := os.Stat(path) if os.IsNotExist(err) { return nil @@ -695,7 +719,117 @@ func (a analyzeCommand) createTempRuleSet(path string, name string) error { return nil } -func (a *analyzeCommand) RunAnalysis(ctx context.Context, xmlOutputDir string, components []model.Component) error { +func (a *analyzeCommand) createContainerNetwork() (string, error) { + networkName := container.RandomName() + args := []string{ + "network", + "create", + networkName, + } + + cmd := exec.Command(Settings.PodmanBinary, args...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + err := cmd.Run() + if err != nil { + return "", err + } + a.log.V(1).Info("created container network", "network", networkName) + // for cleanup + a.networkName = networkName + return networkName, nil +} + +// TODO: create for each source input once accepting multiple apps is completed +func (a *analyzeCommand) createContainerVolume(sourceInput string) (string, error) { + volName := container.RandomName() + args := []string{ + "volume", + "create", + "--opt", + "type=none", + "--opt", + fmt.Sprintf("device=%v", sourceInput), + "--opt", + "o=bind", + volName, + } + + cmd := exec.Command(Settings.PodmanBinary, args...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + err := cmd.Run() + if err != nil { + return "", err + } + a.log.V(1).Info("created container volume", "volume", volName) + // for cleanup + a.volumeName = volName + return volName, nil +} + +func (a *analyzeCommand) retryProviderContainer(ctx context.Context, networkName string, volName string, providers []string, retry int) error { + if retry == 0 { + return fmt.Errorf("too many provider container retry attempts") + } + retry-- + + _, err := a.RunProviders(ctx, networkName, volName, providers, retry) + if err != nil { + return fmt.Errorf("error retrying run provider %v", err) + } + return nil +} + +func (a *analyzeCommand) RunProviders(ctx context.Context, networkName string, volName string, providers []string, retry int) (map[string]int, error) { + providerPorts := map[string]int{} + port, err := freeport.GetFreePort() + if err != nil { + return nil, err + } + volumes := map[string]string{ + // application source code + a.input: SourceMountPath, + } + // this will make more sense when we have more than 2 supported providers + var providerImage string + switch providers[0] { + case javaProvider: + providerImage = Settings.JavaProviderImage + providerPorts[javaProvider] = port + case goProvider: + providerImage = Settings.GenericProviderImage + providerPorts[goProvider] = port + default: + return nil, fmt.Errorf("unable to run unsupported provider %v", providers[0]) + } + args := []string{fmt.Sprintf("--port=%v", port)} + a.log.Info("starting provider", "provider", providers[0]) + + con := container.NewContainer() + err = con.Run( + ctx, + container.WithImage(providerImage), + container.WithLog(a.log.V(1)), + container.WithVolumes(volumes), + container.WithContainerToolBin(Settings.PodmanBinary), + container.WithEntrypointArgs(args...), + container.WithDetachedMode(true), + container.WithCleanup(a.cleanup), + container.WithNetwork(networkName), + ) + if err != nil { + err := a.retryProviderContainer(ctx, networkName, volName, providers, retry) + if err != nil { + return nil, err + } + } + + a.providerContainerNames = append(a.providerContainerNames, con.Name) + return providerPorts, nil +} + +func (a *analyzeCommand) RunAnalysis(ctx context.Context, xmlOutputDir string, volName string, providers []string, ports map[string]int) error { volumes := map[string]string{ // application source code a.input: SourceMountPath, @@ -714,7 +848,7 @@ func (a *analyzeCommand) RunAnalysis(ctx context.Context, xmlOutputDir string, c a.tempDirs = append(a.tempDirs, xmlOutputDir) } - configVols, err := a.getConfigVolumes(components) + configVols, err := a.getConfigVolumes(providers, ports) if err != nil { a.log.V(1).Error(err, "failed to get config volumes for analysis") return err @@ -735,6 +869,10 @@ func (a *analyzeCommand) RunAnalysis(ctx context.Context, xmlOutputDir string, c fmt.Sprintf("--output-file=%s", AnalysisOutputMountPath), fmt.Sprintf("--context-lines=%d", 100), } + // TODO update for running multiple apps + if providers[0] != javaProvider { + a.enableDefaultRulesets = false + } if a.enableDefaultRulesets { args = append(args, fmt.Sprintf("--rules=%s/", RulesetPath)) @@ -778,7 +916,9 @@ func (a *analyzeCommand) RunAnalysis(ctx context.Context, xmlOutputDir string, c "input", a.input, "output", a.output, "args", strings.Join(args, " "), "volumes", volumes) a.log.Info("generating analysis log in file", "file", analysisLogFilePath) // TODO (pgaikwad): run analysis & deps in parallel - err = container.NewContainer().Run( + + c := container.NewContainer() + err = c.Run( ctx, container.WithImage(Settings.RunnerImage), container.WithLog(a.log.V(1)), @@ -786,13 +926,18 @@ func (a *analyzeCommand) RunAnalysis(ctx context.Context, xmlOutputDir string, c container.WithStdout(analysisLog), container.WithStderr(analysisLog), container.WithEntrypointArgs(args...), - container.WithEntrypointBin("/usr/bin/entrypoint.sh"), + container.WithEntrypointBin("/usr/local/bin/konveyor-analyzer"), + container.WithNetwork(fmt.Sprintf("container:%v", a.providerContainerNames[0])), container.WithContainerToolBin(Settings.PodmanBinary), container.WithCleanup(a.cleanup), ) if err != nil { return err } + err = a.getProviderLogs(ctx) + if err != nil { + a.log.Error(err, "failed to get provider container logs") + } return nil } @@ -902,20 +1047,6 @@ func (a *analyzeCommand) GenerateStaticReport(ctx context.Context) error { return nil } -func (a *analyzeCommand) Clean(ctx context.Context) error { - if !a.cleanup { - return nil - } - for _, path := range a.tempDirs { - err := os.RemoveAll(path) - if err != nil { - a.log.V(1).Error(err, "failed to delete temporary dir", "dir", path) - continue - } - } - return nil -} - func (a *analyzeCommand) getLabelSelector() string { if a.labelSelector != "" { return a.labelSelector @@ -1072,3 +1203,90 @@ func (a *analyzeCommand) ConvertXML(ctx context.Context) (string, error) { return tempOutputDir, nil } + +func (a *analyzeCommand) CleanAnalysisResources(ctx context.Context) error { + if len(a.providerContainerNames) == 0 { + return nil + } + if !a.cleanup { + return nil + } + a.log.V(1).Info("removing temp dirs") + for _, path := range a.tempDirs { + err := os.RemoveAll(path) + if err != nil { + a.log.V(1).Error(err, "failed to delete temporary dir", "dir", path) + continue + } + } + err := a.RmProviderContainers(ctx) + if err != nil { + a.log.Error(err, "failed to remove provider container") + } + err = a.RmNetwork(ctx) + if err != nil { + a.log.Error(err, "failed to remove network", "network", a.networkName) + } + err = a.RmVolumes(ctx) + if err != nil { + a.log.Error(err, "failed to remove volume", "volume", a.volumeName) + } + return nil +} + +func (a *analyzeCommand) RmNetwork(ctx context.Context) error { + cmd := exec.CommandContext( + ctx, + Settings.PodmanBinary, + "network", + "rm", a.networkName) + a.log.V(1).Info("removing container network", + "network", a.networkName) + return cmd.Run() +} + +func (a *analyzeCommand) RmVolumes(ctx context.Context) error { + cmd := exec.CommandContext( + ctx, + Settings.PodmanBinary, + "volume", + "rm", a.volumeName) + a.log.V(1).Info("removing created volume", + "volume", a.volumeName) + return cmd.Run() +} + +// TODO: multiple provider containers +func (a *analyzeCommand) RmProviderContainers(ctx context.Context) error { + for i := range a.providerContainerNames { + cmd := exec.CommandContext( + ctx, + Settings.PodmanBinary, + "stop", a.providerContainerNames[i]) + a.log.V(1).Info("removing container", + "container", a.providerContainerNames[i]) + return cmd.Run() + } + return nil +} + +// TODO multiple providers +func (a *analyzeCommand) getProviderLogs(ctx context.Context) error { + if len(a.providerContainerNames) == 0 { + return nil + } + providerLogFilePath := filepath.Join(a.output, "provider.log") + a.log.V(1).Info("getting provider container logs", + "container", a.providerContainerNames[0]) + + // send each provider logs to log file + cmd := exec.CommandContext( + ctx, + Settings.PodmanBinary, + "logs", + a.providerContainerNames[0], + "&>", + providerLogFilePath) + + return cmd.Run() +} diff --git a/cmd/settings.go b/cmd/settings.go index 5f91e4b..15cd3bf 100644 --- a/cmd/settings.go +++ b/cmd/settings.go @@ -22,11 +22,15 @@ const ( ) type Config struct { - RootCommandName string `env:"CMD_NAME" default:"kantra"` - PodmanBinary string `env:"PODMAN_BIN" default:"/usr/bin/podman"` - RunnerImage string `env:"RUNNER_IMG" default:"quay.io/konveyor/kantra"` - JvmMaxMem string `env:"JVM_MAX_MEM" default:""` - RunLocal bool `env:"RUN_LOCAL"` + RootCommandName string `env:"CMD_NAME" default:"kantra"` + PodmanBinary string `env:"PODMAN_BIN" default:"/usr/bin/podman"` + RunnerImage string `env:"RUNNER_IMG" default:"quay.io/konveyor/kantra"` + JvmMaxMem string `env:"JVM_MAX_MEM" default:""` + RunLocal bool `env:"RUN_LOCAL"` + JavaProviderImage string `env:"JAVA_PROVIDER_IMG" default:"quay.io/konveyor/java-external-provider:latest"` + GenericProviderImage string `env:"GENERIC_PROVIDER_IMG" default:"quay.io/konveyor/generic-external-provider:latest"` + DotNetProviderImage string `env:"DOTNET_PROVIDER_IMG" default:"quay.io/konveyor/dotnet-external-provider:latest"` + YQProviderImage string `env:"YQ_PROVIDER_IMG" default:"quay.io/konveyor/yq-external-provider:latest"` } func (c *Config) Load() error { diff --git a/go.mod b/go.mod index c57ddee..eabae37 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,10 @@ module github.com/konveyor-ecosystem/kantra go 1.21 require ( + github.com/devfile/alizer v1.4.0 github.com/getkin/kin-openapi v0.108.0 github.com/go-logr/logr v1.4.1 + github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/spf13/cobra v1.8.0 go.lsp.dev/uri v0.3.0 gopkg.in/yaml.v2 v2.4.0 @@ -14,7 +16,6 @@ require ( require ( github.com/cbroglie/mustache v1.3.0 // indirect github.com/containerd/typeurl/v2 v2.1.1 // indirect - github.com/devfile/alizer v1.4.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/zapr v1.2.4 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect @@ -26,14 +27,17 @@ require ( github.com/invopop/yaml v0.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/kr/pretty v0.3.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/moby/buildkit v0.13.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/rogpeppe/go-internal v1.6.1 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect + github.com/swaggest/jsonschema-go v0.3.64 // indirect + github.com/swaggest/openapi-go v0.2.45 // indirect + github.com/swaggest/refl v1.3.0 // indirect go.opentelemetry.io/otel v1.21.0 // indirect go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect go.opentelemetry.io/otel/metric v1.21.0 // indirect @@ -62,7 +66,7 @@ require ( github.com/bombsimon/logrusr/v3 v3.1.0 github.com/codingconcepts/env v0.0.0-20200821220118-a8fbf8d84482 github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/konveyor/analyzer-lsp v0.3.0-beta.1.2 + github.com/konveyor/analyzer-lsp v0.4.0-alpha.1.0.20240418234858-9a3998676fb6 github.com/shopspring/decimal v1.3.1 // indirect github.com/sirupsen/logrus v1.9.3 github.com/spf13/pflag v1.0.5 // indirect diff --git a/go.sum b/go.sum index 3f5e2a2..6d95b04 100644 --- a/go.sum +++ b/go.sum @@ -5,6 +5,10 @@ github.com/PaesslerAG/jsonpath v0.1.0/go.mod h1:4BzmtoM/PI8fPO4aQGIusjGxGir2BzcV github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/bombsimon/logrusr/v3 v3.1.0 h1:zORbLM943D+hDMGgyjMhSAz/iDz86ZV72qaak/CA0zQ= github.com/bombsimon/logrusr/v3 v3.1.0/go.mod h1:PksPPgSFEL2I52pla2glgCyyd2OqOHAnFF5E+g8Ixco= +github.com/bool64/dev v0.2.32 h1:DRZtloaoH1Igky3zphaUHV9+SLIV2H3lsf78JsJHFg0= +github.com/bool64/dev v0.2.32/go.mod h1:iJbh1y/HkunEPhgebWRNcs8wfGq7sjvJ6W5iabL8ACg= +github.com/bool64/shared v0.1.5 h1:fp3eUhBsrSjNCQPcSdQqZxxh9bBwrYiZ+zOKFkM0/2E= +github.com/bool64/shared v0.1.5/go.mod h1:081yz68YC9jeFB3+Bbmno2RFWvGKv1lPKkMP6MHJlPs= github.com/cbroglie/mustache v1.3.0 h1:sj24GVYl8G7MH4b3zaROGsZnF8X79JqtjMx8/6H/nXM= github.com/cbroglie/mustache v1.3.0/go.mod h1:w58RIHjw/L7DPyRX2CcCTduNmcP1dvztaHP72ciSfh0= github.com/codingconcepts/env v0.0.0-20200821220118-a8fbf8d84482 h1:5/aEFreBh9hH/0G+33xtczJCvMaulqsm9nDuu2BZUEo= @@ -35,6 +39,8 @@ github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaL github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -47,9 +53,13 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20230323073829-e72429f035bd h1:r8yyd+DJDmsUhGrRBxH5Pj7KeFK5l+Y3FsgT8keqKtk= +github.com/google/pprof v0.0.0-20230323073829-e72429f035bd/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= +github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc= @@ -60,8 +70,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konveyor/analyzer-lsp v0.3.0-beta.1.2 h1:yZh5rTZYq1XYzDei3/zwZOqE8XktftaETNycV3Q7ACE= -github.com/konveyor/analyzer-lsp v0.3.0-beta.1.2/go.mod h1:zJCmIq08X0kPvtU8ZSmz+mZmQfBt4hdy9enoEy1AQw4= +github.com/konveyor/analyzer-lsp v0.4.0-alpha.1.0.20240418234858-9a3998676fb6 h1:vgqs1MmvZDEzUHLvacwpW3ptZPS0Wx+yaqVrpGl1qoo= +github.com/konveyor/analyzer-lsp v0.4.0-alpha.1.0.20240418234858-9a3998676fb6/go.mod h1:Cxdhi1mAoz+rjUQmBiRjRyBy1oADavx4BbAZ9BkSwjk= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= @@ -83,6 +93,12 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk= +github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= +github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= +github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= +github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -93,6 +109,8 @@ github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTE github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -113,6 +131,18 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/swaggest/assertjson v1.9.0 h1:dKu0BfJkIxv/xe//mkCrK5yZbs79jL7OVf9Ija7o2xQ= +github.com/swaggest/assertjson v1.9.0/go.mod h1:b+ZKX2VRiUjxfUIal0HDN85W0nHPAYUbYH5WkkSsFsU= +github.com/swaggest/jsonschema-go v0.3.64 h1:HyB41fkA4XP0BZkqWfGap5i2JtRHQGXG/21dGDPbyLM= +github.com/swaggest/jsonschema-go v0.3.64/go.mod h1:DYuKqdpms/edvywsX6p1zHXCZkdwB28wRaBdFCe3Duw= +github.com/swaggest/openapi-go v0.2.45 h1:LOMAEleKVLg4E86lSCyioJK7ltjWRx50AaP4LZIbJ+Q= +github.com/swaggest/openapi-go v0.2.45/go.mod h1:/ykzNtS1ZO7X43OnEtyisMktxCiawQLyGd08rkjV68U= +github.com/swaggest/refl v1.3.0 h1:PEUWIku+ZznYfsoyheF97ypSduvMApYyGkYF3nabS0I= +github.com/swaggest/refl v1.3.0/go.mod h1:3Ujvbmh1pfSbDYjC6JGG7nMgPvpG0ehQL4iNonnLNbg= +github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -130,6 +160,8 @@ go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8 go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= @@ -179,6 +211,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -207,6 +241,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/api v0.26.10 h1:skTnrDR0r8dg4MMLf6YZIzugxNM0BjFsWKPkNc5kOvk= +k8s.io/api v0.26.10/go.mod h1:ou/H3yviqrHtP/DSPVTfsc7qNfmU06OhajytJfYXkXw= k8s.io/apimachinery v0.27.3 h1:Ubye8oBufD04l9QnNtW05idcOe9Z3GQN8+7PqmuVcUM= k8s.io/apimachinery v0.27.3/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= @@ -219,3 +255,5 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMm sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/pkg/container/container.go b/pkg/container/container.go index 127f45c..8df0020 100644 --- a/pkg/container/container.go +++ b/pkg/container/container.go @@ -20,8 +20,9 @@ import ( type container struct { stdout []io.Writer stderr []io.Writer - name string + Name string image string + NetworkName string entrypointBin string entrypointArgs []string workdir string @@ -31,6 +32,7 @@ type container struct { // map of source -> dest paths to mount volumes map[string]string cFlag bool + detached bool log logr.Logger containerToolBin string reproducerCmd *string @@ -46,7 +48,13 @@ func WithImage(i string) Option { func WithName(n string) Option { return func(c *container) { - c.name = n + c.Name = n + } +} + +func WithNetwork(w string) Option { + return func(c *container) { + c.NetworkName = w } } @@ -98,6 +106,12 @@ func WithcFlag(cl bool) Option { } } +func WithDetachedMode(d bool) Option { + return func(c *container) { + c.detached = d + } +} + func WithCleanup(cl bool) Option { return func(c *container) { c.cleanup = cl @@ -122,7 +136,7 @@ func WithReproduceCmd(r *string) Option { } } -func randomName() string { +func RandomName() string { rand.Seed(int64(time.Now().Nanosecond())) charset := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" b := make([]byte, 16) @@ -141,11 +155,13 @@ func NewContainer() *container { stdout: []io.Writer{os.Stdout}, env: map[string]string{}, stderr: []io.Writer{os.Stderr}, - name: randomName(), + Name: RandomName(), + NetworkName: "", // by default, remove the container after run() - cleanup: true, - cFlag: false, - log: logr.Discard(), + cleanup: true, + cFlag: false, + detached: false, + log: logr.Discard(), } } @@ -159,12 +175,19 @@ func (c *container) Run(ctx context.Context, opts ...Option) error { } args := []string{"run"} os := runtime.GOOS + if c.detached { + args = append(args, "-d") + } if c.cleanup { args = append(args, "--rm") } - if c.name != "" { + if c.Name != "" { args = append(args, "--name") - args = append(args, c.name) + args = append(args, c.Name) + } + if c.NetworkName != "" { + args = append(args, "--network") + args = append(args, c.NetworkName) } if c.entrypointBin != "" { args = append(args, "--entrypoint") @@ -228,8 +251,8 @@ func (c *container) Rm(ctx context.Context) error { cmd := exec.CommandContext( ctx, c.containerToolBin, - "rm", c.name) + "rm", c.Name) c.log.Info("removing container", - "container tool", c.containerToolBin, "name", c.name) + "container tool", c.containerToolBin, "name", c.Name) return cmd.Run() } diff --git a/test-data/analysis-output.yaml b/test-data/analysis-output.yaml index bf4d0bb..4268b03 100644 --- a/test-data/analysis-output.yaml +++ b/test-data/analysis-output.yaml @@ -1,31 +1,29 @@ - description: This ruleset detects Java Native Interface (JNI) and Java Native Access (JNA) code, which may be problematic when migrating an application to a cloud environment. violations: jni-native-code-00000-test: - description: |- - Java native libraries (JNI, JNA) - Java native libraries might not run in a cloud or container environment.. Recommendations. * Review the purpose of the native library in your application.. * Check whether the native library is compatible with a cloud environment.. * Reuse or embed the native library or application in a cloud environment, for example, in a JBoss module.. * Replace, remove, or rewrite the native library or application using a cloud-compatible equivalent. + description: Java native libraries (JNI, JNA) category: mandatory labels: - - konveyor.io/target=cloud-readiness - - konveyor.io/source - jni + - konveyor.io/source + - konveyor.io/target=cloud-readiness incidents: - uri: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java - message: Java native libraries might not run in a cloud or container environment.. Recommendations. * Review the purpose of the native library in your application.. * Check whether the native library is compatible with a cloud environment.. * Reuse or embed the native library or application in a cloud environment, for example, in a JBoss module.. * Replace, remove, or rewrite the native library or application using a cloud-compatible equivalent. - codeSnip: " 1 package io.konveyor.demo.config;\n 2 \n 3 import java.io.FileInputStream;\n 4 import java.io.InputStream;\n 5 import java.util.Properties;\n 6 \n 7 public class ApplicationConfiguration {\n 8 \n 9 \tprivate Properties config;\n 10 \n 11 \tpublic ApplicationConfiguration() {\n 12 \t\tsuper();\n 13 \t\tthis.config = loadProperties();\n 14 \n 15 \t}\n 16 \n 17 \tprivate Properties loadProperties() {\n 18 \t\tProperties properties = new Properties();\n 19 \n 20 \t\ttry (InputStream inputStream = new FileInputStream(\"/opt/config/persistence.properties\")) {\n 21 \n 22 \t\t\tproperties.load(inputStream);\n 23 \n 24 \t\t} catch (Exception e) {\n 25 \t\t\tSystem.out.println(\"Exception: \" + e);\n 26 \t\t}\n 27 \n 28 \t\treturn properties;\n 29 \t}\n 30 \n 31 \tpublic String getProperty (String name) {\n 32 \t\treturn config.getProperty(name);\n 33 \t}\n 34 \n 35 \n 36 \n 37 }\n" - lineNumber: 13 - variables: - file: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java - kind: Constructor - name: ApplicationConfiguration - - uri: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java - message: Java native libraries might not run in a cloud or container environment.. Recommendations. * Review the purpose of the native library in your application.. * Check whether the native library is compatible with a cloud environment.. * Reuse or embed the native library or application in a cloud environment, for example, in a JBoss module.. * Replace, remove, or rewrite the native library or application using a cloud-compatible equivalent. - codeSnip: " 1 package io.konveyor.demo.config;\n 2 \n 3 import java.io.FileInputStream;\n 4 import java.io.InputStream;\n 5 import java.util.Properties;\n 6 \n 7 public class ApplicationConfiguration {\n 8 \n 9 \tprivate Properties config;\n 10 \n 11 \tpublic ApplicationConfiguration() {\n 12 \t\tsuper();\n 13 \t\tthis.config = loadProperties();\n 14 \n 15 \t}\n 16 \n 17 \tprivate Properties loadProperties() {\n 18 \t\tProperties properties = new Properties();\n 19 \n 20 \t\ttry (InputStream inputStream = new FileInputStream(\"/opt/config/persistence.properties\")) {\n 21 \n 22 \t\t\tproperties.load(inputStream);\n 23 \n 24 \t\t} catch (Exception e) {\n 25 \t\t\tSystem.out.println(\"Exception: \" + e);\n 26 \t\t}\n 27 \n 28 \t\treturn properties;\n 29 \t}\n 30 \n 31 \tpublic String getProperty (String name) {\n 32 \t\treturn config.getProperty(name);\n 33 \t}\n 34 \n 35 \n 36 \n 37 }\n" + message: |- + Java native libraries might not run in a cloud or container environment. + + Recommendations + + * Review the purpose of the native library in your application. + * Check whether the native library is compatible with a cloud environment. + * Reuse or embed the native library or application in a cloud environment, for example, in a JBoss module. + * Replace, remove, or rewrite the native library or application using a cloud-compatible equivalent. lineNumber: 22 variables: file: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java kind: Method name: loadProperties + package: io.konveyor.demo.config links: - url: https://access.redhat.com/solutions/229443 title: How to load native libraries and access them via JNI in EAP (with or without a module) @@ -33,28 +31,29 @@ title: Is it supported to compile the JNI code as 32-bit shared libraries and use it in 64-bit compiled Java code ? effort: 7 - name: azure/springboot - description: Identify Zipkin dependencies. + description: Recommend OpenFeign instead of Feign. skipped: - azure-aws-config-credential-01000 - azure-aws-config-region-02000 - azure-aws-config-s3-03000 - - azure-aws-config-sqs-04000 - azure-aws-config-secret-manager-05000 + - azure-aws-config-sqs-04000 - azure-file-system-01000 - azure-file-system-02000 - azure-file-system-03000 - - azure-password-01000 - azure-java-version-01000 - azure-java-version-02000 - - eap-to-azure-appservice-certificates-001 - azure-logging-0000 - - eap-to-azure-appservice-datasource-driver-01000 - azure-os-specific-00001 - azure-os-specific-00002 + - azure-password-01000 + - eap-to-azure-appservice-certificates-001 + - eap-to-azure-appservice-datasource-driver-01000 - eap-to-azure-appservice-environment-variables-001 - eap-to-azure-appservice-pom-001 - spring-boot-to-azure-cache-redis-01000 - spring-boot-to-azure-cache-redis-02000 + - spring-boot-to-azure-config-server-01000 - spring-boot-to-azure-database-jdbc-01000 - spring-boot-to-azure-database-mongodb-02000 - spring-boot-to-azure-database-r2dbc-03000 @@ -62,22 +61,21 @@ - spring-boot-to-azure-eureka-02000 - spring-boot-to-azure-feign-01000 - spring-boot-to-azure-identity-provider-01000 - - spring-boot-to-azure-config-server-01000 - - spring-boot-to-azure-jms-broker-01000 - - spring-boot-to-azure-schedule-job-01000 - - spring-boot-to-azure-static-content-01000 - - spring-boot-to-azure-zipkin-01000 - spring-boot-to-azure-java-fx-01000 - spring-boot-to-azure-jks-01000 + - spring-boot-to-azure-jms-broker-01000 + - spring-boot-to-azure-mq-config-artemis-01000 - spring-boot-to-azure-mq-config-kafka-01000 - spring-boot-to-azure-mq-config-rabbitmq-01000 - - spring-boot-to-azure-mq-config-artemis-01000 - spring-boot-to-azure-port-01000 + - spring-boot-to-azure-schedule-job-01000 + - spring-boot-to-azure-static-content-01000 - spring-boot-to-azure-swing-01000 - spring-boot-to-azure-system-config-01000 - spring-boot-to-azure-version-01000 - spring-boot-to-azure-version-02000 - spring-boot-to-azure-version-03000 + - spring-boot-to-azure-zipkin-01000 - spring-cloud-to-azure-version-01000 - spring-cloud-to-azure-version-02000 - spring-cloud-to-azure-version-03000 @@ -85,6 +83,21 @@ - name: camel3 description: Rules for changes between Camel 3.0 and Camel 4.0 skipped: + - xml-changed-camel41-00003 + - xml-changed-camel41-00004 + - xml-changed-camel41-00005 + - xml-changed-camel41-00006 + - xml-changed-camel41-00007 + - xml-changed-camel41-00008 + - xml-changed-camel41-00009 + - xml-changed-camel41-00010 + - xml-changed-camel41-00011 + - xml-changed-camel41-00012 + - xml-changed-camel41-00013 + - xml-changed-camel41-00014 + - xml-changed-camel41-00015 + - xml-changedcomponent-camel4-00001 + - xml-changedcomponent-camel4-00002 - xml-removed-camel4-00001 - xml-removed-camel4-00002 - xml-removed-camel4-00003 @@ -118,10 +131,14 @@ - xml-removed-camel4-00032 - xml-removed-camel4-00033 - xml-removed-camel4-00034 - - xml-changedcomponent-camel4-00001 - - xml-changedcomponent-camel4-00002 + - xml-removed-camel41-00000 + - xml-removed-camel41-00001 + - xml-removed-camel41-00002 + - xml-removed-camel41-00016 + - xml-removed-camel41-00017 + - xml-removed-camel41-00018 - name: camel3/camel2 - description: This ruleset provides analysis with respect to the missing dependencies in Apache Camel 3 due to Java 11 adoption. + description: Rules for changes in XML file (e.g. pom.xml) to run on Apache Camel 3 skipped: - component-changes-00019 - java-dsl-changes-00001 @@ -188,15 +205,22 @@ - xml-removed-components-00003 - xml-removed-components-00004 - xml-removed-components-00005 + - xml-removed-components-00005-01 - xml-removed-components-00006 - xml-removed-components-00007 - - xml-removed-components-00008 - - xml-removed-components-00005-01 - xml-removed-components-00007-01 + - xml-removed-components-00008 - xml-removed-components-00008-01 - xml-renamed-components-00000 - xml-renamed-components-00001 + - xml-renamed-components-000019 - xml-renamed-components-00002 + - xml-renamed-components-000020 + - xml-renamed-components-000023 + - xml-renamed-components-000024 + - xml-renamed-components-000027 + - xml-renamed-components-000028 + - xml-renamed-components-000029 - xml-renamed-components-00003 - xml-renamed-components-00004 - xml-renamed-components-00005 @@ -213,34 +237,153 @@ - xml-renamed-components-00016 - xml-renamed-components-00017 - xml-renamed-components-00018 - - xml-renamed-components-000019 - - xml-renamed-components-000020 - xml-renamed-components-00021 - xml-renamed-components-00022 - - xml-renamed-components-000023 - - xml-renamed-components-000024 - xml-renamed-components-00025 - xml-renamed-components-00026 - - xml-renamed-components-000027 - - xml-renamed-components-000028 - - xml-renamed-components-000029 +- name: cloud-readiness + description: This ruleset detects logging configurations that may be problematic when migrating an application to a cloud environment. + violations: + jni-native-code-00000: + description: Java native libraries (JNI, JNA) + category: mandatory + labels: + - jni + - konveyor.io/source + - konveyor.io/target=cloud-readiness + incidents: + - uri: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java + message: "\n Java native libraries might not run in a cloud or container environment.\n\n Recommendations\n\n * Review the purpose of the native library in your application.\n * Check whether the native library is compatible with a cloud environment.\n * Reuse or embed the native library or application in a cloud environment, for example, in a JBoss module.\n * Replace, remove, or rewrite the native library or application using a cloud-compatible equivalent.\n " + lineNumber: 22 + variables: + file: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java + kind: Method + name: loadProperties + package: io.konveyor.demo.config + links: + - url: https://access.redhat.com/solutions/229443 + title: How to load native libraries and access them via JNI in EAP (with or without a module) + - url: https://access.redhat.com/solutions/1444643 + title: Is it supported to compile the JNI code as 32-bit shared libraries and use it in 64-bit compiled Java code ? + effort: 7 + local-storage-00001: + description: File system - Java IO + category: mandatory + labels: + - konveyor.io/source + - konveyor.io/target=cloud-readiness + - storage + incidents: + - uri: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java + message: "\n An application running inside a container could lose access to a file in local storage.\n\n Recommendations\n\n The following recommendations depend on the function of the file in local storage:\n\n * Logging: Log to standard output and use a centralized log collector to analyze the logs.\n * Caching: Use a cache backing service.\n * Configuration: Store configuration settings in environment variables so that they can be updated without code changes.\n * Data storage: Use a database backing service for relational data or use a persistent data storage system.\n * Temporary data storage: Use the file system of a running container as a brief, single-transaction cache.\n " + lineNumber: 20 + variables: + file: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java + kind: Constructor + name: loadProperties + package: io.konveyor.demo.config + links: + - url: https://docs.openshift.com/container-platform/4.5/builds/creating-build-inputs.html#builds-input-secrets-configmaps_creating-build-inputs + title: 'OpenShift Container Platform: Input secrets and ConfigMaps' + - url: https://docs.openshift.com/container-platform/4.5/logging/cluster-logging.html + title: 'OpenShift Container Platform: Understanding cluster logging' + - url: https://docs.openshift.com/container-platform/4.5/storage/understanding-persistent-storage.html + title: 'OpenShift Container Platform: Understanding persistent storage' + - url: https://12factor.net/backing-services + title: 'Twelve-Factor App: Backing services' + - url: https://12factor.net/config + title: 'Twelve-Factor App: Config' + - url: https://12factor.net/logs + title: 'Twelve-Factor App: Logs' + effort: 1 + unmatched: + - embedded-cache-libraries-01000 + - embedded-cache-libraries-01000 + - embedded-cache-libraries-02000 + - embedded-cache-libraries-02000 + - embedded-cache-libraries-03000 + - embedded-cache-libraries-03000 + - embedded-cache-libraries-04000 + - embedded-cache-libraries-04000 + - embedded-cache-libraries-04000 + - embedded-cache-libraries-05000 + - embedded-cache-libraries-05000 + - embedded-cache-libraries-06000 + - embedded-cache-libraries-06000 + - embedded-cache-libraries-07000 + - embedded-cache-libraries-07000 + - embedded-cache-libraries-08000 + - embedded-cache-libraries-08000 + - embedded-cache-libraries-09000 + - embedded-cache-libraries-09000 + - embedded-cache-libraries-10000 + - embedded-cache-libraries-10000 + - embedded-cache-libraries-11000 + - embedded-cache-libraries-11000 + - embedded-cache-libraries-12000 + - embedded-cache-libraries-12000 + - embedded-cache-libraries-13000 + - embedded-cache-libraries-13000 + - embedded-cache-libraries-14000 + - embedded-cache-libraries-14000 + - embedded-cache-libraries-15000 + - embedded-cache-libraries-15000 + - embedded-cache-libraries-16000 + - java-corba-00000 + - java-rmi-00000 + - java-rmi-00000 + - java-rmi-00000 + - java-rmi-00000 + - java-rmi-00001 + - java-rmi-00001 + - java-rpc-00000 + - java-rpc-00000 + - jca-00000 + - jca-00000 + - jni-native-code-00001 + - local-storage-00002 + - local-storage-00002 + - local-storage-00004 + - local-storage-00004 + - local-storage-00005 + - local-storage-00005 + - local-storage-00006 + - localhost-http-00001 + - localhost-jdbc-00002 + - localhost-ws-00003 + - logging-0000 + - logging-0000 + - logging-0000 + - logging-0000 + - logging-0001 + - logging-0001 + - logging-0001 + - logging-0001 + - mail-00000 + - mail-00000 + - session-00000 + - session-00000 + - session-00001 + - session-00001 + - socket-communication-00000 + - socket-communication-00000 + - socket-communication-00001 + - socket-communication-00001 - name: discovery-rules tags: - - Properties + - EJB XML - Java Source - Maven XML - - EJB XML + - Properties violations: hardcoded-ip-address: - description: |- - Hardcoded IP Address - When migrating environments, hard-coded IP addresses may need to be modified or eliminated. + description: Hardcoded IP Address category: mandatory labels: - - konveyor.io/target=cloud-readiness - discovery + - konveyor.io/target=cloud-readiness incidents: - - uri: file:///tmp/source-code/target/classes/persistence.properties + - uri: file:///opt/input/source/src/main/resources/persistence.properties message: When migrating environments, hard-coded IP addresses may need to be modified or eliminated. codeSnip: |2 1 jdbc.driverClassName=oracle.jdbc.driver.OracleDriver @@ -252,7 +395,7 @@ lineNumber: 2 variables: matchingText: 169.60.225.216 - - uri: file:///tmp/source-code/src/main/resources/persistence.properties + - uri: file:///opt/input/source/target/classes/persistence.properties message: When migrating environments, hard-coded IP addresses may need to be modified or eliminated. codeSnip: |2 1 jdbc.driverClassName=oracle.jdbc.driver.OracleDriver @@ -268,8 +411,8 @@ unmatched: - discover-license - discover-manifest-file - - windup-discover-spring-configuration - windup-discover-jpa-configuration + - windup-discover-spring-configuration - windup-discover-web-configuration - name: droolsjbpm description: This ruleset provides help for migrating to a unified KIE (Knowledge Is Everything) API in the upgrade from version 5 to 6. @@ -291,379 +434,27 @@ - kie-api-01014 - kie-api-01015 - kie-api-01016 -- name: eap6/resin - description: This ruleset provides analysis of Resin proprietary xml files that may require individual attention when migrating to JBoss EAP 6+. +- name: eap7/weblogic/tests/data skipped: - - commonj-01000 - - commonj-04000 - - commonj-02000 - - commonj-03000 - - commonj-05000 - - commonj-06000 - - commonj-07000 - - xml-glassfish-02000 - - xml-glassfish-03000 - - java-ee-jaxrpc-00000 - - seam-java-00000 - - seam-java-00170 - - seam-java-00010 - - seam-java-00030 - - seam-java-00040 - - seam-java-00050 - - seam-java-00060 - - seam-java-00061 - - seam-java-00070 - - seam-java-00071 - - seam-java-00080 - - seam-java-00090 - - seam-java-00091 - - seam-java-00100 - - seam-java-00110 - - seam-java-00120 - - seam-java-00130 - - seam-java-00140 - - seam-java-00150 - - seam-java-00160 - - seam-java-00180 - - seam-java-00190 - - seam-java-00200 - - seam-java-00210 - - seam-java-00220 - - seam-java-00230 - - seam-java-00240 - - seam-java-00250 - - seam-java-00260 - - seam-java-00270 - - seam-ui-jsf-00001 - - seam-ui-jsf-00002 - - seam-ui-jsf-00001-01 - - seam-ui-jsf-01000 - - seam-ui-jsf-01001 - - seam-ui-jsf-01002 - - seam-ui-jsf-01003 - - seam-ui-jsf-01004 - - seam-ui-jsf-01005 - - seam-ui-jsf-01006 - - seam-ui-jsf-01007 - - seam-ui-jsf-01008 - - seam-ui-jsf-01009 - - seam-ui-jsf-01010 - - seam-ui-jsf-01011 - - seam-ui-jsf-01012 - - seam-ui-jsf-01013 - - seam-ui-jsf-01014 - - seam-ui-jsf-01015 - - seam-ui-jsf-01016 - - seam-ui-jsf-01017 - - seam-ui-jsf-01018 - - seam-ui-jsf-01019 - - seam-ui-jsf-01020 - - seam-ui-jsf-01021 - - seam-ui-jsf-01022 - - seam-ui-jsf-01023 - - seam-ui-jsf-01024 - - seam-ui-jsf-01025 - - seam-ui-jsf-01026 - - seam-ui-jsf-01027 - - seam-ui-jsf-01028 - - seam-ui-jsf-01029 - - xml-webservices-01000 - - xml-webservices-02000 - - xml-webservices-03000 - - xml-webservices-04000 - - xml-webservices-05000 - - xml-webservices-07000 - - xml-webservices-08000 - - xml-webservices-09000 - - xml-webservices-10000 - - xml-webservices-06000 - - xml-webservices-06001 - - eap4-eap6-25000 - - eap4-eap6-26000 - - eap4-eap6-27000 - - eap4-eap6-28000 - - eap4-eap6-29000 - - eap4-eap6-30000 - - eap4-eap6-31000 - - eap4-eap6-32000 - - eap4-eap6-33000 - - eap4-eap6-34000 - - eap4-eap6-35000 - - eap4-eap6-36000 - - eap4-eap6-37000 - - eap4-eap6-38000 - - eap4-eap6-39000 - - eap4-eap6-40000 - - eap4-eap6-41000 - - eap4-eap6-42000 - - jboss-eap5-java-01000 - - jboss-eap5-java-02000 - - jboss-eap5-java-04000 - - jboss-eap5-java-05000 - - jboss-eap5-java-06000 - - jboss-eap5-java-07000 - - jboss-eap5-java-08000 - - jboss-eap5-java-08100 - - jboss-eap5-java-08200 - - jboss-eap5-java-08300 - - jboss-eap5-java-08400 - - jboss-eap5-java-08500 - - jboss-eap5-java-08600 - - jboss-eap5-java-08700 - - jboss-eap5-java-08800 - - jboss-eap5-java-08900 - - jboss-eap5-java-09000 - - jboss-eap5-java-09100 - - jboss-eap5-xml-01000 - - jboss-eap5-xml-03000 - - jboss-eap5-xml-05000 - - jboss-eap5-xml-06000 - - jboss-eap5-xml-07000 - - jboss-eap5-xml-08000 - - jboss-eap5-xml-09000 - - jboss-eap5-7-xml-10000 - - jboss-eap5-xml-11000 - - jboss-eap5-xml-12000 - - jboss-eap5-xml-13000 - - jboss-eap5-xml-16000 - - jboss-eap5-xml-17000 - - jboss-eap5-xml-18000 - - jboss-eap5-xml-20000 - - jboss-eap5-xml-14000 - - resteasy-eap5-000001 - - jotm-00001 - - jrun-catchall-00000 - - jrun-catchall-00001 - - xml-jrun-01000 - - xml-jrun-02000 - - jsp-01000 - - log4j-02000 - - log4j-01000 - - log4j-03000 - - xml-orion-01000 - - xml-orion-02000 - - xml-orion-03000 - - xml-resin-01000 - - environment-dependent-calls-03500 - - environment-dependent-calls-01000 - - environment-dependent-calls-02000 - - environment-dependent-calls-03000 - - environment-dependent-calls-04000 - - environment-dependent-calls-04001 - - environment-dependent-calls-05000 - - generic-catchall-00000 - - generic-catchall-00001 - - generic-catchall-00002 - - generic-catchall-00003 - - generic-catchall-00100 - - generic-catchall-00200 - - generic-catchall-00300 - - generic-catchall-00400 - - generic-catchall-00500 - - generic-catchall-00600 - - generic-catchall-00700 - - generic-catchall-00900 - - weblogic-catchall-01000 - - weblogic-catchall-02000 - - weblogic-catchall-03000 - - weblogic-catchall-06000 - - weblogic-catchall-06500 - - weblogic-ejb-01000 - - weblogic-ejb-02000 - - weblogic-ejb-03000 - - weblogic-ejb-04000 - - weblogic-jms-00000 - - weblogic-jms-01000 - - weblogic-jms-02000 - - weblogic-jms-03000 - - weblogic-jms-04000 - - weblogic-jms-05000 - - weblogic-jms-06000 - - weblogic-jms-07000 - - weblogic-jms-08000 - - weblogic-services-01000 - - weblogic-services-02000 - - weblogic-services-03000 - - weblogic-webapp-01000 - - weblogic-webapp-02000 - - weblogic-webapp-03000 - - weblogic-webapp-04000 - - weblogic-webapp-05000 - - weblogic-webapp-06000 - - weblogic-webapp-07000 - - weblogic-webapp-08000 - - weblogic-webapp-09000 - - weblogic-webservices-01000 - - weblogic-webservices-02000 - - weblogic-webservices-03000 - - weblogic-webservices-04000 - - weblogic-webservices-05000 - - weblogic-webservices-06000 - - weblogic-webservices-07000 - - weblogic-xml-descriptor-01000 - - weblogic-xml-descriptor-02000 - - weblogic-xml-descriptor-07000 - - weblogic-xml-descriptor-08000 - - weblogic-xml-descriptor-09000 - - weblogic-xml-descriptor-11000 - - weblogic-xml-descriptor-12000 - - weblogic-xml-descriptor-14000 - - weblogic-xml-descriptor-15000 - - weblogic-xml-descriptor-16000 - - weblogic-xml-descriptor-17000 - - weblogic-xml-descriptor-18000 - - weblogic-xml-descriptor-03000 - - weblogic-xml-descriptor-04000 - - weblogic-xml-descriptor-06001 - - weblogic-xml-descriptor-10000 - - weblogic-xml-descriptor-19000 - - weblogic-01000 - - weblogic-02000 - - weblogic-03000 - - weblogic-04000 - - weblogic-05000 - - weblogic-06000 - - weblogic-07000 - - weblogic-08000 - - weblogic-09000 - - weblogic-10000 - - weblogic-11000 - - weblogic-12000 - - weblogic-13000 - - weblogic-15000 - - weblogic-016000 - - weblogic-017000 - - websphere-catchall-db2-00000 - - websphere-catchall-00000 - - websphere-catchall-00001 - - websphere-jms-00000 - - websphere-jms-01000 - - websphere-jms-02000 - - websphere-jms-02500 - - websphere-jms-03000 - - websphere-jms-04000 - - websphere-mq-00000 - - websphere-mq-01000 - - websphere-mq-02000 - - websphere-mqe-00000 - - websphere-mqe-01000 - - websphere-mqe-02000 - - websphere-mqe-03000 - - websphere-mqe-04000 - - websphere-other-01000 - - websphere-other-02000 - - websphere-xml-01000 - - websphere-xml-02000 - - websphere-xml-07000 - - websphere-xml-08000 - - websphere-xml-09000 - - websphere-xml-03500 - - websphere-xml-06000 -- name: eap7/websphere - description: Provides analysis of WebSphere proprietary classes and constructs that may require individual attention when migrating to JBoss EAP 7+. - skipped: - - websphere-jms-eap7-00000 - - websphere-jms-eap7-01000 - - websphere-jms-eap7-02000 - - websphere-jms-eap7-02500 - - websphere-jms-eap7-03000 - - websphere-jms-eap7-04000 - - websphere-mq-eap7-00000 - - websphere-mq-eap7-01000 - - websphere-mq-eap7-02000 - - websphere-mqe-eap7-00000 - - websphere-mqe-eap7-01000 - - websphere-mqe-eap7-02000 - - websphere-mqe-eap7-03000 - - websphere-mqe-eap7-04000 - - websphere-other-eap7-01000 - - websphere-other-eap7-02000 + - base64-01000 + - deprecated-singletonpolicy-00001 + - eap6-08000 + - eap6-11000 + - eap6-12000 + - eap6-xml-05000 + - eap6-xml-06000 - eap7-websphere-xml-01000 - eap7-websphere-xml-02000 + - eap7-websphere-xml-03500 + - eap7-websphere-xml-06000 - eap7-websphere-xml-07000 - eap7-websphere-xml-08000 - eap7-websphere-xml-09000 - - eap7-websphere-xml-03500 - - eap7-websphere-xml-06000 - - jboss-eap4and5to6and7-java-01000 - - jboss-eap4and5to6and7-java-02000 - - jboss-eap4and5to6and7-java-03000 - - jboss-eap4and5to6and7-xml-01000 - - jboss-eap4and5to6and7-xml-02000 - - jboss-eap4and5to6and7-xml-03000 - - jboss-eap4and5to6and7-xml-04000 - - jboss-eap4and5to6and7-xml-05000 - - jboss-eap4and5to6and7-xml-06000 - - jboss-eap4and5to6and7-xml-07000 - - base64-01000 - - jaxrpc-00000 - - jboss-eap5-7-java-02000 - - jboss-eap5-7-java-03000 - - jboss-eap5-7-java-05000 - - jboss-eap5-7-java-06000 - - jboss-eap5-7-java-07000 - - jboss-eap5-7-java-08000 - - jboss-eap5-7-java-08100 - - jboss-eap5-7-java-08200 - - jboss-eap5-7-java-08300 - - jboss-eap5-7-java-08400 - - jboss-eap5-7-java-08500 - - jboss-eap5-7-java-08600 - - jboss-eap5-7-java-08700 - - jboss-eap5-7-java-08800 - - jboss-eap5-7-java-08900 - - jboss-eap5-7-java-09000 - - jboss-eap5-7-java-09100 - - jboss-eap5-7-xml-01000 - - jboss-eap5-7-xml-10000 - - jboss-eap5-7-xml-13000 - - jboss-eap5-7-xml-16000 - - jboss-eap5-7-xml-14000 - - jboss-eap5and6to7-java-01000 - - jboss-eap5and6to7-java-02000 - - jboss-eap5and6to7-java-04000 - - jboss-eap5and6to7-java-08000 - - jboss-eap5and6to7-java-03000 - - jboss-eap5and6to7-java-05000 - - jboss-eap5and6to7-java-06000 - - jboss-eap5and6to7-java-07000 - - jboss-eap5and6to7-java-09000 - - jboss-eap5and6to7-xml-05000 - - jboss-eap5and6to7-xml-06000 - - jboss-eap5and6to7-xml-07000 - - jboss-eap5and6to7-xml-09000 - - jboss-eap5and6to7-xml-12000 - - jboss-eap5and6to7-xml-17000 - - jboss-eap5and6to7-xml-18000 - - jboss-eap5and6to7-xml-34000 - - jboss-eap5and6to7-xml-37000 - - jboss-eap5and6to7-xml-31000 - - jboss-eap5and6to7-xml-31500 - - jboss-eap5and6to7-xml-32000 - - jboss-eap5and6to7-xml-33000 - - jboss-eap5and6to7-xml-38000 - - jboss-eap5and6to7-xml-38001 - - jboss-eap5and6to7-xml-38002 - - jboss-eap5and6to7-xml-38003 - - jboss-eap5and6to7-xml-38004 - - jboss-eap5and6to7-xml-38005 - - jboss-eap5and6to7-xml-38006 - - jboss-eap5and6to7-xml-38007 - - jboss-eap5and6to7-xml-39000 - - jboss-eap5and6to7-xml-40000 - - resteasy-eap5and6to7-000018 - - eap6-xml-05000 - - eap6-xml-06000 - - eap6-08000 - - eap6-08001 - - eap6-08002 - - eap6-11000 - - eap6-12000 - - hibernate4-xml-00001 - - hibernate4-xml-00002 - - hibernate4-xml-00003 - - hibernate4-xml-00004 - - hibernate4-xml-00005 + - embedded-framework-libraries-01000 + - embedded-framework-libraries-02000 + - embedded-framework-libraries-04000 + - embedded-framework-libraries-05000 + - embedded-framework-libraries-06000 - hibernate4-00001 - hibernate4-00002 - hibernate4-00003 @@ -701,6 +492,34 @@ - hibernate4-00038 - hibernate4-00039 - hibernate4-00040 + - hibernate4-xml-00001 + - hibernate4-xml-00002 + - hibernate4-xml-00003 + - hibernate4-xml-00004 + - hibernate4-xml-00005 + - hibernate50-51-00000 + - hibernate50-51-00100 + - hibernate51-53-00001 + - hibernate51-53-00100 + - hibernate51-53-00300 + - hibernate51-53-00400 + - hibernate51-53-00401 + - hibernate51-53-00402 + - hibernate51-53-00403 + - hibernate51-53-00404 + - hibernate51-53-00405 + - hibernate51-53-00406 + - hibernate51-53-00407 + - hibernate51-53-00500 + - hibernate51-53-00600 + - hibernate51-53-00700 + - hibernate51-53-00701 + - hibernate51-53-00702 + - hibernate51-53-00800 + - hibernate51-53-01000 + - hibernate51-53-01001 + - hibernate51-53-01100 + - hibernate51-53-01200 - hsearch-00000 - hsearch-00001 - hsearch-00002 @@ -763,6 +582,97 @@ - hsearch-00239 - hsearch-00240 - jax-ws-00000 + - jaxrpc-00000 + - jboss-eap4and5to6and7-java-01000 + - jboss-eap4and5to6and7-java-02000 + - jboss-eap4and5to6and7-java-03000 + - jboss-eap4and5to6and7-xml-01000 + - jboss-eap4and5to6and7-xml-02000 + - jboss-eap4and5to6and7-xml-03000 + - jboss-eap4and5to6and7-xml-04000 + - jboss-eap4and5to6and7-xml-05000 + - jboss-eap4and5to6and7-xml-06000 + - jboss-eap4and5to6and7-xml-07000 + - jboss-eap5-7-java-02000 + - jboss-eap5-7-java-03000 + - jboss-eap5-7-java-05000 + - jboss-eap5-7-java-06000 + - jboss-eap5-7-java-07000 + - jboss-eap5-7-java-08000 + - jboss-eap5-7-java-08100 + - jboss-eap5-7-java-08200 + - jboss-eap5-7-java-08300 + - jboss-eap5-7-java-08400 + - jboss-eap5-7-java-08500 + - jboss-eap5-7-java-08600 + - jboss-eap5-7-java-08700 + - jboss-eap5-7-java-08800 + - jboss-eap5-7-java-08900 + - jboss-eap5-7-java-09000 + - jboss-eap5-7-java-09100 + - jboss-eap5-7-xml-01000 + - jboss-eap5-7-xml-10000 + - jboss-eap5-7-xml-13000 + - jboss-eap5-7-xml-14000 + - jboss-eap5-7-xml-16000 + - jboss-eap5and6to7-java-01000 + - jboss-eap5and6to7-java-02000 + - jboss-eap5and6to7-java-03000 + - jboss-eap5and6to7-java-04000 + - jboss-eap5and6to7-java-05000 + - jboss-eap5and6to7-java-06000 + - jboss-eap5and6to7-java-07000 + - jboss-eap5and6to7-java-08000 + - jboss-eap5and6to7-java-09000 + - jboss-eap5and6to7-xml-05000 + - jboss-eap5and6to7-xml-06000 + - jboss-eap5and6to7-xml-07000 + - jboss-eap5and6to7-xml-09000 + - jboss-eap5and6to7-xml-12000 + - jboss-eap5and6to7-xml-17000 + - jboss-eap5and6to7-xml-18000 + - jboss-eap5and6to7-xml-31000 + - jboss-eap5and6to7-xml-31500 + - jboss-eap5and6to7-xml-32000 + - jboss-eap5and6to7-xml-33000 + - jboss-eap5and6to7-xml-34000 + - jboss-eap5and6to7-xml-37000 + - jboss-eap5and6to7-xml-38000 + - jboss-eap5and6to7-xml-38001 + - jboss-eap5and6to7-xml-38002 + - jboss-eap5and6to7-xml-38003 + - jboss-eap5and6to7-xml-38004 + - jboss-eap5and6to7-xml-38005 + - jboss-eap5and6to7-xml-38006 + - jboss-eap5and6to7-xml-38007 + - jboss-eap5and6to7-xml-39000 + - jboss-eap5and6to7-xml-40000 + - maven-artemis-jms-client-00001 + - maven-javax-to-jakarta-00001 + - maven-javax-to-jakarta-00002 + - maven-javax-to-jakarta-00003 + - maven-javax-to-jakarta-00004 + - maven-javax-to-jakarta-00005 + - maven-javax-to-jakarta-00006 + - maven-javax-to-jakarta-00007 + - maven-javax-to-jakarta-00008 + - maven-javax-to-jakarta-00010 + - maven-javax-to-jakarta-00011 + - maven-javax-to-jakarta-00012 + - maven-javax-to-jakarta-00013 + - maven-javax-to-jakarta-00014 + - maven-javax-to-jakarta-00015 + - maven-javax-to-jakarta-00016 + - maven-javax-to-jakarta-00017 + - maven-jboss-rmi-api_1.0_spec-00001 + - microprofile_removed_from_eap-00001 + - microprofile_removed_from_eap-00001-01 + - microprofile_removed_from_eap-00002 + - microprofile_removed_from_eap-00003 + - microprofile_removed_from_eap-00004 + - move-to-microprofile-rest-client-1.3-00001 + - picketlink25-00000 + - resteasy-eap5and6to7-000018 - resteasy-eap6-000001 - resteasy-eap6-000002 - resteasy-eap6-000003 @@ -811,65 +721,24 @@ - resteasy-eap6-000140 - resteasy-eap6-000141 - resteasy-eap6-000142 - - ws-security-00000 - - ws-security-00001 - - ws-security-00002 - - hibernate50-51-00000 - - hibernate50-51-00100 - - hibernate51-53-00001 - - hibernate51-53-00100 - - hibernate51-53-00300 - - hibernate51-53-00400 - - hibernate51-53-00401 - - hibernate51-53-00402 - - hibernate51-53-00403 - - hibernate51-53-00404 - - hibernate51-53-00405 - - hibernate51-53-00406 - - hibernate51-53-00407 - - hibernate51-53-00500 - - hibernate51-53-00600 - - hibernate51-53-00700 - - hibernate51-53-00701 - - hibernate51-53-00702 - - hibernate51-53-00800 - - hibernate51-53-01000 - - hibernate51-53-01001 - - hibernate51-53-01100 - - hibernate51-53-01200 - - picketlink25-00000 - resteasy30-36-00001 - - deprecated-singletonpolicy-00001 - - maven-artemis-jms-client-00001 - - maven-javax-to-jakarta-00001 - - maven-javax-to-jakarta-00002 - - maven-javax-to-jakarta-00003 - - maven-javax-to-jakarta-00004 - - maven-javax-to-jakarta-00005 - - maven-javax-to-jakarta-00006 - - maven-javax-to-jakarta-00007 - - maven-javax-to-jakarta-00008 - - maven-javax-to-jakarta-00010 - - maven-javax-to-jakarta-00011 - - maven-javax-to-jakarta-00012 - - maven-javax-to-jakarta-00013 - - maven-javax-to-jakarta-00014 - - maven-javax-to-jakarta-00015 - - maven-javax-to-jakarta-00016 - - maven-javax-to-jakarta-00017 - - maven-jboss-rmi-api_1.0_spec-00001 - - move-to-microprofile-rest-client-1.3-00001 - singleton-sessionbean-00001 - - microprofile_removed_from_eap-00001 - - microprofile_removed_from_eap-00002 - - microprofile_removed_from_eap-00003 - - microprofile_removed_from_eap-00004 - - microprofile_removed_from_eap-00001-01 - - embedded-framework-libraries-01000 - - embedded-framework-libraries-02000 - - embedded-framework-libraries-04000 - - embedded-framework-libraries-05000 - - embedded-framework-libraries-06000 + - weblogic-eap7-01000 + - weblogic-eap7-016000 + - weblogic-eap7-017000 + - weblogic-eap7-02000 + - weblogic-eap7-03000 + - weblogic-eap7-04000 + - weblogic-eap7-05000 + - weblogic-eap7-06000 + - weblogic-eap7-07000 + - weblogic-eap7-08000 + - weblogic-eap7-09000 + - weblogic-eap7-10000 + - weblogic-eap7-11000 + - weblogic-eap7-12000 + - weblogic-eap7-13000 + - weblogic-eap7-15000 - weblogic-jms-eap7-00000 - weblogic-jms-eap7-01000 - weblogic-jms-eap7-02000 @@ -891,18 +760,23 @@ - weblogic-webapp-eap7-07000 - weblogic-webapp-eap7-08000 - weblogic-webapp-eap7-09000 + - weblogic-webservices-07000 - weblogic-webservices-eap7-01000 - weblogic-webservices-eap7-02000 - weblogic-webservices-eap7-03000 - weblogic-webservices-eap7-04000 - weblogic-webservices-eap7-05000 - weblogic-webservices-eap7-06000 - - weblogic-webservices-07000 + - weblogic-xml-descriptor-19000 - weblogic-xml-descriptor-eap7-01000 - weblogic-xml-descriptor-eap7-02000 + - weblogic-xml-descriptor-eap7-03000 + - weblogic-xml-descriptor-eap7-04000 + - weblogic-xml-descriptor-eap7-06001 - weblogic-xml-descriptor-eap7-07000 - weblogic-xml-descriptor-eap7-08000 - weblogic-xml-descriptor-eap7-09000 + - weblogic-xml-descriptor-eap7-10000 - weblogic-xml-descriptor-eap7-11000 - weblogic-xml-descriptor-eap7-12000 - weblogic-xml-descriptor-eap7-14000 @@ -910,31 +784,32 @@ - weblogic-xml-descriptor-eap7-16000 - weblogic-xml-descriptor-eap7-17000 - weblogic-xml-descriptor-eap7-18000 - - weblogic-xml-descriptor-eap7-03000 - - weblogic-xml-descriptor-eap7-04000 - - weblogic-xml-descriptor-eap7-06001 - - weblogic-xml-descriptor-eap7-10000 - - weblogic-xml-descriptor-19000 - - weblogic-eap7-01000 - - weblogic-eap7-02000 - - weblogic-eap7-03000 - - weblogic-eap7-04000 - - weblogic-eap7-05000 - - weblogic-eap7-06000 - - weblogic-eap7-07000 - - weblogic-eap7-08000 - - weblogic-eap7-09000 - - weblogic-eap7-10000 - - weblogic-eap7-11000 - - weblogic-eap7-12000 - - weblogic-eap7-13000 - - weblogic-eap7-15000 - - weblogic-eap7-016000 - - weblogic-eap7-017000 -- name: eap8/eap7 - description: This ruleset provides rules to support the migration to hibernate search 6.0. Developed under WINDUPRULE-900 - skipped: - - eap8-faces-00001 + - websphere-jms-eap7-00000 + - websphere-jms-eap7-01000 + - websphere-jms-eap7-02000 + - websphere-jms-eap7-02500 + - websphere-jms-eap7-03000 + - websphere-jms-eap7-04000 + - websphere-mq-eap7-00000 + - websphere-mq-eap7-01000 + - websphere-mq-eap7-02000 + - websphere-mqe-eap7-00000 + - websphere-mqe-eap7-01000 + - websphere-mqe-eap7-02000 + - websphere-mqe-eap7-03000 + - websphere-mqe-eap7-04000 + - websphere-other-eap7-01000 + - websphere-other-eap7-02000 + - ws-security-00000 + - ws-security-00001 + - ws-security-00002 +- name: eap8/eap7 + description: This ruleset provides analysis of Java EE applications that need to change certain CDI-related method calls. + skipped: + - eap8-ejb-00001 + - eap8-ejb-00002 + - eap8-ejb-00003 + - eap8-faces-00001 - eap8-faces-00002 - eap8-faces-00003 - eap8-faces-00004 @@ -963,33 +838,14 @@ - eap8-xml-binding-00007 - eap8-xml-binding-00008 - eap8-xml-binding-00009 - - eap8-ejb-00001 - - eap8-ejb-00002 - - eap8-ejb-00003 - empty-beans-xml-00001 + - hibernate-00005 + - hibernate-00010 - hibernate-6.2-00010 - hibernate-6.2-00020 - hibernate-6.2-00030 - hibernate-6.2-00040 - hibernate-6.2-00050 - - hibernate-search-6.1-00010 - - hibernate-search-6.1-00020 - - hibernate-search-6.1-00030 - - hibernate-search-6.1-00040 - - hibernate-search-6.1-00050 - - hibernate-search-6.1-00060 - - hibernate-search-6.1-00070 - - hibernate-search-6.1-00080 - - hibernate-search-6.1-00090 - - hibernate-search-6.1-00100 - - hibernate-search-6.1-00120 - - hibernate-search-6.1-00130 - - hibernate-search-6.1-00140 - - hibernate-search-6.1-00150 - - hibernate-search-6.1-00160 - - hibernate-search-6.1-00170 - - hibernate-search-6.1-00180 - - hibernate-search-6.1-00190 - hibernate-search-00010 - hibernate-search-00020 - hibernate-search-00030 @@ -1094,8 +950,24 @@ - hibernate-search-01020 - hibernate-search-01030 - hibernate-search-01040 - - hibernate-00005 - - hibernate-00010 + - hibernate-search-6.1-00010 + - hibernate-search-6.1-00020 + - hibernate-search-6.1-00030 + - hibernate-search-6.1-00040 + - hibernate-search-6.1-00050 + - hibernate-search-6.1-00060 + - hibernate-search-6.1-00070 + - hibernate-search-6.1-00080 + - hibernate-search-6.1-00090 + - hibernate-search-6.1-00100 + - hibernate-search-6.1-00120 + - hibernate-search-6.1-00130 + - hibernate-search-6.1-00140 + - hibernate-search-6.1-00150 + - hibernate-search-6.1-00160 + - hibernate-search-6.1-00170 + - hibernate-search-6.1-00180 + - hibernate-search-6.1-00190 - hibernate6-00020 - hibernate6-00030 - hibernate6-00040 @@ -1326,50 +1198,9 @@ - replace_thorntail_maven_plugin-1 - name: filemappings description: This rule set configures the organization matching functionality, using known root-package prefixes to identify libraries and other code. -- name: fuse - description: This ruleset provides analysis that may require individual attention when migrating from Sonic classes. - skipped: - - sonic-catchall-00000 - - sonic-esb-01000 - - sonic-esb-02000 - - sonic-esb-03000 - - sonic-esb-04000 - - sonic-esb-05000 - - sonic-esb-06000 - - sonic-esb-07000 - - sonic-esb-08000 - - sonic-esb-09000 - - sonic-esb-10000 - - sonic-esb-11000 - - sonic-esb-12000 - - sonic-esb-13000 - - sonic-esb-14000 - - sonic-esb-15000 - - sonic-esb-16000 - - sonic-esb-17000 - - sonic-esb-18000 - - sonic-esb-19000 - - sonic-esb-20000 - - sonic-esb-21000 - - xml-sonic-esb-01000 - name: fuse-service-works/soa-p-5 description: This ruleset provides analysis of JBoss SOA Platform 5 applications and provides information on how to migrate these to Red Hat JBoss Fuse Service Works skipped: - - soa-p-5-01000 - - soa-p-5-02000 - - soa-p-5-03000 - - soa-p-5-04000 - - soa-p-5-05000 - - soa-p-5-06000 - - soa-p-5-07000 - - soa-p-5-08000 - - soa-p-5-09000 - - soa-p-5-10000 - - soa-p-5-11000 - - soa-p-5-12000 - - soa-p-5-13000 - - soa-p-5-14000 - - soa-p-5-15000 - soa-p-16000 - soa-p-17000 - soa-p-18000 @@ -1404,15 +1235,51 @@ - soa-p-47000 - soa-p-48000 - soa-p-49000 + - soa-p-5-01000 + - soa-p-5-02000 + - soa-p-5-03000 + - soa-p-5-04000 + - soa-p-5-05000 + - soa-p-5-06000 + - soa-p-5-07000 + - soa-p-5-08000 + - soa-p-5-09000 + - soa-p-5-10000 + - soa-p-5-11000 + - soa-p-5-12000 + - soa-p-5-13000 + - soa-p-5-14000 + - soa-p-5-15000 - soa-p-50000 +- name: fuse/sonicesb + description: This ruleset contains rules that assist in migrating from Sonic ESB to Apache Camel. + skipped: + - sonic-catchall-00000 + - sonic-esb-01000 + - sonic-esb-02000 + - sonic-esb-03000 + - sonic-esb-04000 + - sonic-esb-05000 + - sonic-esb-06000 + - sonic-esb-07000 + - sonic-esb-08000 + - sonic-esb-09000 + - sonic-esb-10000 + - sonic-esb-11000 + - sonic-esb-12000 + - sonic-esb-13000 + - sonic-esb-14000 + - sonic-esb-15000 + - sonic-esb-16000 + - sonic-esb-17000 + - sonic-esb-18000 + - sonic-esb-19000 + - sonic-esb-20000 + - sonic-esb-21000 + - xml-sonic-esb-01000 - name: hibernate - description: This ruleset provides analysis that may require individual attention when migrating to newer Hibernate java constructs. + description: This ruleset provides analysis of deprecated Hibernate java constructs and their migration to newer one. skipped: - - hibernate-catchall-00000 - - hibernate-xml-01000 - - hibernate-xml-02000 - - hibernate-xml-03000 - - hibernate-10100 - hibernate-01000 - hibernate-02000 - hibernate-03000 @@ -1423,6 +1290,11 @@ - hibernate-08000 - hibernate-09000 - hibernate-10000 + - hibernate-10100 + - hibernate-catchall-00000 + - hibernate-xml-01000 + - hibernate-xml-02000 + - hibernate-xml-03000 - name: jws5 description: This ruleset provides analysis of applications that need to change their pom dependencies to upgrade dependencies that belong to the groupId `org.apache.tomcat` skipped: @@ -1448,7 +1320,7 @@ - removed-javaee-modules-00010 - removed-javaee-modules-00020 - name: openjdk17 - description: This ruleset provides analysis regarding removed APIs in OpenJDK 18 to 21. + description: This ruleset provides analysis regarding deprecated APIs in OpenJDK 21. skipped: - deprecation-00000 - deprecation-00005 @@ -1492,38 +1364,42 @@ - oracle2openjdk-00004 - oracle2openjdk-00005 - name: openliberty/websphere - description: This ruleset identifies usage of WebSphere APIs and technologies which are not provided by Open Liberty. + description: This ruleset identifies usage of Java APIs and technologies which are not provided by Open Liberty. skipped: - - DetectJavaApplicationDeploymentJava - - DetectJavaPortlet - - DetectJAXRJava - - DetectRemoteBundleRepositoriesJava - - DetectRemoteServicesJava - - DetectWSNotificationJava - - DetectEJBEntityBeansXML - - DetectTransactionPropagationEJBRemote - - DetectJAXRPC - ActivitySessionRule - AppProfileRule - AsyncBeansSchedulerRule - BatchFeaturePackRule + - DetectEJBEntityBeansXML + - DetectJAXRJava + - DetectJAXRPC + - DetectJavaApplicationDeploymentJava + - DetectJavaPortlet - DetectPolicySetAndWsSecurity + - DetectRemoteBundleRepositoriesJava + - DetectRemoteServicesJava + - DetectTransactionPropagationEJBRemote - DetectWSATXML - DetectWSBAJava + - DetectWSNotificationJava - DynamicCacheRule - DynamicQueryRule - I18nRule - MTOMRule - - ServerName - SOAPOverJMSRule + - ServerName - StartupBeanRule - - WebSphereSdoRule + - WOLAMissingClassesRule + - WOLARule + - WSNotificationRuleJava - WebSphereSchedulerRule + - WebSphereSdoRule - WebSphereServletRule - WebSphereUnavailableAPIsAppClient - WebSphereUnavailableAPIsConnectorArchitecture - WebSphereUnavailableAPIsEnterpriseJavaBeans - WebSphereUnavailableAPIsExceptions + - WebSphereUnavailableAPIsExtHelper - WebSphereUnavailableAPIsExtensionRegistry - WebSphereUnavailableAPIsISC - WebSphereUnavailableAPIsLoggingAndRAS @@ -1532,11 +1408,10 @@ - WebSphereUnavailableAPIsPMI - WebSphereUnavailableAPIsPortal - WebSphereUnavailableAPIsResourceAdapter - - WebSphereUnavailableAPIsSecurity - WebSphereUnavailableAPIsSIB - WebSphereUnavailableAPIsSMF + - WebSphereUnavailableAPIsSecurity - WebSphereUnavailableAPIsTPV - - WebSphereUnavailableAPIsExtHelper - WebSphereUnavailableAPIsUDDI - WebSphereUnavailableAPIsWLM - WebSphereUnavailableAPIsWSADIE @@ -1544,130 +1419,36 @@ - WebSphereUnavailableSPIsRRD - WebSphereUnavailableSSOCookieMethod - WebSphereUnavailableSSOTokenMethod - - WOLAMissingClassesRule - - WOLARule + - WebSphereWebServicesGeneratedClassesRule + - WebSphereWebServicesRule - WorkAreaRule - - WSNotificationRuleJava - XMLFeaturePackRule - - WebSphereWebServicesRule - - WebSphereWebServicesGeneratedClassesRule -- name: openshift - description: This ruleset detects the Java Mail API, which may be problematic when migrating an application to a cloud environment. - tags: - - Java Remote Method Invocation (RMI) service - - rmi - - Java Remote Method Invocation (RMI) API - violations: - jni-native-code-00000: - description: |- - Java native libraries (JNI, JNA) - Java native libraries might not run in a cloud or container environment.. Recommendations. * Review the purpose of the native library in your application.. * Check whether the native library is compatible with a cloud environment.. * Reuse or embed the native library or application in a cloud environment, for example, in a JBoss module.. * Replace, remove, or rewrite the native library or application using a cloud-compatible equivalent. - category: mandatory - labels: - - konveyor.io/target=cloud-readiness - - konveyor.io/source - - jni - incidents: - - uri: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java - message: Java native libraries might not run in a cloud or container environment.. Recommendations. * Review the purpose of the native library in your application.. * Check whether the native library is compatible with a cloud environment.. * Reuse or embed the native library or application in a cloud environment, for example, in a JBoss module.. * Replace, remove, or rewrite the native library or application using a cloud-compatible equivalent. - codeSnip: " 1 package io.konveyor.demo.config;\n 2 \n 3 import java.io.FileInputStream;\n 4 import java.io.InputStream;\n 5 import java.util.Properties;\n 6 \n 7 public class ApplicationConfiguration {\n 8 \n 9 \tprivate Properties config;\n 10 \n 11 \tpublic ApplicationConfiguration() {\n 12 \t\tsuper();\n 13 \t\tthis.config = loadProperties();\n 14 \n 15 \t}\n 16 \n 17 \tprivate Properties loadProperties() {\n 18 \t\tProperties properties = new Properties();\n 19 \n 20 \t\ttry (InputStream inputStream = new FileInputStream(\"/opt/config/persistence.properties\")) {\n 21 \n 22 \t\t\tproperties.load(inputStream);\n 23 \n 24 \t\t} catch (Exception e) {\n 25 \t\t\tSystem.out.println(\"Exception: \" + e);\n 26 \t\t}\n 27 \n 28 \t\treturn properties;\n 29 \t}\n 30 \n 31 \tpublic String getProperty (String name) {\n 32 \t\treturn config.getProperty(name);\n 33 \t}\n 34 \n 35 \n 36 \n 37 }\n" - lineNumber: 13 - variables: - file: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java - kind: Constructor - name: ApplicationConfiguration - - uri: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java - message: Java native libraries might not run in a cloud or container environment.. Recommendations. * Review the purpose of the native library in your application.. * Check whether the native library is compatible with a cloud environment.. * Reuse or embed the native library or application in a cloud environment, for example, in a JBoss module.. * Replace, remove, or rewrite the native library or application using a cloud-compatible equivalent. - codeSnip: " 1 package io.konveyor.demo.config;\n 2 \n 3 import java.io.FileInputStream;\n 4 import java.io.InputStream;\n 5 import java.util.Properties;\n 6 \n 7 public class ApplicationConfiguration {\n 8 \n 9 \tprivate Properties config;\n 10 \n 11 \tpublic ApplicationConfiguration() {\n 12 \t\tsuper();\n 13 \t\tthis.config = loadProperties();\n 14 \n 15 \t}\n 16 \n 17 \tprivate Properties loadProperties() {\n 18 \t\tProperties properties = new Properties();\n 19 \n 20 \t\ttry (InputStream inputStream = new FileInputStream(\"/opt/config/persistence.properties\")) {\n 21 \n 22 \t\t\tproperties.load(inputStream);\n 23 \n 24 \t\t} catch (Exception e) {\n 25 \t\t\tSystem.out.println(\"Exception: \" + e);\n 26 \t\t}\n 27 \n 28 \t\treturn properties;\n 29 \t}\n 30 \n 31 \tpublic String getProperty (String name) {\n 32 \t\treturn config.getProperty(name);\n 33 \t}\n 34 \n 35 \n 36 \n 37 }\n" - lineNumber: 22 - variables: - file: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java - kind: Method - name: loadProperties - links: - - url: https://access.redhat.com/solutions/229443 - title: How to load native libraries and access them via JNI in EAP (with or without a module) - - url: https://access.redhat.com/solutions/1444643 - title: Is it supported to compile the JNI code as 32-bit shared libraries and use it in 64-bit compiled Java code ? - effort: 7 - local-storage-00001: - description: |- - File system - Java IO - An application running inside a container could lose access to a file in local storage.. Recommendations. The following recommendations depend on the function of the file in local storage:. * Logging: Log to standard output and use a centralized log collector to analyze the logs.. * Caching: Use a cache backing service.. * Configuration: Store configuration settings in environment variables so that they can be updated without code changes.. * Data storage: Use a database backing service for relational data or use a persistent data storage system.. * Temporary data storage: Use the file system of a running container as a brief, single-transaction cache. - category: mandatory - labels: - - konveyor.io/target=cloud-readiness - - konveyor.io/source - - storage - incidents: - - uri: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java - message: 'An application running inside a container could lose access to a file in local storage.. Recommendations. The following recommendations depend on the function of the file in local storage:. * Logging: Log to standard output and use a centralized log collector to analyze the logs.. * Caching: Use a cache backing service.. * Configuration: Store configuration settings in environment variables so that they can be updated without code changes.. * Data storage: Use a database backing service for relational data or use a persistent data storage system.. * Temporary data storage: Use the file system of a running container as a brief, single-transaction cache.' - codeSnip: " 1 package io.konveyor.demo.config;\n 2 \n 3 import java.io.FileInputStream;\n 4 import java.io.InputStream;\n 5 import java.util.Properties;\n 6 \n 7 public class ApplicationConfiguration {\n 8 \n 9 \tprivate Properties config;\n 10 \n 11 \tpublic ApplicationConfiguration() {\n 12 \t\tsuper();\n 13 \t\tthis.config = loadProperties();\n 14 \n 15 \t}\n 16 \n 17 \tprivate Properties loadProperties() {\n 18 \t\tProperties properties = new Properties();\n 19 \n 20 \t\ttry (InputStream inputStream = new FileInputStream(\"/opt/config/persistence.properties\")) {\n 21 \n 22 \t\t\tproperties.load(inputStream);\n 23 \n 24 \t\t} catch (Exception e) {\n 25 \t\t\tSystem.out.println(\"Exception: \" + e);\n 26 \t\t}\n 27 \n 28 \t\treturn properties;\n 29 \t}\n 30 \n 31 \tpublic String getProperty (String name) {\n 32 \t\treturn config.getProperty(name);\n 33 \t}\n 34 \n 35 \n 36 \n 37 }\n" - lineNumber: 20 - variables: - file: file:///root/.m2/repository/io/konveyor/demo/config-utils/1.0.0/io/konveyor/demo/config/ApplicationConfiguration.java - kind: Constructor - name: loadProperties - links: - - url: https://12factor.net/logs - title: 'Twelve-Factor App: Logs' - - url: https://docs.openshift.com/container-platform/4.5/logging/cluster-logging.html - title: 'OpenShift Container Platform: Understanding cluster logging' - - url: https://12factor.net/backing-services - title: 'Twelve-Factor App: Backing services' - - url: https://12factor.net/config - title: 'Twelve-Factor App: Config' - - url: https://docs.openshift.com/container-platform/4.5/builds/creating-build-inputs.html#builds-input-secrets-configmaps_creating-build-inputs - title: 'OpenShift Container Platform: Input secrets and ConfigMaps' - - url: https://docs.openshift.com/container-platform/4.5/storage/understanding-persistent-storage.html - title: 'OpenShift Container Platform: Understanding persistent storage' - effort: 1 - unmatched: - - embedded-cache-libraries-01000 - - embedded-cache-libraries-02000 - - embedded-cache-libraries-03000 - - embedded-cache-libraries-04000 - - embedded-cache-libraries-05000 - - embedded-cache-libraries-06000 - - embedded-cache-libraries-07000 - - embedded-cache-libraries-08000 - - embedded-cache-libraries-09000 - - embedded-cache-libraries-10000 - - embedded-cache-libraries-11000 - - embedded-cache-libraries-12000 - - embedded-cache-libraries-13000 - - embedded-cache-libraries-14000 - - embedded-cache-libraries-15000 - - embedded-cache-libraries-16000 - - logging-0000 - - logging-0001 - - jca-00000 - - java-corba-00000 - - java-rpc-00000 - - local-storage-00004 - - java-rmi-00000 - - localhost-http-00001 - - logging-0001 - - localhost-jdbc-00002 - - localhost-ws-00003 - - jni-native-code-00001 - - session-00000 - - mail-00000 - - socket-communication-00001 - - logging-0000 - - local-storage-00005 - - local-storage-00006 - - session-00001 - - socket-communication-00000 - - local-storage-00002 - name: os/windows description: This is a ruleset for Windows operating system specific rules while migrating to Linux operating system. skipped: - os-specific-00001 - os-specific-00002 - name: quarkus/springboot - description: This ruleset gives hints to migrate from Spring Scheduled to Quarkus spring-scheduled extension + description: This ruleset gives hints to migrate from SpringBoot devtools to Quarkus skipped: + - cdi-to-quarkus-00000 + - cdi-to-quarkus-00020 + - cdi-to-quarkus-00030 + - cdi-to-quarkus-00040 + - cdi-to-quarkus-00050 + - dependency-removal-for-quarkus-00000 + - javaee-faces-to-quarkus-00000 + - javaee-pom-to-quarkus-00010 + - javaee-pom-to-quarkus-00020 + - javaee-pom-to-quarkus-00030 + - javaee-pom-to-quarkus-00040 + - javaee-pom-to-quarkus-00050 + - javaee-pom-to-quarkus-00060 + - javaee-pom-to-quarkus-00070 + - javaee-pom-to-quarkus-00080 + - jaxrs-to-quarkus-00000 + - jaxrs-to-quarkus-00010 + - jaxrs-to-quarkus-00020 - quarkus-agroal-00000 - quarkus-agroal-00010 - quarkus-amazon-dynamodb-00000 @@ -1744,16 +1525,33 @@ - quarkus-liquibase-00010 - quarkus-liquibase-mongodb-00000 - quarkus-liquibase-mongodb-00010 + - quarkus-logging-gelf-00000 + - quarkus-logging-gelf-00010 + - quarkus-logging-sentry-00000 + - quarkus-logging-sentry-00010 + - quarkus-micrometer-registry-prometheus-00000 + - quarkus-micrometer-registry-prometheus-00010 + - quarkus-narayana-jta-00000 + - quarkus-narayana-jta-00010 + - quarkus-narayana-lra-00000 + - quarkus-narayana-lra-00010 + - quarkus-narayana-stm-00000 + - quarkus-narayana-stm-00010 + - quarkus-openshift-client-00000 + - quarkus-openshift-client-00010 + - quarkus-opentelemetry-exporter-jaeger-00000 + - quarkus-opentelemetry-exporter-jaeger-00010 + - quarkus-opentelemetry-exporter-otlp-00000 + - quarkus-opentelemetry-exporter-otlp-00010 + - quarkus-picocli-00000 + - quarkus-picocli-00010 + - quarkus-resteasy-multipart-00000 + - quarkus-resteasy-multipart-00010 - springboot-actuator-to-quarkus-0100 - springboot-actuator-to-quarkus-0200 - springboot-annotations-to-quarkus-00000 - springboot-cache-to-quarkus-00000 - springboot-cloud-config-client-to-quarkus-00000 - - quarkus-logging-gelf-00000 - - quarkus-logging-gelf-00010 - - quarkus-logging-sentry-00000 - - quarkus-logging-sentry-00010 - - springboot-jpa-to-quarkus-00000 - springboot-devtools-to-quarkus-0000 - springboot-di-to-quarkus-00000 - springboot-di-to-quarkus-00001 @@ -1763,6 +1561,7 @@ - springboot-integration-to-quarkus-00020 - springboot-jmx-to-quarkus-00000 - springboot-jmx-to-quarkus-00001 + - springboot-jpa-to-quarkus-00000 - springboot-metrics-to-quarkus-0100 - springboot-metrics-to-quarkus-0200 - springboot-metrics-to-quarkus-0300 @@ -1775,8 +1574,6 @@ - springboot-properties-to-quarkus-00004 - springboot-properties-to-quarkus-00005 - springboot-properties-to-quarkus-00006 - - quarkus-micrometer-registry-prometheus-00000 - - quarkus-micrometer-registry-prometheus-00010 - springboot-scheduled-to-quarkus-00000 - springboot-security-to-quarkus-00000 - springboot-shell-to-quarkus-00000 @@ -1784,44 +1581,11 @@ - springboot-web-to-quarkus-00010 - springboot-webmvc-to-quarkus-00000 - springboot-webmvc-to-quarkus-01000 - - quarkus-narayana-jta-00000 - - quarkus-narayana-jta-00010 - - quarkus-narayana-lra-00000 - - quarkus-narayana-lra-00010 - - quarkus-narayana-stm-00000 - - quarkus-narayana-stm-00010 - - quarkus-openshift-client-00000 - - quarkus-openshift-client-00010 - - cdi-to-quarkus-00000 - - cdi-to-quarkus-00020 - - cdi-to-quarkus-00030 - - cdi-to-quarkus-00040 - - cdi-to-quarkus-00050 - - dependency-removal-for-quarkus-00000 - - javaee-faces-to-quarkus-00000 - - javaee-pom-to-quarkus-00000 - - javaee-pom-to-quarkus-00010 - - javaee-pom-to-quarkus-00020 - - javaee-pom-to-quarkus-00030 - - javaee-pom-to-quarkus-00040 - - javaee-pom-to-quarkus-00050 - - javaee-pom-to-quarkus-00060 - - javaee-pom-to-quarkus-00070 - - javaee-pom-to-quarkus-00080 - - jaxrs-to-quarkus-00000 - - jaxrs-to-quarkus-00010 - - jaxrs-to-quarkus-00020 - - quarkus-opentelemetry-exporter-jaeger-00000 - - quarkus-opentelemetry-exporter-jaeger-00010 - - quarkus-opentelemetry-exporter-otlp-00000 - - quarkus-opentelemetry-exporter-otlp-00010 - - quarkus-picocli-00000 - - quarkus-picocli-00010 - - quarkus-resteasy-multipart-00000 - - quarkus-resteasy-multipart-00010 - name: rhr/springboot description: Verify the version of the Spring Boot framework is compatible with those supported by Red Hat Runtimes skipped: + - springboot-00001 + - springboot-00002 - springboot-associated-00001 - springboot-associated-00002 - springboot-associated-00003 @@ -1837,279 +1601,48 @@ - springboot-associated-00013 - springboot-associated-00014 - springboot-associated-00015 - - springboot-00001 - - springboot-00002 - name: technology-usage - description: This ruleset adds tags the configuration management technologies so are appropriately categorized on the technology reports. + description: This ruleset provides analysis of logging libraries. tags: - - Java EE=EJB XML - - Connect=EJB XML - Bean=EJB XML - - Other=Properties - - Sustain=Properties - - Embedded=Properties - - Spring Properties - - Spring configuration properties annotation detected - - Spring Data JPA + - Connect=EJB XML + - Connect=JNI + - Connect=Servlet - Embedded Spring Data JPA - - Spring DI - - Embedded framework - Spring DI - - Micrometer - Embedded framework - Micrometer - - Spring Web - - Embedded framework - Spring Web - - Embedded framework - Spring Scheduled - - Spring Scheduled - - Java Threads - - Threads - - Java EE Batch - - Java EE=Java EE Batch - - Execute=Java EE Batch - - Processing=Java EE Batch - - CDI - - Inversion of Control=CDI - - Java EE=CDI - - Execute=CDI - - Java EE JSON-P - - Execute=Java EE JSON-P - - Processing=Java EE JSON-P - - Java EE=Java EE JSON-P - - Servlet - - Java Servlet - - HTTP=Servlet - - Connect=Servlet - - Java EE=Servlet + - Embedded framework - Spring DI - Embedded framework - Spring MVC - - Spring MVC - - Spring Boot Actuator + - Embedded framework - Spring Web - Embedded library - Spring Boot Actuator - - Spring JMX - - Spring JMX configuration detected + - Embedded=Micrometer + - Embedded=Properties - Embedded=Spring DI - - Inversion of Control=Spring DI - - Execute=Spring DI + - Embedded=Spring Data JPA + - Embedded=Spring Web - Execute=Micrometer - - Embedded=Micrometer + - Execute=Spring DI + - HTTP=Servlet - Integration=Micrometer + - Inversion of Control=Spring DI + - Java EE=EJB XML + - Java EE=JNI + - Java EE=Servlet + - Java Servlet + - Micrometer + - Other=JNI + - Other=Properties + - Persistence=Spring Data JPA + - Servlet + - Spring Boot Actuator + - Spring DI + - Spring Data JPA + - Spring MVC + - Spring Web + - Store=Spring Data JPA + - Sustain=Properties - View=Spring Web - Web=Spring Web - - Embedded=Spring Web - - Execute=Spring Scheduled - - Processing=Spring Scheduled - - Embedded=Spring Scheduled - - Store=Spring Data JPA - - Persistence=Spring Data JPA - - Embedded=Spring Data JPA - - Connect=JNI - - Other=JNI - - Java EE=JNI - - Mail usage - - Connect=Mail - - Other=Mail - - Java EE=Mail - - Connect=JCA - - Other=JCA - - Java EE=JCA - - JCA usage - - Embedded=Spring Properties - - Sustain=Spring Properties - - Configuration Management=Spring Properties unmatched: - - technology-usage-web-01000 - - technology-usage-web-01100 - - technology-usage-web-01300 - - technology-usage-web-01400 - - technology-usage-web-01500 - - technology-usage-web-01600 - - technology-usage-web-01700 - - technology-usage-web-01800 - - technology-usage-web-01900 - - technology-usage-web-02000 - - technology-usage-web-02100 - - technology-usage-web-02200 - - technology-usage-web-02300 - - technology-usage-web-02400 - - technology-usage-test-frameworks-00010 - - technology-usage-test-frameworks-00020 - - technology-usage-test-frameworks-00030 - - technology-usage-test-frameworks-00040 - - technology-usage-test-frameworks-00050 - - technology-usage-test-frameworks-00060 - - technology-usage-test-frameworks-00070 - - technology-usage-test-frameworks-00080 - - technology-usage-test-frameworks-00090 - - technology-usage-test-frameworks-00100 - - technology-usage-test-frameworks-00110 - - technology-usage-test-frameworks-00120 - - technology-usage-test-frameworks-00130 - - technology-usage-test-frameworks-00140 - - technology-usage-test-frameworks-00150 - - technology-usage-test-frameworks-00160 - - technology-usage-test-frameworks-00170 - - technology-usage-test-frameworks-00180 - - technology-usage-test-frameworks-00190 - - technology-usage-test-frameworks-00200 - - technology-usage-test-frameworks-00210 - - technology-usage-test-frameworks-00220 - - technology-usage-test-frameworks-00230 - - technology-usage-test-frameworks-00240 - - technology-usage-test-frameworks-00250 - - technology-usage-test-frameworks-00260 - - technology-usage-test-frameworks-00270 - - technology-usage-test-frameworks-00280 - - technology-usage-test-frameworks-00290 - - technology-usage-test-frameworks-00300 - - technology-usage-test-frameworks-00310 - - technology-usage-test-frameworks-00320 - - technology-usage-test-frameworks-00330 - - technology-usage-test-frameworks-00340 - - technology-usage-test-frameworks-00350 - - technology-usage-test-frameworks-00360 - - technology-usage-test-frameworks-00370 - - technology-usage-security-01000 - - technology-usage-security-01100 - - technology-usage-security-01200 - - technology-usage-security-01300 - - technology-usage-security-01400 - - technology-usage-security-01500 - - technology-usage-security-01600 - - technology-usage-security-01700 - - technology-usage-security-01800 - - technology-usage-security-01900 - - technology-usage-security-02000 - - technology-usage-security-02100 - - technology-usage-security-02200 - - technology-usage-security-02300 - - technology-usage-security-02400 - - technology-usage-security-02500 - - technology-usage-security-02600 - - technology-usage-security-02700 - - technology-usage-security-02800 - - technology-usage-security-02900 - - technology-usage-security-03000 - - technology-usage-security-03100 - - technology-usage-security-03200 - - technology-usage-security-03300 - - technology-usage-security-03400 - - technology-usage-security-03500 - - observability-technology-usage-0100 - - observability-technology-usage-0200 - - non-xml-technology-usage-05000 - - non-xml-technology-usage-06000 - - non-xml-technology-usage-12000 - - non-xml-technology-usage-13000 - - non-xml-technology-usage-14000 - - non-xml-technology-usage-17000 - - non-xml-technology-usage-18000 - - non-xml-technology-usage-19000 - - non-xml-technology-usage-21000 - - non-xml-technology-usage-22000 - - non-xml-technology-usage-23000 - - non-xml-technology-usage-24000 - - non-xml-technology-usage-25000 - - non-xml-technology-usage-26000 - - non-xml-technology-usage-27000 - - technology-usage-mvc-01000 - - technology-usage-mvc-01100 - - technology-usage-mvc-01200 - - technology-usage-mvc-01300 - - technology-usage-mvc-01400 - - technology-usage-mvc-01500 - - technology-usage-mvc-01600 - - technology-usage-mvc-01700 - - technology-usage-mvc-01800 - - technology-usage-mvc-01900 - - technology-usage-mvc-02000 - - technology-usage-mvc-02100 - - technology-usage-mvc-02200 - - technology-usage-mvc-02300 - - technology-usage-mvc-02400 - - technology-usage-mvc-02500 - - technology-usage-mvc-02600 - - technology-usage-mvc-02700 - - technology-usage-mvc-02800 - - technology-usage-mvc-02900 - - technology-usage-mvc-03000 - - technology-usage-mvc-03100 - - technology-usage-mvc-03200 - - technology-usage-mvc-03300 - - technology-usage-mvc-03400 - - technology-usage-mvc-03500 - - technology-usage-mvc-03600 - - technology-usage-mvc-03700 - - technology-usage-mvc-03800 - - technology-usage-mvc-03900 - - technology-usage-mvc-04000 - - technology-usage-mvc-04100 - - technology-usage-mvc-0x4200 - - technology-usage-mvc-04300 - - technology-usage-mvc-04400 - - technology-usage-mvc-04500 - - technology-usage-mvc-04600 - - technology-usage-mvc-04700 - - technology-usage-mvc-04800 - - technology-usage-mvc-04900 - - technology-usage-mvc-05000 - - technology-usage-mvc-05100 - - technology-usage-mvc-05200 - - technology-usage-mvc-05300 - - technology-usage-mvc-05400 - - technology-usage-mvc-05500 - - technology-usage-mvc-05600 - - technology-usage-mvc-05700 - - technology-usage-mvc-05800 - - technology-usage-mvc-05900 - - technology-usage-mvc-06000 - - technology-usage-markup-01300 - - technology-usage-logging-00010 - - technology-usage-logging-00020 - - technology-usage-logging-00030 - - technology-usage-logging-00040 - - technology-usage-logging-00050 - - technology-usage-logging-00060 - - technology-usage-logging-00070 - - technology-usage-logging-00080 - - technology-usage-logging-00090 - - technology-usage-logging-000100 - - technology-usage-logging-000110 - - technology-usage-logging-000120 - - technology-usage-logging-000130 - - technology-usage-logging-000140 - - technology-usage-logging-000150 - - technology-usage-logging-000160 - - technology-usage-logging-000170 - - technology-usage-logging-000180 - - technology-usage-logging-000190 - - technology-usage-logging-000200 - - technology-usage-logging-000210 - - technology-usage-logging-000220 - - technology-usage-logging-000230 - - technology-usage-logging-000240 - - technology-usage-logging-000250 - - technology-usage-logging-000260 - - technology-usage-logging-000270 - - technology-usage-logging-000280 - - technology-usage-logging-000290 - - technology-usage-jta-00020 - - technology-usage-jta-00030 - - technology-usage-jta-00040 - - technology-usage-jta-00050 - - technology-usage-jta-00060 - - technology-usage-jta-00070 - - technology-usage-jta-00080 - - technology-usage-jta-00090 - - technology-usage-jta-00100 - - technology-usage-jta-00110 - - technology-usage-jta-00120 - - technology-usage-jta-00130 - - technology-usage-jta-00140 - - technology-usage-jta-00150 - - technology-usage-jta-00160 - - technology-usage-jta-00170 - - technology-usage-jta-00180 - - technology-usage-jta-00190 - - technology-usage-jta-00200 - - technology-usage-jta-00210 - 3rd-party-01000 - 3rd-party-02000 - 3rd-party-03000 @@ -2135,6 +1668,10 @@ - configuration-management-0200 - configuration-management-0300 - configuration-management-0400 + - configuration-management-0500 + - configuration-management-technology-usage-0100 + - configuration-management-technology-usage-0200 + - configuration-management-technology-usage-0300 - connect-01400 - connect-01500 - connect-01600 @@ -2168,7 +1705,6 @@ - database-02900 - database-03100 - ejb-01000 - - javase-technology-usage-01000 - embedded-framework-01000 - embedded-framework-01010 - embedded-framework-01100 @@ -2221,12 +1757,35 @@ - embedded-framework-08100 - embedded-framework-08500 - embedded-framework-08600 + - embedded-framework-08700 - embedded-framework-08800 - embedded-framework-08900 - - embedded-framework-09100 - embedded-framework-09000 + - embedded-framework-09100 - embedded-framework-09200 - embedded-framework-09300 + - embedded-framework-embedded-framework-02700 + - embedded-framework-embedded-framework-02800 + - embedded-framework-embedded-framework-02900 + - embedded-framework-embedded-framework-03000 + - embedded-framework-embedded-framework-03100 + - embedded-framework-embedded-framework-03200 + - embedded-framework-embedded-framework-03300 + - embedded-framework-embedded-framework-03400 + - embedded-framework-embedded-framework-03500 + - embedded-framework-embedded-framework-03600 + - embedded-framework-embedded-framework-03700 + - embedded-framework-embedded-framework-03800 + - embedded-framework-embedded-framework-03900 + - embedded-framework-embedded-framework-04000 + - embedded-framework-embedded-framework-04100 + - embedded-framework-embedded-framework-04200 + - embedded-framework-embedded-framework-04300 + - embedded-framework-embedded-framework-04400 + - embedded-framework-embedded-framework-04500 + - embedded-framework-embedded-framework-04600 + - embedded-framework-embedded-framework-09200 + - embedded-framework-embedded-framework-09300 - integration-00001 - integration-00002 - integration-00003 @@ -2244,29 +1803,15 @@ - integration-00015 - integration-00016 - integration-00017 - - jta-00020 - - jta-00030 - - jta-00040 - - jta-00050 - - jta-00060 - - jta-00070 - - jta-00080 - - jta-00090 - - jta-00100 - - jta-00110 - - jta-00120 - - jta-00130 - - jta-00140 - - jta-00150 - - jta-00160 - - jta-00170 - - jta-00180 - - jta-00190 - - jta-00200 - - jta-00210 - javaee-technology-usage-00010 + - javaee-technology-usage-00011 - javaee-technology-usage-00012 + - javaee-technology-usage-00013 - javaee-technology-usage-00020-jakarta + - javaee-technology-usage-00020-javax + - javaee-technology-usage-00021 + - javaee-technology-usage-00030 + - javaee-technology-usage-00031 - javaee-technology-usage-00040 - javaee-technology-usage-00050 - javaee-technology-usage-00060 @@ -2313,6 +1858,29 @@ - javaee-technology-usage-00956 - javaee-technology-usage-00957 - javaee-technology-usage-00958 + - javase-01000 + - javase-01100 + - javase-technology-usage-01000 + - jta-00020 + - jta-00030 + - jta-00040 + - jta-00050 + - jta-00060 + - jta-00070 + - jta-00080 + - jta-00090 + - jta-00100 + - jta-00110 + - jta-00120 + - jta-00130 + - jta-00140 + - jta-00150 + - jta-00160 + - jta-00170 + - jta-00180 + - jta-00190 + - jta-00200 + - jta-00210 - logging-usage-00010 - logging-usage-00020 - logging-usage-00030 @@ -2343,6 +1911,7 @@ - mvc-01000 - mvc-01100 - mvc-01200 + - mvc-01210 - mvc-01300 - mvc-01400 - mvc-01500 @@ -2391,6 +1960,24 @@ - mvc-05800 - mvc-05900 - mvc-06000 + - non-xml-technology-usage-05000 + - non-xml-technology-usage-06000 + - non-xml-technology-usage-12000 + - non-xml-technology-usage-13000 + - non-xml-technology-usage-14000 + - non-xml-technology-usage-17000 + - non-xml-technology-usage-18000 + - non-xml-technology-usage-19000 + - non-xml-technology-usage-21000 + - non-xml-technology-usage-22000 + - non-xml-technology-usage-23000 + - non-xml-technology-usage-24000 + - non-xml-technology-usage-25000 + - non-xml-technology-usage-26000 + - non-xml-technology-usage-27000 + - observability-0200 + - observability-technology-usage-0100 + - observability-technology-usage-0200 - security-01100 - security-01200 - security-01300 @@ -2418,92 +2005,77 @@ - security-03500 - security-03600 - spring-catchall-00001 - - test-frameworks-sauge-00010 - - test-frameworks-sauge-00020 - - test-frameworks-sauge-00030 - - test-frameworks-sauge-00040 - - test-frameworks-sauge-00050 - - test-frameworks-sauge-00060 - - test-frameworks-sauge-00070 - - test-frameworks-sauge-00080 - - test-frameworks-sauge-00090 - - test-frameworks-sauge-00100 - - test-frameworks-sauge-00110 - - test-frameworks-sauge-00120 - - test-frameworks-sauge-00130 - - test-frameworks-sauge-00140 - - test-frameworks-sauge-00150 - - test-frameworks-sauge-00160 - - test-frameworks-sauge-00170 - - test-frameworks-sauge-00180 - - test-frameworks-sauge-00190 - - test-frameworks-sauge-00200 - - test-frameworks-sauge-00210 - - test-frameworks-sauge-00220 - - test-frameworks-sauge-00230 - - test-frameworks-sauge-00240 - - test-frameworks-sauge-00560 - - test-frameworks-sauge-00260 - - test-frameworks-sauge-00270 - - test-frameworks-sauge-00280 - - test-frameworks-sauge-00290 - - test-frameworks-sauge-00300 - - test-frameworks-sauge-00310 - - test-frameworks-sauge-00320 - - test-frameworks-sauge-00330 - - test-frameworks-sauge-00340 - - test-frameworks-sauge-00350 - - test-frameworks-sauge-00360 - - test-frameworks-sauge-00370 - - technology-usage-integration-00001 - - technology-usage-integration-00002 - - technology-usage-integration-00003 - - technology-usage-integration-00004 - - technology-usage-integration-00005 - - technology-usage-integration-00006 - - technology-usage-integration-00007 - - technology-usage-integration-00008 - - technology-usage-integration-00009 - - technology-usage-integration-00010 - - technology-usage-integration-00011 - - technology-usage-integration-00012 - - technology-usage-integration-00013 - - technology-usage-integration-00014 - - technology-usage-integration-00015 - - technology-usage-embedded-framework-01000 - - technology-usage-embedded-framework-01010 - - technology-usage-embedded-framework-01100 - - technology-usage-embedded-framework-01200 - - technology-usage-embedded-framework-01300 - - technology-usage-embedded-framework-01400 - - technology-usage-embedded-framework-01500 - - technology-usage-embedded-framework-01600 - - technology-usage-embedded-framework-01700 - - technology-usage-embedded-framework-02000 - - technology-usage-embedded-framework-02100 - - technology-usage-embedded-framework-02200 + - technology-usage-3rd-party-01000 + - technology-usage-3rd-party-02000 + - technology-usage-3rd-party-03000 + - technology-usage-3rd-party-04000 + - technology-usage-3rd-party-05000 + - technology-usage-3rd-party-06000 + - technology-usage-3rd-party-08000 + - technology-usage-3rd-party-09000 + - technology-usage-3rd-party-10000 + - technology-usage-3rd-party-11000 + - technology-usage-3rd-party-12000 + - technology-usage-3rd-party-13000 + - technology-usage-3rd-party-14000 + - technology-usage-3rd-party-15000 + - technology-usage-3rd-party-16000 + - technology-usage-3rd-party-17000 + - technology-usage-3rd-party-18000 + - technology-usage-3rd-party-19000 + - technology-usage-3rd-party-20000 + - technology-usage-clustering-01000 + - technology-usage-clustering-02000 + - technology-usage-connect-01101 + - technology-usage-connect-01200 + - technology-usage-connect-01300 + - technology-usage-connect-01400 + - technology-usage-connect-01500 + - technology-usage-connect-01600 + - technology-usage-connect-01700 + - technology-usage-connect-01800 + - technology-usage-connect-01900 + - technology-usage-connect-02000 + - technology-usage-connect-02100 + - technology-usage-connect-02200 + - technology-usage-connect-02300 + - technology-usage-connect-02400 + - technology-usage-connect-02500 + - technology-usage-connect-02600 + - technology-usage-connect-02700 + - technology-usage-connect-02800 + - technology-usage-database-01400 + - technology-usage-database-01500 + - technology-usage-database-01600 + - technology-usage-database-01700 + - technology-usage-database-01800 + - technology-usage-database-01900 + - technology-usage-database-02000 + - technology-usage-database-02100 + - technology-usage-database-02200 + - technology-usage-database-02300 + - technology-usage-database-02400 + - technology-usage-database-02500 + - technology-usage-database-02600 + - technology-usage-database-02700 + - technology-usage-database-02800 + - technology-usage-database-02900 + - technology-usage-database-03100 + - technology-usage-ejb-01400 + - technology-usage-embedded-framework-01000 + - technology-usage-embedded-framework-01010 + - technology-usage-embedded-framework-01100 + - technology-usage-embedded-framework-01200 + - technology-usage-embedded-framework-01300 + - technology-usage-embedded-framework-01400 + - technology-usage-embedded-framework-01500 + - technology-usage-embedded-framework-01600 + - technology-usage-embedded-framework-01700 + - technology-usage-embedded-framework-02000 + - technology-usage-embedded-framework-02100 + - technology-usage-embedded-framework-02200 - technology-usage-embedded-framework-02300 - technology-usage-embedded-framework-02400 - - embedded-framework-embedded-framework-02700 - - embedded-framework-embedded-framework-02800 - - embedded-framework-embedded-framework-02900 - - embedded-framework-embedded-framework-03000 - - embedded-framework-embedded-framework-03100 - - embedded-framework-embedded-framework-03200 - - embedded-framework-embedded-framework-03300 - - embedded-framework-embedded-framework-03400 - - embedded-framework-embedded-framework-03500 - - embedded-framework-embedded-framework-03600 - - embedded-framework-embedded-framework-03700 - - embedded-framework-embedded-framework-03800 - - embedded-framework-embedded-framework-03900 - - embedded-framework-embedded-framework-04000 - - embedded-framework-embedded-framework-04100 - - embedded-framework-embedded-framework-04200 - - embedded-framework-embedded-framework-04300 - - embedded-framework-embedded-framework-04400 - - embedded-framework-embedded-framework-04500 - - embedded-framework-embedded-framework-04600 - technology-usage-embedded-framework-04700 - technology-usage-embedded-framework-05000 - technology-usage-embedded-framework-05100 @@ -2537,66 +2109,238 @@ - technology-usage-embedded-framework-08100 - technology-usage-embedded-framework-08500 - technology-usage-embedded-framework-08600 + - technology-usage-embedded-framework-08700 - technology-usage-embedded-framework-08800 - technology-usage-embedded-framework-08900 - technology-usage-embedded-framework-09000 - technology-usage-embedded-framework-09100 - - embedded-framework-embedded-framework-09200 - - embedded-framework-embedded-framework-09300 - - technology-usage-ejb-01400 - - technology-usage-database-01400 - - technology-usage-database-01500 - - technology-usage-database-01600 - - technology-usage-database-01700 - - technology-usage-database-01800 - - technology-usage-database-01900 - - technology-usage-database-02000 - - technology-usage-database-02100 - - technology-usage-database-02200 - - technology-usage-database-02300 - - technology-usage-database-02400 - - technology-usage-database-02500 - - technology-usage-database-02600 - - technology-usage-database-02700 - - technology-usage-database-02800 - - technology-usage-database-02900 - - technology-usage-database-03100 - - technology-usage-connect-01101 - - technology-usage-connect-01400 - - technology-usage-connect-01500 - - technology-usage-connect-01600 - - technology-usage-connect-01700 - - technology-usage-connect-01800 - - technology-usage-connect-01900 - - technology-usage-connect-02000 - - technology-usage-connect-02100 - - technology-usage-connect-02200 - - technology-usage-connect-02300 - - technology-usage-connect-02400 - - technology-usage-connect-02500 - - technology-usage-connect-02600 - - technology-usage-connect-02700 - - technology-usage-connect-02800 - - configuration-management-technology-usage-0100 - - configuration-management-technology-usage-0200 - - technology-usage-clustering-01000 - - technology-usage-clustering-02000 - - technology-usage-3rd-party-01000 - - technology-usage-3rd-party-02000 - - technology-usage-3rd-party-03000 - - technology-usage-3rd-party-04000 - - technology-usage-3rd-party-05000 - - technology-usage-3rd-party-06000 - - technology-usage-3rd-party-08000 - - technology-usage-3rd-party-09000 - - technology-usage-3rd-party-10000 - - technology-usage-3rd-party-11000 - - technology-usage-3rd-party-12000 - - technology-usage-3rd-party-13000 - - technology-usage-3rd-party-14000 - - technology-usage-3rd-party-15000 - - technology-usage-3rd-party-16000 - - technology-usage-3rd-party-17000 - - technology-usage-3rd-party-18000 - - technology-usage-3rd-party-19000 - - technology-usage-3rd-party-20000 + - technology-usage-integration-00001 + - technology-usage-integration-00002 + - technology-usage-integration-00003 + - technology-usage-integration-00004 + - technology-usage-integration-00005 + - technology-usage-integration-00006 + - technology-usage-integration-00007 + - technology-usage-integration-00008 + - technology-usage-integration-00009 + - technology-usage-integration-00010 + - technology-usage-integration-00011 + - technology-usage-integration-00012 + - technology-usage-integration-00013 + - technology-usage-integration-00014 + - technology-usage-integration-00015 + - technology-usage-jta-00020 + - technology-usage-jta-00030 + - technology-usage-jta-00040 + - technology-usage-jta-00050 + - technology-usage-jta-00060 + - technology-usage-jta-00070 + - technology-usage-jta-00080 + - technology-usage-jta-00090 + - technology-usage-jta-00100 + - technology-usage-jta-00110 + - technology-usage-jta-00120 + - technology-usage-jta-00130 + - technology-usage-jta-00140 + - technology-usage-jta-00150 + - technology-usage-jta-00160 + - technology-usage-jta-00170 + - technology-usage-jta-00180 + - technology-usage-jta-00190 + - technology-usage-jta-00200 + - technology-usage-jta-00210 + - technology-usage-logging-00010 + - technology-usage-logging-000100 + - technology-usage-logging-000110 + - technology-usage-logging-000120 + - technology-usage-logging-000130 + - technology-usage-logging-000140 + - technology-usage-logging-000150 + - technology-usage-logging-000160 + - technology-usage-logging-000170 + - technology-usage-logging-000180 + - technology-usage-logging-000190 + - technology-usage-logging-00020 + - technology-usage-logging-000200 + - technology-usage-logging-000210 + - technology-usage-logging-000220 + - technology-usage-logging-000230 + - technology-usage-logging-000240 + - technology-usage-logging-000250 + - technology-usage-logging-000260 + - technology-usage-logging-000270 + - technology-usage-logging-000280 + - technology-usage-logging-000290 + - technology-usage-logging-00030 + - technology-usage-logging-00040 + - technology-usage-logging-00050 + - technology-usage-logging-00060 + - technology-usage-logging-00070 + - technology-usage-logging-00080 + - technology-usage-logging-00090 + - technology-usage-markup-01300 + - technology-usage-mvc-01000 + - technology-usage-mvc-01100 + - technology-usage-mvc-01200 + - technology-usage-mvc-01300 + - technology-usage-mvc-01400 + - technology-usage-mvc-01500 + - technology-usage-mvc-01600 + - technology-usage-mvc-01700 + - technology-usage-mvc-01800 + - technology-usage-mvc-01900 + - technology-usage-mvc-02000 + - technology-usage-mvc-02100 + - technology-usage-mvc-02200 + - technology-usage-mvc-02300 + - technology-usage-mvc-02400 + - technology-usage-mvc-02500 + - technology-usage-mvc-02600 + - technology-usage-mvc-02700 + - technology-usage-mvc-02800 + - technology-usage-mvc-02900 + - technology-usage-mvc-03000 + - technology-usage-mvc-03100 + - technology-usage-mvc-03200 + - technology-usage-mvc-03300 + - technology-usage-mvc-03400 + - technology-usage-mvc-03500 + - technology-usage-mvc-03600 + - technology-usage-mvc-03700 + - technology-usage-mvc-03800 + - technology-usage-mvc-03900 + - technology-usage-mvc-04000 + - technology-usage-mvc-04100 + - technology-usage-mvc-04300 + - technology-usage-mvc-04400 + - technology-usage-mvc-04500 + - technology-usage-mvc-04600 + - technology-usage-mvc-04700 + - technology-usage-mvc-04800 + - technology-usage-mvc-04900 + - technology-usage-mvc-05000 + - technology-usage-mvc-05100 + - technology-usage-mvc-05200 + - technology-usage-mvc-05300 + - technology-usage-mvc-05400 + - technology-usage-mvc-05500 + - technology-usage-mvc-05600 + - technology-usage-mvc-05700 + - technology-usage-mvc-05800 + - technology-usage-mvc-05900 + - technology-usage-mvc-06000 + - technology-usage-mvc-0x4200 + - technology-usage-security-01000 + - technology-usage-security-01100 + - technology-usage-security-01200 + - technology-usage-security-01300 + - technology-usage-security-01400 + - technology-usage-security-01500 + - technology-usage-security-01600 + - technology-usage-security-01700 + - technology-usage-security-01800 + - technology-usage-security-01900 + - technology-usage-security-02000 + - technology-usage-security-02100 + - technology-usage-security-02200 + - technology-usage-security-02300 + - technology-usage-security-02400 + - technology-usage-security-02500 + - technology-usage-security-02600 + - technology-usage-security-02700 + - technology-usage-security-02800 + - technology-usage-security-02900 + - technology-usage-security-03000 + - technology-usage-security-03100 + - technology-usage-security-03200 + - technology-usage-security-03300 + - technology-usage-security-03400 + - technology-usage-security-03500 + - technology-usage-test-frameworks-00010 + - technology-usage-test-frameworks-00020 + - technology-usage-test-frameworks-00030 + - technology-usage-test-frameworks-00040 + - technology-usage-test-frameworks-00050 + - technology-usage-test-frameworks-00060 + - technology-usage-test-frameworks-00070 + - technology-usage-test-frameworks-00080 + - technology-usage-test-frameworks-00090 + - technology-usage-test-frameworks-00100 + - technology-usage-test-frameworks-00110 + - technology-usage-test-frameworks-00120 + - technology-usage-test-frameworks-00130 + - technology-usage-test-frameworks-00140 + - technology-usage-test-frameworks-00150 + - technology-usage-test-frameworks-00160 + - technology-usage-test-frameworks-00170 + - technology-usage-test-frameworks-00180 + - technology-usage-test-frameworks-00190 + - technology-usage-test-frameworks-00200 + - technology-usage-test-frameworks-00210 + - technology-usage-test-frameworks-00220 + - technology-usage-test-frameworks-00230 + - technology-usage-test-frameworks-00240 + - technology-usage-test-frameworks-00250 + - technology-usage-test-frameworks-00260 + - technology-usage-test-frameworks-00270 + - technology-usage-test-frameworks-00280 + - technology-usage-test-frameworks-00290 + - technology-usage-test-frameworks-00300 + - technology-usage-test-frameworks-00310 + - technology-usage-test-frameworks-00320 + - technology-usage-test-frameworks-00330 + - technology-usage-test-frameworks-00340 + - technology-usage-test-frameworks-00350 + - technology-usage-test-frameworks-00360 + - technology-usage-test-frameworks-00370 + - technology-usage-web-01000 + - technology-usage-web-01100 + - technology-usage-web-01300 + - technology-usage-web-01400 + - technology-usage-web-01500 + - technology-usage-web-01600 + - technology-usage-web-01700 + - technology-usage-web-01800 + - technology-usage-web-01900 + - technology-usage-web-02000 + - technology-usage-web-02100 + - technology-usage-web-02200 + - technology-usage-web-02300 + - technology-usage-web-02400 + - test-frameworks-sauge-00010 + - test-frameworks-sauge-00020 + - test-frameworks-sauge-00030 + - test-frameworks-sauge-00040 + - test-frameworks-sauge-00050 + - test-frameworks-sauge-00060 + - test-frameworks-sauge-00070 + - test-frameworks-sauge-00080 + - test-frameworks-sauge-00090 + - test-frameworks-sauge-00100 + - test-frameworks-sauge-00110 + - test-frameworks-sauge-00120 + - test-frameworks-sauge-00130 + - test-frameworks-sauge-00140 + - test-frameworks-sauge-00150 + - test-frameworks-sauge-00160 + - test-frameworks-sauge-00170 + - test-frameworks-sauge-00180 + - test-frameworks-sauge-00190 + - test-frameworks-sauge-00200 + - test-frameworks-sauge-00210 + - test-frameworks-sauge-00220 + - test-frameworks-sauge-00230 + - test-frameworks-sauge-00240 + - test-frameworks-sauge-00260 + - test-frameworks-sauge-00270 + - test-frameworks-sauge-00280 + - test-frameworks-sauge-00290 + - test-frameworks-sauge-00300 + - test-frameworks-sauge-00310 + - test-frameworks-sauge-00320 + - test-frameworks-sauge-00330 + - test-frameworks-sauge-00340 + - test-frameworks-sauge-00350 + - test-frameworks-sauge-00360 + - test-frameworks-sauge-00370 + - test-frameworks-sauge-00560 diff --git a/test-data/deps-output.yaml b/test-data/deps-output.yaml index ea4d09e..064bbbd 100644 --- a/test-data/deps-output.yaml +++ b/test-data/deps-output.yaml @@ -1,4 +1,4 @@ -- fileURI: file:///tmp/source-code/pom.xml +- fileURI: file:///opt/input/source/pom.xml provider: java dependencies: - name: antlr.antlr @@ -12,11 +12,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: antlr - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -28,7 +28,7 @@ extras: artifactId: logback-classic groupId: ch.qos.logback - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -44,11 +44,11 @@ extras: artifactId: logback-classic groupId: ch.qos.logback - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: ch.qos.logback.logback-classic version: 1.1.7 groupId: ch.qos.logback - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -64,11 +64,11 @@ extras: artifactId: hibernate-validator groupId: org.hibernate.validator - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.validator.hibernate-validator version: 6.2.0.Final groupId: com.fasterxml - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -84,11 +84,11 @@ extras: artifactId: jackson-databind groupId: com.fasterxml.jackson.core - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: com.fasterxml.jackson.core.jackson-databind version: 2.12.3 groupId: com.fasterxml.jackson.core - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -100,7 +100,7 @@ extras: artifactId: jackson-core groupId: com.fasterxml.jackson.core - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -112,7 +112,7 @@ extras: artifactId: jackson-databind groupId: com.fasterxml.jackson.core - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -128,11 +128,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: com.fasterxml.jackson.datatype - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -144,7 +144,7 @@ extras: artifactId: ojdbc8 groupId: com.oracle.database.jdbc - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -160,11 +160,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: com.sun.istack - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -180,11 +180,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: com.sun.xml.fastinfoset - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -196,7 +196,7 @@ extras: artifactId: config-utils groupId: io.konveyor.demo - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=internal - konveyor.io/language=java @@ -212,11 +212,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: io.micrometer - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -232,11 +232,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: jakarta.annotation - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -252,11 +252,11 @@ extras: artifactId: hibernate-validator groupId: org.hibernate.validator - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.validator.hibernate-validator version: 6.2.0.Final groupId: jakarta.validation - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -272,11 +272,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: javax.activation - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -292,11 +292,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: javax.persistence - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -312,11 +312,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: javax.xml.bind - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -332,11 +332,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: net.bytebuddy - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -352,11 +352,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.apache.logging.log4j - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -372,11 +372,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.apache.logging.log4j - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -388,7 +388,7 @@ extras: artifactId: tomcat-jdbc groupId: org.apache.tomcat - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -404,11 +404,11 @@ extras: artifactId: tomcat-jdbc groupId: org.apache.tomcat - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.apache.tomcat.tomcat-jdbc version: 9.0.46 groupId: org.apache.tomcat - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -420,7 +420,7 @@ extras: artifactId: tomcat-servlet-api groupId: org.apache.tomcat - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -436,11 +436,11 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.data.spring-data-jpa version: 2.5.1 groupId: org.aspectj - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -456,11 +456,11 @@ extras: artifactId: postgresql groupId: org.postgresql - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.postgresql.postgresql version: 42.2.23 groupId: org.checkerframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -476,11 +476,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: org.dom4j - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -496,11 +496,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: org.glassfish.jaxb - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -516,11 +516,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: org.glassfish.jaxb - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -536,11 +536,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.hdrhistogram - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -556,11 +556,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: org.hibernate.common - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -576,11 +576,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -592,7 +592,7 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -604,7 +604,7 @@ extras: artifactId: hibernate-validator groupId: org.hibernate.validator - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -620,11 +620,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: org.javassist - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -640,11 +640,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: org.jboss - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -660,11 +660,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: org.jboss.logging - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -680,11 +680,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: org.jboss.spec.javax.transaction - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -700,11 +700,11 @@ extras: artifactId: hibernate-entitymanager groupId: org.hibernate - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final groupId: org.jvnet.staxex - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -720,11 +720,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.latencyutils - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -736,7 +736,7 @@ extras: artifactId: postgresql groupId: org.postgresql - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -752,11 +752,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.slf4j - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -772,11 +772,11 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.data.spring-data-jpa version: 2.5.1 groupId: org.slf4j - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -792,11 +792,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -812,11 +812,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -832,11 +832,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -852,11 +852,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -872,11 +872,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -888,7 +888,7 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -904,11 +904,11 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -924,11 +924,11 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.data.spring-data-jpa version: 2.5.1 groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -940,7 +940,7 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -956,11 +956,11 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.data.spring-data-jpa version: 2.5.1 groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -976,11 +976,11 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.data.spring-data-jpa version: 2.5.1 groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -996,11 +996,11 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.data.spring-data-jpa version: 2.5.1 groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -1016,11 +1016,11 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.data.spring-data-jpa version: 2.5.1 groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -1036,11 +1036,11 @@ extras: artifactId: spring-webmvc groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.spring-webmvc version: 5.3.7 groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -1056,11 +1056,11 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.data.spring-data-jpa version: 2.5.1 groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -1072,7 +1072,7 @@ extras: artifactId: spring-jdbc groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -1088,11 +1088,11 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.data.spring-data-jpa version: 2.5.1 groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -1108,11 +1108,11 @@ extras: artifactId: spring-data-jpa groupId: org.springframework.data - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.data.spring-data-jpa version: 2.5.1 groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -1124,7 +1124,7 @@ extras: artifactId: spring-web groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -1136,7 +1136,7 @@ extras: artifactId: spring-webmvc groupId: org.springframework - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java @@ -1152,12 +1152,12 @@ extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 groupId: org.yaml - pomPath: /tmp/source-code/pom.xml + pomPath: /opt/input/source/pom.xml labels: - konveyor.io/dep-source=open-source - konveyor.io/language=java - prefix: file:///root/.m2/repository/org/yaml/snakeyaml/1.28 \ No newline at end of file + prefix: file:///root/.m2/repository/org/yaml/snakeyaml/1.28