From d3f63e6cfeb7e24ec70e8f30dc3669f4dbbe6b36 Mon Sep 17 00:00:00 2001 From: Frank Reyes-Garcia <125555252+frankreyesgarcia@users.noreply.github.com> Date: Sat, 22 Jun 2024 07:49:04 -0400 Subject: [PATCH] Java version (#15) * Adding first spoon and japicmp scan * Extraction of ErrorLog to different class * Change of breakage detection method Added dependency to the Spoon model classpath Removed option to identify broken lines by dependencyGroupId Changed client path to the specified folder and not the one it contains * Change of breakage detection method Added dependency to the Spoon model classpath Removed option to identify broken lines by dependencyGroupId Changed client path to the specified folder and not the one it contains Generated new explanations * add statistics and broken uses info * Explanations las generation * Add SpoonCtInvocation class * Add explanations * Updating CLI instructions * Add CtInvocation parser * Refactoring unnecessary code * Adding CtInvocation parser for methods * Adding parser for methods * Adding parser for imports methods * add stats json * Adding compatibility with maracas module * Update README.md * Adding compatibility with maracas module * Readme update * Update maven.yml * Adding support for transitive pom files * Integration m1 (#1) * Adding first spoon and japicmp scan * Extraction of ErrorLog to different class * Change of breakage detection method Added dependency to the Spoon model classpath Removed option to identify broken lines by dependencyGroupId Changed client path to the specified folder and not the one it contains * Change of breakage detection method Added dependency to the Spoon model classpath Removed option to identify broken lines by dependencyGroupId Changed client path to the specified folder and not the one it contains Generated new explanations * add statistics and broken uses info * Explanations las generation * Add SpoonCtInvocation class * Add explanations * Updating CLI instructions * Add CtInvocation parser * Refactoring unnecessary code * Adding CtInvocation parser for methods * Adding parser for methods * Adding parser for imports methods * add stats json * Adding compatibility with maracas module * Adding compatibility with maracas module * Adding support for transitive pom files * update ignore * add necessary file * rename class to BuildHelp * add class for stats * Adding method to generate maven dependencyTree and find changes in different dependency versions (#5) * Java version incompatibilities stats * Spoon analyzer (#7) * Update maven.yml * Update workflow * Create transitive.md * Update transitive template * Adding patter for java versions * update java version templates Add java version category analysis * Adding java version explanations * Updating java version explanations * Change scope VersionFinder * Change scope VersionFinder * add static method * Java version incompatibilities stats * Adding patter for java versions * update java version templates Add java version category analysis * Adding java version explanations * Updating java version explanations * Change scope VersionFinder * Change scope VersionFinder * add static method * Updating Java version templates * Java version (#10) * Java version incompatibilities stats * Adding patter for java versions * update java version templates Add java version category analysis * Adding java version explanations * Updating java version explanations * Change scope VersionFinder * Change scope VersionFinder * add static method * Updating Java version templates * Update template in JavaVersionIncompatibility * Adding new format of Java version incompatibility and matcher pattern --- .github/workflows/maven.yml | 14 +- .gitignore | 3 +- .idea/encodings.xml | 4 + .idea/misc.xml | 9 +- README.md | 3 +- ...1609f962f32cc2ba04fa574c79429e86b372c6b.md | 16 + ...2eedffd33cc1fe94b59372a1c1bfd91b2fc2ced.md | 16 + ...7ff1a34661db6c7f0ca03156ff5d8936b5123f5.md | 51 ++ ...8e33c7bbc45ceac64564dadb9abbae0ed481ca5.md | 64 ++ ...c60d0b08c999769313bfe2335fa792efcfb0300.md | 62 ++ ...cdcc1f1319311f383676a89808c9b8eb190145c.md | 22 + ...ddd0efa29634a4783358cba727d0851236aa579.md | 82 +++ ...ed34fa61c9e31bd4ebb7e4bf12ce792aec96091.md | 29 + ...1be71ab8713fe987785e9e25e4f3e410e709ab9.md | 29 + ...1c09e31119c28ea91a9777b2ce8893bca483493.md | 29 + ...506282e31f5b78fb4395a27f9ad901ef3d98c70.md | 82 +++ ...629113f03956a230738c47397c33f8ba2d11341.md | 22 + ...7778ff224c38fe03999cac8caa1814b68fd0ef2.md | 29 + ...e1de78344a89be66d2e78f7adb07a479f6677eb.md | 22 + ...b3054325e9e55e1af6056b604048fc328dbb2dd.md | 16 + ...c04b9834112eba86fbb8ad1f925128d49449c41.md | 34 + ...15060cd2c7a3812a4adf614b042de84e9c39da4.md | 16 + ...b4a91979f0d93ca4cbb79e6cfa5029a6b8eaf01.md | 28 + ...d0cc7db9d9c9420fa4f478a72067ef846ba8129.md | 73 ++ ...d2b38ee1c838d885db80326b3cd60e314704e39.md | 34 + ...04e4edc99c0ef601ad3a343f168194815db4151.md | 62 ++ ...259baebb426fefbe9dbee26725d6803170dcb85.md | 68 ++ ...33fbc0ee1192ca4aa69f337fd3b530ec94906e9.md | 22 + ...4e6ae1bd9fea04c5c6edeee53c673e7c0310dff.md | 33 + ...607926d691c986e2e172f636db7c527945c5b45.md | 62 ++ ...861e40d7047a73bdbae1a4856a2b5ee4a79071a.md | 62 ++ ...b9fdf1135b704e050cf785d6ea353d24f4c64bb.md | 62 ++ ...320d2638b01419a8bac95e0ee939523831a720a.md | 29 + ...8d2448fa2d6ec02f428b85eaeef0855508e72b9.md | 64 ++ ...9849004763ffd66d14047d51908192ba0551a73.md | 33 + ...b90c67ef2d2ebb296534ea2ce8d8955cf6854c7.md | 22 + ...f09581fe834abe1430c0bb894d095071bd1d581.md | 29 + ...26631e833256a62137c1e5c35c5c5821ca700d5.md | 73 ++ ...7cb9570f6b1d90e2653ab5efd137af3edebc9b5.md | 64 ++ ...e9e6cdda5c5637ce66ba16b8ccfcd5ffce8141d.md | 34 + ...0e13f6bdb7de7f8eda9f174a5616284f2157ea7.md | 60 ++ ...9759978f25c94d97f340c80ef0e77c3ee6f8cfc.md | 16 + ...cda77e3b9981dba271f866ec727ad9c6af9c709.md | 82 +++ ...d1985cccacafa64e9eaa7fd5fe5c7154e994456.md | 29 + ...8676d24472254d05976a62e72e1c3799525a616.md | 33 + ...881523e12a0890f72ac9fef69821cefba0c7a09.md | 29 + ...e1f0f08eef839903067c7c11432117c4897d0cd.md | 73 ++ ...f757321e48d7ffb117cbc8fb13d316e23d0f58f.md | 79 +++ ...0cca141fc95d0510f92e23032c9d03813b074d8.md | 16 + ...79780b29cf329579fa703552f9090b23c10e81d.md | 64 ++ ...d51a768dc633ed4895a474f78eaaf84a3c209fd.md | 62 ++ ...da8825fbdb24922b94be9eb82eefc73640d8f6b.md | 212 ++++++ ...dbbd30590fa87f3e719615e0816c231106e01de.md | 82 +++ ...1ff30e0bc6a9b48e024a8ab27cefda3ad85b530.md | 73 ++ ...698299490d70ce07b7af6e29ebf4627d412f4dd.md | 29 + ...a14451c6f218af9c08e846345d83259eb7d46a8.md | 22 + ...b70529b2edf0a0b3f672278e191dc207d1b8711.md | 22 + ...be29340c60b0bfe93b13b638838163cf355eb03.md | 82 +++ ...e17c8e47b93596cffeb2ec9241465cf39c7f8eb.md | 62 ++ ...19ea99f63b85bbe2bcbdb67bd57459a79f4e677.md | 73 ++ ...2b18584e757c44b1468383252d6a9761f8097de.md | 33 + ...92fdfdaeea759fb558907ef8f7e3d46c170f886.md | 16 + ...ad55510363bde900a60f13ecc744e0c244397d4.md | 33 + ...cafa6f39116555a4c53882ed2cf2835594d9114.md | 64 ++ ...dbb81614557858922836294d1d6dd3dd661f10c.md | 33 + ...1fc16b4fe9dfdfa16ce7248fccad0e7d994094d.md | 22 + ...4950c79dfe902dae8991ff722216c7ba787bf32.md | 60 ++ ...5905f7220e1129a0448715ee5d0e61ee5ac31e1.md | 29 + ...83979c19ca572bfef0fa96d73772fdbeeddd109.md | 26 + ...8da6c3c823d745bb37b072a4a33b6342a86dcd9.md | 62 ++ ...675fa18d22f8ad374f8d6cb7e0dfd9b1f18cc58.md | 64 ++ ...7cc1744503dcd393468db7cbc47cec0cea2a2f0.md | 16 + ...f8452d0d7878f371c8775814e7a60cf6cecbfbb.md | 29 + ...14a9e4a300747a582012aec4d40a6a69f5fd4f4.md | 62 ++ ...14e4c4fa02468ad27d303785c26539a6b3b8eab.md | 64 ++ ...47fd8edc5227b6852ebd2466dd89049c9907b80.md | 22 + ...b82573b99b6d9688e557d3490fa5d3e9512c99b.md | 73 ++ ...5a34301592bb62474489de79069d7873ffe070e.md | 64 ++ ...5dbb3021aa96afc60b38d2b0b01873d3a6f16bd.md | 64 ++ ...b71d68c62a6b9263ebc5113d97c91535d3106b2.md | 16 + ...e31c5e11259881e9dce66d325d1b8b8ed8afc81.md | 82 +++ ...e57fca108ccd8ea9b98666075fbc3237874c314.md | 62 ++ ...e8646eae5d5f81a733be6cbf8f3a308c604e8ec.md | 82 +++ Resources/findings.md | 7 +- Resources/java_version.md | 17 + Resources/java_versions_comp.json | 351 ++++++++++ Resources/java_versions_projects.json | 48 ++ Resources/results.md | 18 + Resources/transitive.md | 20 + ...ef97ea6c5b6e34151fe6167001b69e003449f96.md | 17 + Scripts/java_version_failure.py | 29 + Scripts/werrro-with_json.py | 60 ++ client_java_version_failure.txt | 78 +++ ...son => explanationStatistics-data-old.json | 534 ++------------- pom.xml | 12 +- src/main/java/se/kth/BreakingGood.java | 77 +++ src/main/java/se/kth/Main.java | 127 ++-- .../breaking_changes/AbstractApiChange.java | 8 + .../se/kth/breaking_changes/ApiChange.java | 46 +- .../se/kth/breaking_changes/ApiMetadata.java | 162 +++-- .../breaking_changes/BreakingGoodFilter.java | 67 ++ .../breaking_changes/BreakingGoodOptions.java | 68 ++ .../se/kth/breaking_changes/Download.java | 2 +- .../breaking_changes/FieldBreakingChange.java | 35 + .../breaking_changes/IAbstractApiChange.java | 6 + .../kth/breaking_changes/JApiCmpAnalyze.java | 213 ++---- .../kth/breaking_changes/JApiCmpElements.java | 131 ++++ .../kth/breaking_changes/JApiCompareScan.java | 69 ++ .../java/se/kth/breaking_changes/Main.java | 27 +- .../MethodBreakingChange.java | 56 ++ .../breaking_changes/TypeBreakingChange.java | 22 + src/main/java/se/kth/core/BreakingChange.java | 13 + src/main/java/se/kth/core/Changes.java | 8 +- src/main/java/se/kth/core/Changes_V2.java | 13 + src/main/java/se/kth/core/CombineResults.java | 116 +++- src/main/java/se/kth/core/Instruction.java | 1 + src/main/java/se/kth/core/Main.java | 32 +- src/main/java/se/kth/core/Util.java | 28 +- .../java/se/kth/data/BreakingGoodInfo.java | 63 ++ src/main/java/se/kth/data/BuildHelp.java | 90 +++ src/main/java/se/kth/data/Main.java | 257 +++++-- .../explaining/CompilationErrorTemplate.java | 148 ++-- .../kth/explaining/ExplanationTemplate.java | 58 +- .../JavaVersionIncompatibilityTemplate.java | 95 +++ .../japianalysis/AbstractBreakingChange.java | 45 ++ .../se/kth/japianalysis/BreakingChange.java | 46 ++ .../kth/japianalysis/FieldBreakingChange.java | 58 ++ .../kth/japianalysis/JApiCmpDeltaVisitor.java | 65 ++ .../japianalysis/JApiCmpToSpoonVisitor.java | 210 ++++++ .../japianalysis/MethodBreakingChange.java | 66 ++ .../kth/japianalysis/TypeBreakingChange.java | 81 +++ .../JavaIncompatibilityAnalyzer.java | 99 +++ .../java/se/kth/java_version/JavaVersion.java | 49 ++ .../kth/java_version/JavaVersionFailure.java | 40 ++ .../JavaVersionIncompatibility.java | 66 ++ .../se/kth/java_version/LogFileAnalyzer.java | 153 +++++ src/main/java/se/kth/java_version/Main.java | 28 + .../se/kth/java_version/VersionFinder.java | 129 ++++ .../java/se/kth/log_Analyzer/ErrorInfo.java | 57 ++ .../se/kth/log_Analyzer/FailureCategory.java | 31 + src/main/java/se/kth/log_Analyzer/Main.java | 16 +- .../se/kth/log_Analyzer/MavenErrorLog.java | 51 -- .../se/kth/log_Analyzer/MavenLogAnalyzer.java | 53 +- src/main/java/se/kth/sponvisitors/APIUse.java | 22 + ...notationDeprecatedAddedToClassVisitor.java | 13 + ...notationDeprecatedAddedToFieldVisitor.java | 27 + ...otationDeprecatedAddedToMethodVisitor.java | 31 + .../sponvisitors/BreakingChangeVisitor.java | 102 +++ .../se/kth/sponvisitors/BrokenChanges.java | 53 ++ .../java/se/kth/sponvisitors/BrokenUse.java | 95 +++ .../ClassLessAccessibleVisitor.java | 72 ++ .../sponvisitors/ClassNowAbstractVisitor.java | 28 + .../ClassNowCheckedExceptionVisitor.java | 65 ++ .../sponvisitors/ClassNowFinalVisitor.java | 35 + .../kth/sponvisitors/ClassRemovedVisitor.java | 18 + .../se/kth/sponvisitors/CombinedVisitor.java | 567 +++++++++++++++ .../ConstructorRemovedVisitor.java | 74 ++ .../FieldLessAccessibleVisitor.java | 68 ++ .../FieldNoLongerStaticVisitor.java | 65 ++ .../sponvisitors/FieldNowFinalVisitor.java | 25 + .../sponvisitors/FieldNowStaticVisitor.java | 17 + .../sponvisitors/FieldReferenceVisitor.java | 29 + .../kth/sponvisitors/FieldRemovedVisitor.java | 30 + .../sponvisitors/FieldTypeChangedVisitor.java | 85 +++ .../sponvisitors/InterfaceAddedVisitor.java | 21 + .../sponvisitors/InterfaceRemovedVisitor.java | 21 + .../MethodAddedToInterfaceVisitor.java | 57 ++ .../MethodNowAbstractVisitor.java | 42 ++ .../sponvisitors/MethodNowFinalVisitor.java | 38 ++ .../sponvisitors/MethodReferenceVisitor.java | 59 ++ .../sponvisitors/MethodRemovedVisitor.java | 31 + .../MethodReturnTypeChangedVisitor.java | 84 +++ .../sponvisitors/SuperclassAddedVisitor.java | 15 + .../SuperclassRemovedVisitor.java | 21 + .../sponvisitors/SupertypeAddedVisitor.java | 70 ++ .../sponvisitors/SupertypeRemovedVisitor.java | 199 ++++++ .../sponvisitors/TypeReferenceVisitor.java | 79 +++ .../spoon_compare/BreakingGoodScanner.java | 643 ++++++++++++++++++ .../java/se/kth/spoon_compare/Client.java | 89 +++ src/main/java/se/kth/spoon_compare/Main.java | 29 +- .../se/kth/spoon_compare/SpoonAnalyzer.java | 168 ++++- .../spoon_compare/SpoonCtConstructorCall.java | 36 + .../se/kth/spoon_compare/SpoonCtImport.java | 42 ++ .../kth/spoon_compare/SpoonCtInvocation.java | 86 +++ .../spoon_compare/SpoonCtTypeReference.java | 46 ++ .../se/kth/spoon_compare/SpoonReference.java | 11 + .../se/kth/spoon_compare/SpoonResults.java | 11 +- .../CompareTransitiveDependency.java | 65 ++ .../se/kth/transitive_changes/Dependency.java | 48 ++ .../java/se/kth/transitive_changes/Main.java | 40 ++ .../se/kth/transitive_changes/MavenTree.java | 129 ++++ .../PairTransitiveDependency.java | 38 ++ src/main/java/util/BinaryToSourceMapper.java | 114 ++++ src/main/java/util/CtElementSerializer.java | 34 + src/main/java/util/MavenCommand.java | 22 + .../java/util/ParentLastURLClassLoader.java | 79 +++ src/main/java/util/PathHelpers.java | 31 + src/main/java/util/SpoonHelpers.java | 129 ++++ src/main/java/util/SpoonTypeHelpers.java | 339 +++++++++ 199 files changed, 11762 insertions(+), 1083 deletions(-) create mode 100644 Resources/JavaVersionIncompatibility/01609f962f32cc2ba04fa574c79429e86b372c6b.md create mode 100644 Resources/JavaVersionIncompatibility/02eedffd33cc1fe94b59372a1c1bfd91b2fc2ced.md create mode 100644 Resources/JavaVersionIncompatibility/07ff1a34661db6c7f0ca03156ff5d8936b5123f5.md create mode 100644 Resources/JavaVersionIncompatibility/08e33c7bbc45ceac64564dadb9abbae0ed481ca5.md create mode 100644 Resources/JavaVersionIncompatibility/0c60d0b08c999769313bfe2335fa792efcfb0300.md create mode 100644 Resources/JavaVersionIncompatibility/0cdcc1f1319311f383676a89808c9b8eb190145c.md create mode 100644 Resources/JavaVersionIncompatibility/0ddd0efa29634a4783358cba727d0851236aa579.md create mode 100644 Resources/JavaVersionIncompatibility/0ed34fa61c9e31bd4ebb7e4bf12ce792aec96091.md create mode 100644 Resources/JavaVersionIncompatibility/11be71ab8713fe987785e9e25e4f3e410e709ab9.md create mode 100644 Resources/JavaVersionIncompatibility/11c09e31119c28ea91a9777b2ce8893bca483493.md create mode 100644 Resources/JavaVersionIncompatibility/1506282e31f5b78fb4395a27f9ad901ef3d98c70.md create mode 100644 Resources/JavaVersionIncompatibility/1629113f03956a230738c47397c33f8ba2d11341.md create mode 100644 Resources/JavaVersionIncompatibility/17778ff224c38fe03999cac8caa1814b68fd0ef2.md create mode 100644 Resources/JavaVersionIncompatibility/1e1de78344a89be66d2e78f7adb07a479f6677eb.md create mode 100644 Resources/JavaVersionIncompatibility/2b3054325e9e55e1af6056b604048fc328dbb2dd.md create mode 100644 Resources/JavaVersionIncompatibility/2c04b9834112eba86fbb8ad1f925128d49449c41.md create mode 100644 Resources/JavaVersionIncompatibility/315060cd2c7a3812a4adf614b042de84e9c39da4.md create mode 100644 Resources/JavaVersionIncompatibility/3b4a91979f0d93ca4cbb79e6cfa5029a6b8eaf01.md create mode 100644 Resources/JavaVersionIncompatibility/3d0cc7db9d9c9420fa4f478a72067ef846ba8129.md create mode 100644 Resources/JavaVersionIncompatibility/3d2b38ee1c838d885db80326b3cd60e314704e39.md create mode 100644 Resources/JavaVersionIncompatibility/404e4edc99c0ef601ad3a343f168194815db4151.md create mode 100644 Resources/JavaVersionIncompatibility/4259baebb426fefbe9dbee26725d6803170dcb85.md create mode 100644 Resources/JavaVersionIncompatibility/433fbc0ee1192ca4aa69f337fd3b530ec94906e9.md create mode 100644 Resources/JavaVersionIncompatibility/44e6ae1bd9fea04c5c6edeee53c673e7c0310dff.md create mode 100644 Resources/JavaVersionIncompatibility/4607926d691c986e2e172f636db7c527945c5b45.md create mode 100644 Resources/JavaVersionIncompatibility/4861e40d7047a73bdbae1a4856a2b5ee4a79071a.md create mode 100644 Resources/JavaVersionIncompatibility/4b9fdf1135b704e050cf785d6ea353d24f4c64bb.md create mode 100644 Resources/JavaVersionIncompatibility/5320d2638b01419a8bac95e0ee939523831a720a.md create mode 100644 Resources/JavaVersionIncompatibility/58d2448fa2d6ec02f428b85eaeef0855508e72b9.md create mode 100644 Resources/JavaVersionIncompatibility/59849004763ffd66d14047d51908192ba0551a73.md create mode 100644 Resources/JavaVersionIncompatibility/5b90c67ef2d2ebb296534ea2ce8d8955cf6854c7.md create mode 100644 Resources/JavaVersionIncompatibility/5f09581fe834abe1430c0bb894d095071bd1d581.md create mode 100644 Resources/JavaVersionIncompatibility/626631e833256a62137c1e5c35c5c5821ca700d5.md create mode 100644 Resources/JavaVersionIncompatibility/67cb9570f6b1d90e2653ab5efd137af3edebc9b5.md create mode 100644 Resources/JavaVersionIncompatibility/6e9e6cdda5c5637ce66ba16b8ccfcd5ffce8141d.md create mode 100644 Resources/JavaVersionIncompatibility/70e13f6bdb7de7f8eda9f174a5616284f2157ea7.md create mode 100644 Resources/JavaVersionIncompatibility/79759978f25c94d97f340c80ef0e77c3ee6f8cfc.md create mode 100644 Resources/JavaVersionIncompatibility/7cda77e3b9981dba271f866ec727ad9c6af9c709.md create mode 100644 Resources/JavaVersionIncompatibility/7d1985cccacafa64e9eaa7fd5fe5c7154e994456.md create mode 100644 Resources/JavaVersionIncompatibility/88676d24472254d05976a62e72e1c3799525a616.md create mode 100644 Resources/JavaVersionIncompatibility/8881523e12a0890f72ac9fef69821cefba0c7a09.md create mode 100644 Resources/JavaVersionIncompatibility/8e1f0f08eef839903067c7c11432117c4897d0cd.md create mode 100644 Resources/JavaVersionIncompatibility/8f757321e48d7ffb117cbc8fb13d316e23d0f58f.md create mode 100644 Resources/JavaVersionIncompatibility/90cca141fc95d0510f92e23032c9d03813b074d8.md create mode 100644 Resources/JavaVersionIncompatibility/979780b29cf329579fa703552f9090b23c10e81d.md create mode 100644 Resources/JavaVersionIncompatibility/9d51a768dc633ed4895a474f78eaaf84a3c209fd.md create mode 100644 Resources/JavaVersionIncompatibility/9da8825fbdb24922b94be9eb82eefc73640d8f6b.md create mode 100644 Resources/JavaVersionIncompatibility/9dbbd30590fa87f3e719615e0816c231106e01de.md create mode 100644 Resources/JavaVersionIncompatibility/a1ff30e0bc6a9b48e024a8ab27cefda3ad85b530.md create mode 100644 Resources/JavaVersionIncompatibility/a698299490d70ce07b7af6e29ebf4627d412f4dd.md create mode 100644 Resources/JavaVersionIncompatibility/aa14451c6f218af9c08e846345d83259eb7d46a8.md create mode 100644 Resources/JavaVersionIncompatibility/ab70529b2edf0a0b3f672278e191dc207d1b8711.md create mode 100644 Resources/JavaVersionIncompatibility/abe29340c60b0bfe93b13b638838163cf355eb03.md create mode 100644 Resources/JavaVersionIncompatibility/ae17c8e47b93596cffeb2ec9241465cf39c7f8eb.md create mode 100644 Resources/JavaVersionIncompatibility/b19ea99f63b85bbe2bcbdb67bd57459a79f4e677.md create mode 100644 Resources/JavaVersionIncompatibility/b2b18584e757c44b1468383252d6a9761f8097de.md create mode 100644 Resources/JavaVersionIncompatibility/b92fdfdaeea759fb558907ef8f7e3d46c170f886.md create mode 100644 Resources/JavaVersionIncompatibility/bad55510363bde900a60f13ecc744e0c244397d4.md create mode 100644 Resources/JavaVersionIncompatibility/bcafa6f39116555a4c53882ed2cf2835594d9114.md create mode 100644 Resources/JavaVersionIncompatibility/bdbb81614557858922836294d1d6dd3dd661f10c.md create mode 100644 Resources/JavaVersionIncompatibility/c1fc16b4fe9dfdfa16ce7248fccad0e7d994094d.md create mode 100644 Resources/JavaVersionIncompatibility/c4950c79dfe902dae8991ff722216c7ba787bf32.md create mode 100644 Resources/JavaVersionIncompatibility/c5905f7220e1129a0448715ee5d0e61ee5ac31e1.md create mode 100644 Resources/JavaVersionIncompatibility/c83979c19ca572bfef0fa96d73772fdbeeddd109.md create mode 100644 Resources/JavaVersionIncompatibility/c8da6c3c823d745bb37b072a4a33b6342a86dcd9.md create mode 100644 Resources/JavaVersionIncompatibility/d675fa18d22f8ad374f8d6cb7e0dfd9b1f18cc58.md create mode 100644 Resources/JavaVersionIncompatibility/d7cc1744503dcd393468db7cbc47cec0cea2a2f0.md create mode 100644 Resources/JavaVersionIncompatibility/df8452d0d7878f371c8775814e7a60cf6cecbfbb.md create mode 100644 Resources/JavaVersionIncompatibility/e14a9e4a300747a582012aec4d40a6a69f5fd4f4.md create mode 100644 Resources/JavaVersionIncompatibility/e14e4c4fa02468ad27d303785c26539a6b3b8eab.md create mode 100644 Resources/JavaVersionIncompatibility/e47fd8edc5227b6852ebd2466dd89049c9907b80.md create mode 100644 Resources/JavaVersionIncompatibility/eb82573b99b6d9688e557d3490fa5d3e9512c99b.md create mode 100644 Resources/JavaVersionIncompatibility/f5a34301592bb62474489de79069d7873ffe070e.md create mode 100644 Resources/JavaVersionIncompatibility/f5dbb3021aa96afc60b38d2b0b01873d3a6f16bd.md create mode 100644 Resources/JavaVersionIncompatibility/fb71d68c62a6b9263ebc5113d97c91535d3106b2.md create mode 100644 Resources/JavaVersionIncompatibility/fe31c5e11259881e9dce66d325d1b8b8ed8afc81.md create mode 100644 Resources/JavaVersionIncompatibility/fe57fca108ccd8ea9b98666075fbc3237874c314.md create mode 100644 Resources/JavaVersionIncompatibility/fe8646eae5d5f81a733be6cbf8f3a308c604e8ec.md create mode 100644 Resources/java_version.md create mode 100644 Resources/java_versions_comp.json create mode 100644 Resources/java_versions_projects.json create mode 100644 Resources/results.md create mode 100644 Resources/transitive.md create mode 100644 Results/Explanations_v1/1ef97ea6c5b6e34151fe6167001b69e003449f96.md create mode 100644 Scripts/java_version_failure.py create mode 100644 Scripts/werrro-with_json.py create mode 100644 client_java_version_failure.txt rename explanationStatistics.json => explanationStatistics-data-old.json (50%) create mode 100644 src/main/java/se/kth/BreakingGood.java create mode 100644 src/main/java/se/kth/breaking_changes/AbstractApiChange.java create mode 100644 src/main/java/se/kth/breaking_changes/BreakingGoodFilter.java create mode 100644 src/main/java/se/kth/breaking_changes/BreakingGoodOptions.java create mode 100644 src/main/java/se/kth/breaking_changes/FieldBreakingChange.java create mode 100644 src/main/java/se/kth/breaking_changes/IAbstractApiChange.java create mode 100644 src/main/java/se/kth/breaking_changes/JApiCmpElements.java create mode 100644 src/main/java/se/kth/breaking_changes/JApiCompareScan.java create mode 100644 src/main/java/se/kth/breaking_changes/MethodBreakingChange.java create mode 100644 src/main/java/se/kth/breaking_changes/TypeBreakingChange.java create mode 100644 src/main/java/se/kth/core/Changes_V2.java create mode 100644 src/main/java/se/kth/data/BreakingGoodInfo.java create mode 100644 src/main/java/se/kth/data/BuildHelp.java create mode 100644 src/main/java/se/kth/explaining/JavaVersionIncompatibilityTemplate.java create mode 100644 src/main/java/se/kth/japianalysis/AbstractBreakingChange.java create mode 100644 src/main/java/se/kth/japianalysis/BreakingChange.java create mode 100644 src/main/java/se/kth/japianalysis/FieldBreakingChange.java create mode 100644 src/main/java/se/kth/japianalysis/JApiCmpDeltaVisitor.java create mode 100644 src/main/java/se/kth/japianalysis/JApiCmpToSpoonVisitor.java create mode 100644 src/main/java/se/kth/japianalysis/MethodBreakingChange.java create mode 100644 src/main/java/se/kth/japianalysis/TypeBreakingChange.java create mode 100644 src/main/java/se/kth/java_version/JavaIncompatibilityAnalyzer.java create mode 100644 src/main/java/se/kth/java_version/JavaVersion.java create mode 100644 src/main/java/se/kth/java_version/JavaVersionFailure.java create mode 100644 src/main/java/se/kth/java_version/JavaVersionIncompatibility.java create mode 100644 src/main/java/se/kth/java_version/LogFileAnalyzer.java create mode 100644 src/main/java/se/kth/java_version/Main.java create mode 100644 src/main/java/se/kth/java_version/VersionFinder.java create mode 100644 src/main/java/se/kth/log_Analyzer/ErrorInfo.java create mode 100644 src/main/java/se/kth/log_Analyzer/FailureCategory.java create mode 100644 src/main/java/se/kth/sponvisitors/APIUse.java create mode 100644 src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToClassVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToFieldVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToMethodVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/BreakingChangeVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/BrokenChanges.java create mode 100644 src/main/java/se/kth/sponvisitors/BrokenUse.java create mode 100644 src/main/java/se/kth/sponvisitors/ClassLessAccessibleVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/ClassNowAbstractVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/ClassNowCheckedExceptionVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/ClassNowFinalVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/ClassRemovedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/CombinedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/ConstructorRemovedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/FieldLessAccessibleVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/FieldNoLongerStaticVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/FieldNowFinalVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/FieldNowStaticVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/FieldReferenceVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/FieldRemovedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/FieldTypeChangedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/InterfaceAddedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/InterfaceRemovedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/MethodAddedToInterfaceVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/MethodNowAbstractVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/MethodNowFinalVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/MethodReferenceVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/MethodRemovedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/MethodReturnTypeChangedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/SuperclassAddedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/SuperclassRemovedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/SupertypeAddedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/SupertypeRemovedVisitor.java create mode 100644 src/main/java/se/kth/sponvisitors/TypeReferenceVisitor.java create mode 100644 src/main/java/se/kth/spoon_compare/BreakingGoodScanner.java create mode 100644 src/main/java/se/kth/spoon_compare/Client.java create mode 100644 src/main/java/se/kth/spoon_compare/SpoonCtConstructorCall.java create mode 100644 src/main/java/se/kth/spoon_compare/SpoonCtImport.java create mode 100644 src/main/java/se/kth/spoon_compare/SpoonCtInvocation.java create mode 100644 src/main/java/se/kth/spoon_compare/SpoonCtTypeReference.java create mode 100644 src/main/java/se/kth/spoon_compare/SpoonReference.java create mode 100644 src/main/java/se/kth/transitive_changes/CompareTransitiveDependency.java create mode 100644 src/main/java/se/kth/transitive_changes/Dependency.java create mode 100644 src/main/java/se/kth/transitive_changes/Main.java create mode 100644 src/main/java/se/kth/transitive_changes/MavenTree.java create mode 100644 src/main/java/se/kth/transitive_changes/PairTransitiveDependency.java create mode 100644 src/main/java/util/BinaryToSourceMapper.java create mode 100644 src/main/java/util/CtElementSerializer.java create mode 100644 src/main/java/util/MavenCommand.java create mode 100644 src/main/java/util/ParentLastURLClassLoader.java create mode 100644 src/main/java/util/PathHelpers.java create mode 100644 src/main/java/util/SpoonHelpers.java create mode 100644 src/main/java/util/SpoonTypeHelpers.java diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 54bde78..3c25140 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -11,13 +11,19 @@ jobs: runs-on: ubuntu-latest + strategy: + matrix: + java: [17] + steps: - uses: actions/checkout@v3 - - name: Set up JDK 17 + - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v3 with: - java-version: '17' + java-version: ${{ matrix.java }} distribution: 'temurin' cache: maven - - name: Build with Maven - run: mvn -B package --file pom.xml \ No newline at end of file + + - name: Test + run: mvn clean test + diff --git a/.gitignore b/.gitignore index b13ce93..30a2ddc 100644 --- a/.gitignore +++ b/.gitignore @@ -44,4 +44,5 @@ build/ /src/main/java/se/kth/data /src/main/java/se/kth/explaining/Main.java /src/main/java/se/kth/log_Analyzer/Main.java -/src/main/java/se/kth/spoon_compare/Main.java \ No newline at end of file +/src/main/java/se/kth/spoon_compare/Main.java +/Scripts/ diff --git a/.idea/encodings.xml b/.idea/encodings.xml index aa00ffa..fe3f320 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -1,6 +1,10 @@ + + + + diff --git a/.idea/misc.xml b/.idea/misc.xml index 0ed1850..e07ed72 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,8 @@ + + - diff --git a/README.md b/README.md index 3f10cf2..22349c6 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ # Breaking-good +[![Build](https://github.com/frankreyesgarcia/breaking-good/actions/workflows/maven.yml/badge.svg)](https://github.com/frankreyesgarcia/breaking-good/actions/workflows/maven.yml) # Template CI detected that the dependency upgrade from version <**label indicating the previous version of the dependency**> to <**label indicating the new version of the dependency**> has failed. Here are details to help you understand and fix the problem: -1. Your client utilizes <**label indicate amount of instructions**> instructions which has been modified in the new version of the dependency. +1. Your client utilizes <**label indicate amount of instructions**> constructs which has been modified in the new version of the dependency. * < Method | Class | Field | Import | Constructor> < instruction name > which has been < Removed | Modified > in the new version of the dependency * The failure is identified from the logs generated in the build process. diff --git a/Resources/JavaVersionIncompatibility/01609f962f32cc2ba04fa574c79429e86b372c6b.md b/Resources/JavaVersionIncompatibility/01609f962f32cc2ba04fa574c79429e86b372c6b.md new file mode 100644 index 0000000..97e9e76 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/01609f962f32cc2ba04fa574c79429e86b372c6b.md @@ -0,0 +1,16 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.24** to **spring-core-6.0.7** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ssl/keystore/KeyStoreManager.java:[61,35] cannot access org.springframework.core.io.ClassPathResource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.7/spring-core-6.0.7.jar(/org/springframework/core/io/ClassPathResource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/02eedffd33cc1fe94b59372a1c1bfd91b2fc2ced.md b/Resources/JavaVersionIncompatibility/02eedffd33cc1fe94b59372a1c1bfd91b2fc2ced.md new file mode 100644 index 0000000..90c9d13 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/02eedffd33cc1fe94b59372a1c1bfd91b2fc2ced.md @@ -0,0 +1,16 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.24** to **spring-core-6.0.8** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ssl/keystore/KeyStoreManager.java:[61,35] cannot access org.springframework.core.io.ClassPathResource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.8/spring-core-6.0.8.jar(/org/springframework/core/io/ClassPathResource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/07ff1a34661db6c7f0ca03156ff5d8936b5123f5.md b/Resources/JavaVersionIncompatibility/07ff1a34661db6c7f0ca03156ff5d8936b5123f5.md new file mode 100644 index 0000000..683de04 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/07ff1a34661db6c7f0ca03156ff5d8936b5123f5.md @@ -0,0 +1,51 @@ +<<<<<<<< HEAD:Resources/JavaVersionIncompatibility/07ff1a34661db6c7f0ca03156ff5d8936b5123f5.md +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.1** has failed. +======== +CI detected that the dependency upgrade from version **spring-core-6.0.9** to **spring-core-5.3.27** has failed. +>>>>>>>> main:Resources/JavaVersionIncompatibility/JavaVersionIncompatibility.md +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +<<<<<<<< HEAD:Resources/JavaVersionIncompatibility/07ff1a34661db6c7f0ca03156ff5d8936b5123f5.md +======== +- `test-suite.yml` +>>>>>>>> main:Resources/JavaVersionIncompatibility/JavaVersionIncompatibility.md +- `build.yml` +- `findbugs.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[15,37] cannot access org.springframework.core.task.TaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.9/spring-core-6.0.9.jar(/org/springframework/core/task/TaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +<<<<<<<< HEAD:Resources/JavaVersionIncompatibility/07ff1a34661db6c7f0ca03156ff5d8936b5123f5.md +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.1/spring-context-6.0.1.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. +======== +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[27,32] cannot access org.springframework.util.StringUtils
bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.9/spring-core-6.0.9.jar(/org/springframework/util/StringUtils.class)
class file has wrong version 61.0, should be 55.0
Please remove or make sure it appears in the correct subdirectory of the classpath. +>>>>>>>> main:Resources/JavaVersionIncompatibility/JavaVersionIncompatibility.md + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/LPVSFileUtil.java:[15,32] cannot access org.springframework.util.FileSystemUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.9/spring-core-6.0.9.jar(/org/springframework/util/FileSystemUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +<<<<<<<< HEAD:Resources/JavaVersionIncompatibility/07ff1a34661db6c7f0ca03156ff5d8936b5123f5.md +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext +======== +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[37,12] cannot find symbol
[ERROR] symbol: class TaskExecutor
[ERROR] location: class com.lpvs.LicensePreValidationSystem + +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[27,32] cannot access org.springframework.util.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.9/spring-core-6.0.9.jar(/org/springframework/util/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. +>>>>>>>> main:Resources/JavaVersionIncompatibility/JavaVersionIncompatibility.md + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/LPVSFileUtil.java:[15,32] cannot access org.springframework.util.FileSystemUtils
bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.9/spring-core-6.0.9.jar(/org/springframework/util/FileSystemUtils.class)
class file has wrong version 61.0, should be 55.0
Please remove or make sure it appears in the correct subdirectory of the classpath. + +<<<<<<<< HEAD:Resources/JavaVersionIncompatibility/07ff1a34661db6c7f0ca03156ff5d8936b5123f5.md +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.1/spring-context-6.0.1.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext +======== +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[15,37] cannot access org.springframework.core.task.TaskExecutor
bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.9/spring-core-6.0.9.jar(/org/springframework/core/task/TaskExecutor.class)
class file has wrong version 61.0, should be 55.0
Please remove or make sure it appears in the correct subdirectory of the classpath. +>>>>>>>> main:Resources/JavaVersionIncompatibility/JavaVersionIncompatibility.md + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[37,12] cannot find symbol
symbol: class TaskExecutor
location: class com.lpvs.LicensePreValidationSystem + +
diff --git a/Resources/JavaVersionIncompatibility/08e33c7bbc45ceac64564dadb9abbae0ed481ca5.md b/Resources/JavaVersionIncompatibility/08e33c7bbc45ceac64564dadb9abbae0ed481ca5.md new file mode 100644 index 0000000..4177866 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/08e33c7bbc45ceac64564dadb9abbae0ed481ca5.md @@ -0,0 +1,64 @@ +CI detected that the dependency upgrade from version **spring-webmvc-5.3.24** to **spring-webmvc-6.0.5** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[31,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[29,50] cannot access org.springframework.web.servlet.mvc.method.RequestMappingInfo
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.5/spring-webmvc-6.0.5.jar(/org/springframework/web/servlet/mvc/method/RequestMappingInfo.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[28,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[29,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[31,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[47,13] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[30,61] cannot access org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.5/spring-webmvc-6.0.5.jar(/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[109,13] cannot find symbol
[ERROR] symbol: class RequestMappingInfo
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[39,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[25,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[35,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/NotificationTemplateProvider.java:[73,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[46,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[36,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/builder/IdsRequestBuilderService.java:[33,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[44,19] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[38,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/RequestTemplateProvider.java:[58,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[61,2] cannot find symbol
[ERROR] symbol: class Controller + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[53,38] cannot access org.springframework.stereotype.Controller
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/stereotype/Controller.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[64,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[49,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcherProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[57,34] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[52,47] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[40,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.util.SerializerProvider + +
diff --git a/Resources/JavaVersionIncompatibility/0c60d0b08c999769313bfe2335fa792efcfb0300.md b/Resources/JavaVersionIncompatibility/0c60d0b08c999769313bfe2335fa792efcfb0300.md new file mode 100644 index 0000000..6887917 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/0c60d0b08c999769313bfe2335fa792efcfb0300.md @@ -0,0 +1,62 @@ +CI detected that the dependency upgrade from version **spring-web-5.3.24** to **spring-web-6.0.7** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[95,52] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[28,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.7/spring-web-6.0.7.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[120,12] cannot find symbol
[ERROR] symbol: class ResponseEntity
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,38] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[96,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[102,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcher.java:[59,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcher + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[108,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[94,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[66,81] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[26,32] cannot access org.springframework.http.MediaType
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.7/spring-web-6.0.7.jar(/org/springframework/http/MediaType.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[52,32] cannot access org.springframework.http.ResponseEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.7/spring-web-6.0.7.jar(/org/springframework/http/ResponseEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[103,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[50,32] cannot access org.springframework.http.HttpStatus
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.7/spring-web-6.0.7.jar(/org/springframework/http/HttpStatus.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[51,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[55,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[35,32] cannot access org.springframework.http.HttpEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.7/spring-web-6.0.7.jar(/org/springframework/http/HttpEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[75,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.protocol.MessageService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[38,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.7/spring-beans-6.0.7.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[36,32] cannot access org.springframework.http.HttpHeaders
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.7/spring-web-6.0.7.jar(/org/springframework/http/HttpHeaders.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,19] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[57,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.7/spring-beans-6.0.7.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/0cdcc1f1319311f383676a89808c9b8eb190145c.md b/Resources/JavaVersionIncompatibility/0cdcc1f1319311f383676a89808c9b8eb190145c.md new file mode 100644 index 0000000..c28faf7 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/0cdcc1f1319311f383676a89808c9b8eb190145c.md @@ -0,0 +1,22 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.23** to **spring-core-6.0.3** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `test-suite.yml` +- `build.yml` +- `findbugs.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[25,32] cannot access org.springframework.util.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.3/spring-core-6.0.3.jar(/org/springframework/util/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[39,12] cannot find symbol
[ERROR] symbol: class TaskExecutor
[ERROR] location: class com.lpvs.LicensePreValidationSystem + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[17,37] cannot access org.springframework.core.task.TaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.3/spring-core-6.0.3.jar(/org/springframework/core/task/TaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/FileUtil.java:[13,32] cannot access org.springframework.util.FileSystemUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.3/spring-core-6.0.3.jar(/org/springframework/util/FileSystemUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/0ddd0efa29634a4783358cba727d0851236aa579.md b/Resources/JavaVersionIncompatibility/0ddd0efa29634a4783358cba727d0851236aa579.md new file mode 100644 index 0000000..9f4520b --- /dev/null +++ b/Resources/JavaVersionIncompatibility/0ddd0efa29634a4783358cba727d0851236aa579.md @@ -0,0 +1,82 @@ +CI detected that the dependency upgrade from version **spring-boot-starter-2.7.5** to **spring-boot-starter-3.0.5** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[209,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[74,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[97,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[45,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[35,2] cannot find symbol
[ERROR] symbol: class ConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[66,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[34,2] cannot find symbol
[ERROR] symbol: class Validated + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[198,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[58,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[48,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[210,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[76,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[37,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.7/spring-beans-6.0.7.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[72,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[50,2] cannot find symbol
[ERROR] symbol: class ConditionalOnClass + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[40,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[38,51] cannot access org.springframework.boot.context.properties.EnableConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.5/spring-boot-3.0.5.jar(/org/springframework/boot/context/properties/EnableConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[24,51] cannot access org.springframework.boot.context.properties.ConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.5/spring-boot-3.0.5.jar(/org/springframework/boot/context/properties/ConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[36,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnClass
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.5/spring-boot-autoconfigure-3.0.5.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[39,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[97,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[74,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[65,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.5/spring-boot-autoconfigure-3.0.5.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnProperty.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[36,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.7/spring-beans-6.0.7.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[38,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[25,49] cannot access org.springframework.validation.annotation.Validated
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/validation/annotation/Validated.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[56,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[49,2] cannot find symbol
[ERROR] symbol: class EnableConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[199,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[90,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[37,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.5/spring-boot-autoconfigure-3.0.5.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/DapsValidator.java:[40,2] cannot find symbol
[ERROR] symbol: class Service + +
diff --git a/Resources/JavaVersionIncompatibility/0ed34fa61c9e31bd4ebb7e4bf12ce792aec96091.md b/Resources/JavaVersionIncompatibility/0ed34fa61c9e31bd4ebb7e4bf12ce792aec96091.md new file mode 100644 index 0000000..b0bf79b --- /dev/null +++ b/Resources/JavaVersionIncompatibility/0ed34fa61c9e31bd4ebb7e4bf12ce792aec96091.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.9** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.9/spring-context-6.0.9.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.9/spring-context-6.0.9.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +
diff --git a/Resources/JavaVersionIncompatibility/11be71ab8713fe987785e9e25e4f3e410e709ab9.md b/Resources/JavaVersionIncompatibility/11be71ab8713fe987785e9e25e4f3e410e709ab9.md new file mode 100644 index 0000000..cce1cd6 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/11be71ab8713fe987785e9e25e4f3e410e709ab9.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.2** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +
diff --git a/Resources/JavaVersionIncompatibility/11c09e31119c28ea91a9777b2ce8893bca483493.md b/Resources/JavaVersionIncompatibility/11c09e31119c28ea91a9777b2ce8893bca483493.md new file mode 100644 index 0000000..f408dc1 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/11c09e31119c28ea91a9777b2ce8893bca483493.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.11** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.11/spring-context-6.0.11.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.11/spring-context-6.0.11.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/1506282e31f5b78fb4395a27f9ad901ef3d98c70.md b/Resources/JavaVersionIncompatibility/1506282e31f5b78fb4395a27f9ad901ef3d98c70.md new file mode 100644 index 0000000..a610f03 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/1506282e31f5b78fb4395a27f9ad901ef3d98c70.md @@ -0,0 +1,82 @@ +CI detected that the dependency upgrade from version **spring-boot-starter-2.7.5** to **spring-boot-starter-3.0.2** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[209,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[74,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[97,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[45,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[37,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.4/spring-beans-6.0.4.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[35,2] cannot find symbol
[ERROR] symbol: class ConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[34,2] cannot find symbol
[ERROR] symbol: class Validated + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[198,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[58,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[48,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[210,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[38,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[65,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.2/spring-boot-autoconfigure-3.0.2.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnProperty.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[76,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[72,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[50,2] cannot find symbol
[ERROR] symbol: class ConditionalOnClass + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[25,49] cannot access org.springframework.validation.annotation.Validated
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/validation/annotation/Validated.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[40,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[24,51] cannot access org.springframework.boot.context.properties.ConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.2/spring-boot-3.0.2.jar(/org/springframework/boot/context/properties/ConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[36,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.4/spring-beans-6.0.4.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[36,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnClass
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.2/spring-boot-autoconfigure-3.0.2.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[97,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[37,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.2/spring-boot-autoconfigure-3.0.2.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[74,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[39,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[38,51] cannot access org.springframework.boot.context.properties.EnableConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.2/spring-boot-3.0.2.jar(/org/springframework/boot/context/properties/EnableConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[56,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[49,2] cannot find symbol
[ERROR] symbol: class EnableConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[199,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[90,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/DapsValidator.java:[40,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[66,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/1629113f03956a230738c47397c33f8ba2d11341.md b/Resources/JavaVersionIncompatibility/1629113f03956a230738c47397c33f8ba2d11341.md new file mode 100644 index 0000000..9dfdcae --- /dev/null +++ b/Resources/JavaVersionIncompatibility/1629113f03956a230738c47397c33f8ba2d11341.md @@ -0,0 +1,22 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.27** to **spring-core-6.0.8** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `test-suite.yml` +- `build.yml` +- `findbugs.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/LPVSFileUtil.java:[15,32] cannot access org.springframework.util.FileSystemUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.8/spring-core-6.0.8.jar(/org/springframework/util/FileSystemUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[37,12] cannot find symbol
[ERROR] symbol: class TaskExecutor
[ERROR] location: class com.lpvs.LicensePreValidationSystem + +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[27,32] cannot access org.springframework.util.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.8/spring-core-6.0.8.jar(/org/springframework/util/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[15,37] cannot access org.springframework.core.task.TaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.8/spring-core-6.0.8.jar(/org/springframework/core/task/TaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/17778ff224c38fe03999cac8caa1814b68fd0ef2.md b/Resources/JavaVersionIncompatibility/17778ff224c38fe03999cac8caa1814b68fd0ef2.md new file mode 100644 index 0000000..91d7fbf --- /dev/null +++ b/Resources/JavaVersionIncompatibility/17778ff224c38fe03999cac8caa1814b68fd0ef2.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.7** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +
diff --git a/Resources/JavaVersionIncompatibility/1e1de78344a89be66d2e78f7adb07a479f6677eb.md b/Resources/JavaVersionIncompatibility/1e1de78344a89be66d2e78f7adb07a479f6677eb.md new file mode 100644 index 0000000..671dab9 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/1e1de78344a89be66d2e78f7adb07a479f6677eb.md @@ -0,0 +1,22 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.23** to **spring-core-6.0.4** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `test-suite.yml` +- `build.yml` +- `findbugs.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[39,12] cannot find symbol
[ERROR] symbol: class TaskExecutor
[ERROR] location: class com.lpvs.LicensePreValidationSystem + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[17,37] cannot access org.springframework.core.task.TaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar(/org/springframework/core/task/TaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/FileUtil.java:[13,32] cannot access org.springframework.util.FileSystemUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar(/org/springframework/util/FileSystemUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[25,32] cannot access org.springframework.util.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar(/org/springframework/util/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/2b3054325e9e55e1af6056b604048fc328dbb2dd.md b/Resources/JavaVersionIncompatibility/2b3054325e9e55e1af6056b604048fc328dbb2dd.md new file mode 100644 index 0000000..428651f --- /dev/null +++ b/Resources/JavaVersionIncompatibility/2b3054325e9e55e1af6056b604048fc328dbb2dd.md @@ -0,0 +1,16 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.24** to **spring-core-6.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ssl/keystore/KeyStoreManager.java:[61,35] cannot access org.springframework.core.io.ClassPathResource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.0/spring-core-6.0.0.jar(/org/springframework/core/io/ClassPathResource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/2c04b9834112eba86fbb8ad1f925128d49449c41.md b/Resources/JavaVersionIncompatibility/2c04b9834112eba86fbb8ad1f925128d49449c41.md new file mode 100644 index 0000000..1993c97 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/2c04b9834112eba86fbb8ad1f925128d49449c41.md @@ -0,0 +1,34 @@ +CI detected that the dependency upgrade from version **spring-cloud-stream-3.0.7.RELEASE** to **spring-cloud-stream-4.0.1** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `ci.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[13,47] cannot access org.springframework.cloud.stream.config.BindingServiceConfiguration
[ERROR] bad class file: /root/.m2/repository/org/springframework/cloud/spring-cloud-stream/4.0.1/spring-cloud-stream-4.0.1.jar(/org/springframework/cloud/stream/config/BindingServiceConfiguration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[10,51] cannot find symbol
[ERROR] symbol: class EnableBinding
[ERROR] location: package org.springframework.cloud.stream.annotation + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[11,51] cannot find symbol
[ERROR] symbol: class Output
[ERROR] location: package org.springframework.cloud.stream.annotation + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[12,47] cannot access org.springframework.cloud.stream.config.BindingProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/cloud/spring-cloud-stream/4.0.1/spring-cloud-stream-4.0.1.jar(/org/springframework/cloud/stream/config/BindingProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[42,38] cannot find symbol
[ERROR] symbol: class BindingServiceProperties
[ERROR] location: class cn.monitor4all.logRecord.configuration.StreamSenderConfiguration + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[14,47] cannot access org.springframework.cloud.stream.config.BindingServiceProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/cloud/spring-cloud-stream/4.0.1/spring-cloud-stream-4.0.1.jar(/org/springframework/cloud/stream/config/BindingServiceProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[29,2] cannot find symbol
[ERROR] symbol: class EnableBinding + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[40,19] cannot find symbol
[ERROR] symbol: class BindingServiceProperties
[ERROR] location: class cn.monitor4all.logRecord.configuration.StreamSenderConfiguration + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[77,10] cannot find symbol
[ERROR] symbol: class Output
[ERROR] location: interface cn.monitor4all.logRecord.configuration.StreamSenderConfiguration.LogRecordChannel + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[27,21] cannot find symbol
[ERROR] symbol: class BindingServiceConfiguration + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[28,23] cannot find symbol
[ERROR] symbol: class BindingServiceConfiguration + +
diff --git a/Resources/JavaVersionIncompatibility/315060cd2c7a3812a4adf614b042de84e9c39da4.md b/Resources/JavaVersionIncompatibility/315060cd2c7a3812a4adf614b042de84e9c39da4.md new file mode 100644 index 0000000..478e9f9 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/315060cd2c7a3812a4adf614b042de84e9c39da4.md @@ -0,0 +1,16 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.24** to **spring-core-6.0.5** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ssl/keystore/KeyStoreManager.java:[61,35] cannot access org.springframework.core.io.ClassPathResource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.5/spring-core-6.0.5.jar(/org/springframework/core/io/ClassPathResource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/3b4a91979f0d93ca4cbb79e6cfa5029a6b8eaf01.md b/Resources/JavaVersionIncompatibility/3b4a91979f0d93ca4cbb79e6cfa5029a6b8eaf01.md new file mode 100644 index 0000000..19b5da2 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/3b4a91979f0d93ca4cbb79e6cfa5029a6b8eaf01.md @@ -0,0 +1,28 @@ +CI detected that the dependency upgrade from version **opennlp-tools-2.2.0** to **opennlp-tools-2.3.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `maven.test.yaml` +- `maven.release.yml` +- `codecov.yaml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /jtcop/src/main/java/com/github/lombrozo/testnames/rules/ml/RulePresentSimpleMl.java:[53,19] cannot find symbol
[ERROR] symbol: class POSTaggerME
[ERROR] location: class com.github.lombrozo.testnames.rules.ml.RulePresentSimpleMl + +* > [ERROR] /jtcop/src/main/java/com/github/lombrozo/testnames/rules/ml/ModelSourceInternet.java:[60,12] cannot find symbol
[ERROR] symbol: class POSModel
[ERROR] location: class com.github.lombrozo.testnames.rules.ml.ModelSourceInternet + +* > [ERROR] /jtcop/src/main/java/com/github/lombrozo/testnames/rules/ml/ModelSourceFileSystem.java:[28,28] cannot access opennlp.tools.postag.POSModel
[ERROR] bad class file: /root/.m2/repository/org/apache/opennlp/opennlp-tools/2.3.0/opennlp-tools-2.3.0.jar(/opennlp/tools/postag/POSModel.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jtcop/src/main/java/com/github/lombrozo/testnames/rules/ml/RulePresentSimpleMl.java:[65,31] cannot find symbol
[ERROR] symbol: class POSTaggerME
[ERROR] location: class com.github.lombrozo.testnames.rules.ml.RulePresentSimpleMl + +* > [ERROR] /jtcop/src/main/java/com/github/lombrozo/testnames/rules/ml/RulePresentSimpleMl.java:[36,28] cannot access opennlp.tools.postag.POSTaggerME
[ERROR] bad class file: /root/.m2/repository/org/apache/opennlp/opennlp-tools/2.3.0/opennlp-tools-2.3.0.jar(/opennlp/tools/postag/POSTaggerME.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jtcop/src/main/java/com/github/lombrozo/testnames/rules/ml/ModelSource.java:[41,5] cannot find symbol
[ERROR] symbol: class POSModel
[ERROR] location: interface com.github.lombrozo.testnames.rules.ml.ModelSource + +* > [ERROR] /jtcop/src/main/java/com/github/lombrozo/testnames/rules/ml/ModelSourceFileSystem.java:[52,12] cannot find symbol
[ERROR] symbol: class POSModel
[ERROR] location: class com.github.lombrozo.testnames.rules.ml.ModelSourceFileSystem + +
diff --git a/Resources/JavaVersionIncompatibility/3d0cc7db9d9c9420fa4f478a72067ef846ba8129.md b/Resources/JavaVersionIncompatibility/3d0cc7db9d9c9420fa4f478a72067ef846ba8129.md new file mode 100644 index 0000000..ebc4ff1 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/3d0cc7db9d9c9420fa4f478a72067ef846ba8129.md @@ -0,0 +1,73 @@ +CI detected that the dependency upgrade from version **jooq-meta-3.16.6** to **jooq-meta-3.17.5** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `codeql-analysis.yml` +- `maven.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,16] cannot find symbol
[ERROR] symbol: variable DSL
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[48,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,29] cannot access org.jooq.tools.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.5/jooq-3.17.5.jar(/org/jooq/tools/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[59,54] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[14,26] cannot access org.jooq.exception.DataAccessException
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.5/jooq-3.17.5.jar(/org/jooq/exception/DataAccessException.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[38,42] cannot find symbol
[ERROR] symbol: class PostgresDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,40] cannot find symbol
[ERROR] symbol: variable SQLDialect
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[88,47] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[98,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,26] cannot find symbol
[ERROR] symbol: class JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[79,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[13,16] cannot access org.jooq.SQLDialect
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.5/jooq-3.17.5.jar(/org/jooq/SQLDialect.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,43] cannot find symbol
[ERROR] symbol: variable JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[109,17] cannot find symbol
[ERROR] symbol: method setConnection(java.sql.Connection)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[97,40] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[118,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[84,60] cannot find symbol
[ERROR] symbol: method getBasedir()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[17,22] cannot access org.jooq.tools.JooqLogger
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.5/jooq-3.17.5.jar(/org/jooq/tools/JooqLogger.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[15,21] cannot access org.jooq.impl.DSL
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.5/jooq-3.17.5.jar(/org/jooq/impl/DSL.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[78,44] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[16,30] cannot access org.jooq.meta.postgres.PostgresDatabase
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq-meta/3.17.5/jooq-meta-3.17.5.jar(/org/jooq/meta/postgres/PostgresDatabase.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[61,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,1] static import only from classes and interfaces + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[49,15] cannot find symbol
[ERROR] symbol: class DSLContext
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[89,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[120,9] cannot find symbol
[ERROR] symbol: variable JDBCUtils
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[126,9] cannot find symbol
[ERROR] symbol: variable super
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[12,16] cannot access org.jooq.DSLContext
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.5/jooq-3.17.5.jar(/org/jooq/DSLContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[112,27] cannot find symbol
[ERROR] symbol: class DataAccessException
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[18,27] cannot access org.jooq.tools.jdbc.JDBCUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.5/jooq-3.17.5.jar(/org/jooq/tools/jdbc/JDBCUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/3d2b38ee1c838d885db80326b3cd60e314704e39.md b/Resources/JavaVersionIncompatibility/3d2b38ee1c838d885db80326b3cd60e314704e39.md new file mode 100644 index 0000000..6820396 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/3d2b38ee1c838d885db80326b3cd60e314704e39.md @@ -0,0 +1,34 @@ +CI detected that the dependency upgrade from version **spring-cloud-stream-3.0.7.RELEASE** to **spring-cloud-stream-4.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `ci.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[10,51] cannot find symbol
[ERROR] symbol: class EnableBinding
[ERROR] location: package org.springframework.cloud.stream.annotation + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[13,47] cannot access org.springframework.cloud.stream.config.BindingServiceConfiguration
[ERROR] bad class file: /root/.m2/repository/org/springframework/cloud/spring-cloud-stream/4.0.0/spring-cloud-stream-4.0.0.jar(/org/springframework/cloud/stream/config/BindingServiceConfiguration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[11,51] cannot find symbol
[ERROR] symbol: class Output
[ERROR] location: package org.springframework.cloud.stream.annotation + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[42,38] cannot find symbol
[ERROR] symbol: class BindingServiceProperties
[ERROR] location: class cn.monitor4all.logRecord.configuration.StreamSenderConfiguration + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[12,47] cannot access org.springframework.cloud.stream.config.BindingProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/cloud/spring-cloud-stream/4.0.0/spring-cloud-stream-4.0.0.jar(/org/springframework/cloud/stream/config/BindingProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[29,2] cannot find symbol
[ERROR] symbol: class EnableBinding + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[40,19] cannot find symbol
[ERROR] symbol: class BindingServiceProperties
[ERROR] location: class cn.monitor4all.logRecord.configuration.StreamSenderConfiguration + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[77,10] cannot find symbol
[ERROR] symbol: class Output
[ERROR] location: interface cn.monitor4all.logRecord.configuration.StreamSenderConfiguration.LogRecordChannel + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[14,47] cannot access org.springframework.cloud.stream.config.BindingServiceProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/cloud/spring-cloud-stream/4.0.0/spring-cloud-stream-4.0.0.jar(/org/springframework/cloud/stream/config/BindingServiceProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[27,21] cannot find symbol
[ERROR] symbol: class BindingServiceConfiguration + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[28,23] cannot find symbol
[ERROR] symbol: class BindingServiceConfiguration + +
diff --git a/Resources/JavaVersionIncompatibility/404e4edc99c0ef601ad3a343f168194815db4151.md b/Resources/JavaVersionIncompatibility/404e4edc99c0ef601ad3a343f168194815db4151.md new file mode 100644 index 0000000..899b77a --- /dev/null +++ b/Resources/JavaVersionIncompatibility/404e4edc99c0ef601ad3a343f168194815db4151.md @@ -0,0 +1,62 @@ +CI detected that the dependency upgrade from version **spring-web-5.3.24** to **spring-web-6.0.8** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[95,52] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[26,32] cannot access org.springframework.http.MediaType
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.8/spring-web-6.0.8.jar(/org/springframework/http/MediaType.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[120,12] cannot find symbol
[ERROR] symbol: class ResponseEntity
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,38] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[28,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.8/spring-web-6.0.8.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[96,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[102,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcher.java:[59,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcher + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[108,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[94,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[66,81] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[103,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[51,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[38,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.8/spring-beans-6.0.8.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[55,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[52,32] cannot access org.springframework.http.ResponseEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.8/spring-web-6.0.8.jar(/org/springframework/http/ResponseEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[75,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.protocol.MessageService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[50,32] cannot access org.springframework.http.HttpStatus
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.8/spring-web-6.0.8.jar(/org/springframework/http/HttpStatus.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,19] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[36,32] cannot access org.springframework.http.HttpHeaders
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.8/spring-web-6.0.8.jar(/org/springframework/http/HttpHeaders.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[57,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.8/spring-beans-6.0.8.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[35,32] cannot access org.springframework.http.HttpEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.8/spring-web-6.0.8.jar(/org/springframework/http/HttpEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/4259baebb426fefbe9dbee26725d6803170dcb85.md b/Resources/JavaVersionIncompatibility/4259baebb426fefbe9dbee26725d6803170dcb85.md new file mode 100644 index 0000000..41eec7b --- /dev/null +++ b/Resources/JavaVersionIncompatibility/4259baebb426fefbe9dbee26725d6803170dcb85.md @@ -0,0 +1,68 @@ +CI detected that the dependency upgrade from version **spring-web-4.1.6.RELEASE** to **spring-web-6.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `maven.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/spring/config/LtiLaunchSecurityConfig.java:[42,6] cannot find symbol
[ERROR] symbol: class Order
[ERROR] location: class edu.ksu.lti.launch.spring.config.LtiLaunchSecurityConfig + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/LtiLaunchController.java:[11,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/service/LtiSessionService.java:[6,47] cannot access org.springframework.web.context.request.RequestContextHolder
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/web/context/request/RequestContextHolder.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/OauthController.java:[89,18] cannot find symbol
[ERROR] symbol: class ModelAttribute
[ERROR] location: class edu.ksu.lti.launch.controller.OauthController + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/oauth/LtiLaunch.java:[30,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.oauth.LtiLaunch + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/LtiLaunchController.java:[28,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.controller.LtiLaunchController + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/oauth/LtiLaunch.java:[34,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.oauth.LtiLaunch + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/LtiLaunchController.java:[32,30] cannot find symbol
[ERROR] symbol: class ModelAttribute
[ERROR] location: class edu.ksu.lti.launch.controller.LtiLaunchController + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/LtiLaunchController.java:[31,49] cannot find symbol
[ERROR] symbol: variable RequestMethod
[ERROR] location: class edu.ksu.lti.launch.controller.LtiLaunchController + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/OauthController.java:[18,47] cannot access org.springframework.web.bind.annotation.RequestMapping
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/web/bind/annotation/RequestMapping.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/spring/config/LtiLaunchSecurityConfig.java:[9,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.0/spring-beans-6.0.0.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/spring/config/LtiLaunchSecurityConfig.java:[44,10] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.spring.config.LtiLaunchSecurityConfig.LTISecurityConfigurerAdapter + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/OauthController.java:[44,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.controller.OauthController + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/service/LtiSessionService.java:[7,47] cannot access org.springframework.web.context.request.ServletRequestAttributes
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/web/context/request/ServletRequestAttributes.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/spring/config/LtiLaunchSecurityConfig.java:[46,10] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.spring.config.LtiLaunchSecurityConfig.LTISecurityConfigurerAdapter + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/spring/config/LtiLaunchSecurityConfig.java:[51,10] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.spring.config.LtiLaunchSecurityConfig.LTISecurityConfigurerAdapter + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/LtiLaunchController.java:[31,6] cannot find symbol
[ERROR] symbol: class RequestMapping
[ERROR] location: class edu.ksu.lti.launch.controller.LtiLaunchController + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/security/CanvasInstanceChecker.java:[25,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.security.CanvasInstanceChecker + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/OauthController.java:[17,47] cannot access org.springframework.web.bind.annotation.ModelAttribute
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/web/bind/annotation/ModelAttribute.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/OauthController.java:[88,18] cannot find symbol
[ERROR] symbol: class ModelAttribute
[ERROR] location: class edu.ksu.lti.launch.controller.OauthController + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/oauth/LtiLaunch.java:[32,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.oauth.LtiLaunch + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/OauthController.java:[85,6] cannot find symbol
[ERROR] symbol: class RequestMapping
[ERROR] location: class edu.ksu.lti.launch.controller.OauthController + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/oauth/LtiLaunch.java:[36,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.oauth.LtiLaunch + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/OauthController.java:[51,6] cannot find symbol
[ERROR] symbol: class RequestMapping
[ERROR] location: class edu.ksu.lti.launch.controller.OauthController + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/spring/config/LtiLaunchSecurityConfig.java:[12,43] cannot access org.springframework.core.annotation.Order
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.0/spring-core-6.0.0.jar(/org/springframework/core/annotation/Order.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/spring/config/LtiLaunchSecurityConfig.java:[48,10] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.spring.config.LtiLaunchSecurityConfig.LTISecurityConfigurerAdapter + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/controller/OauthController.java:[90,18] cannot find symbol
[ERROR] symbol: class ModelAttribute
[ERROR] location: class edu.ksu.lti.launch.controller.OauthController + +* > [ERROR] /lti-launch/src/main/java/edu/ksu/lti/launch/oauth/LtiConsumerDetailsService.java:[28,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class edu.ksu.lti.launch.oauth.LtiConsumerDetailsService + +
diff --git a/Resources/JavaVersionIncompatibility/433fbc0ee1192ca4aa69f337fd3b530ec94906e9.md b/Resources/JavaVersionIncompatibility/433fbc0ee1192ca4aa69f337fd3b530ec94906e9.md new file mode 100644 index 0000000..45dd395 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/433fbc0ee1192ca4aa69f337fd3b530ec94906e9.md @@ -0,0 +1,22 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.27** to **spring-core-6.0.9** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `test-suite.yml` +- `build.yml` +- `findbugs.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[15,37] cannot access org.springframework.core.task.TaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.9/spring-core-6.0.9.jar(/org/springframework/core/task/TaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/LPVSFileUtil.java:[15,32] cannot access org.springframework.util.FileSystemUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.9/spring-core-6.0.9.jar(/org/springframework/util/FileSystemUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[37,12] cannot find symbol
[ERROR] symbol: class TaskExecutor
[ERROR] location: class com.lpvs.LicensePreValidationSystem + +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[27,32] cannot access org.springframework.util.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.9/spring-core-6.0.9.jar(/org/springframework/util/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/44e6ae1bd9fea04c5c6edeee53c673e7c0310dff.md b/Resources/JavaVersionIncompatibility/44e6ae1bd9fea04c5c6edeee53c673e7c0310dff.md new file mode 100644 index 0000000..dd5176e --- /dev/null +++ b/Resources/JavaVersionIncompatibility/44e6ae1bd9fea04c5c6edeee53c673e7c0310dff.md @@ -0,0 +1,33 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.4** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `release.yaml` +- `ci.yaml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[77,38] cannot access org.springframework.core.io.Resource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar(/org/springframework/core/io/Resource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[19,45] cannot access org.springframework.format.annotation.DateTimeFormat
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/format/annotation/DateTimeFormat.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +
diff --git a/Resources/JavaVersionIncompatibility/4607926d691c986e2e172f636db7c527945c5b45.md b/Resources/JavaVersionIncompatibility/4607926d691c986e2e172f636db7c527945c5b45.md new file mode 100644 index 0000000..ad5b188 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/4607926d691c986e2e172f636db7c527945c5b45.md @@ -0,0 +1,62 @@ +CI detected that the dependency upgrade from version **spring-web-5.3.24** to **spring-web-6.0.4** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[95,52] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[120,12] cannot find symbol
[ERROR] symbol: class ResponseEntity
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,38] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[96,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[102,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcher.java:[59,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcher + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[108,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[94,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[66,81] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[103,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[26,32] cannot access org.springframework.http.MediaType
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.4/spring-web-6.0.4.jar(/org/springframework/http/MediaType.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[36,32] cannot access org.springframework.http.HttpHeaders
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.4/spring-web-6.0.4.jar(/org/springframework/http/HttpHeaders.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[51,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[55,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[35,32] cannot access org.springframework.http.HttpEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.4/spring-web-6.0.4.jar(/org/springframework/http/HttpEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[75,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.protocol.MessageService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,19] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[50,32] cannot access org.springframework.http.HttpStatus
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.4/spring-web-6.0.4.jar(/org/springframework/http/HttpStatus.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[52,32] cannot access org.springframework.http.ResponseEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.4/spring-web-6.0.4.jar(/org/springframework/http/ResponseEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[57,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.4/spring-beans-6.0.4.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[28,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.4/spring-web-6.0.4.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[38,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.4/spring-beans-6.0.4.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/4861e40d7047a73bdbae1a4856a2b5ee4a79071a.md b/Resources/JavaVersionIncompatibility/4861e40d7047a73bdbae1a4856a2b5ee4a79071a.md new file mode 100644 index 0000000..c9d5563 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/4861e40d7047a73bdbae1a4856a2b5ee4a79071a.md @@ -0,0 +1,62 @@ +CI detected that the dependency upgrade from version **spring-web-5.3.24** to **spring-web-6.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[95,52] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[120,12] cannot find symbol
[ERROR] symbol: class ResponseEntity
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,38] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[96,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[102,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[57,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.0/spring-beans-6.0.0.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcher.java:[59,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcher + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[108,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[94,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[50,32] cannot access org.springframework.http.HttpStatus
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/http/HttpStatus.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[66,81] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[103,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[38,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.0/spring-beans-6.0.0.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[51,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[35,32] cannot access org.springframework.http.HttpEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/http/HttpEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[55,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[26,32] cannot access org.springframework.http.MediaType
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/http/MediaType.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[75,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.protocol.MessageService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,19] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[28,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[52,32] cannot access org.springframework.http.ResponseEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/http/ResponseEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[36,32] cannot access org.springframework.http.HttpHeaders
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/http/HttpHeaders.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/4b9fdf1135b704e050cf785d6ea353d24f4c64bb.md b/Resources/JavaVersionIncompatibility/4b9fdf1135b704e050cf785d6ea353d24f4c64bb.md new file mode 100644 index 0000000..938f6a9 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/4b9fdf1135b704e050cf785d6ea353d24f4c64bb.md @@ -0,0 +1,62 @@ +CI detected that the dependency upgrade from version **spring-web-5.3.24** to **spring-web-6.0.1** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[36,32] cannot access org.springframework.http.HttpHeaders
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.1/spring-web-6.0.1.jar(/org/springframework/http/HttpHeaders.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[95,52] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[26,32] cannot access org.springframework.http.MediaType
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.1/spring-web-6.0.1.jar(/org/springframework/http/MediaType.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[120,12] cannot find symbol
[ERROR] symbol: class ResponseEntity
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,38] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[52,32] cannot access org.springframework.http.ResponseEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.1/spring-web-6.0.1.jar(/org/springframework/http/ResponseEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[96,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[102,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcher.java:[59,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcher + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[57,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.1/spring-beans-6.0.1.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[108,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[94,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[38,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.1/spring-beans-6.0.1.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[66,81] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[103,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[51,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[50,32] cannot access org.springframework.http.HttpStatus
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.1/spring-web-6.0.1.jar(/org/springframework/http/HttpStatus.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[55,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[75,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.protocol.MessageService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,19] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[35,32] cannot access org.springframework.http.HttpEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.1/spring-web-6.0.1.jar(/org/springframework/http/HttpEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[28,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.1/spring-web-6.0.1.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/5320d2638b01419a8bac95e0ee939523831a720a.md b/Resources/JavaVersionIncompatibility/5320d2638b01419a8bac95e0ee939523831a720a.md new file mode 100644 index 0000000..552a604 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/5320d2638b01419a8bac95e0ee939523831a720a.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.4** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +
diff --git a/Resources/JavaVersionIncompatibility/58d2448fa2d6ec02f428b85eaeef0855508e72b9.md b/Resources/JavaVersionIncompatibility/58d2448fa2d6ec02f428b85eaeef0855508e72b9.md new file mode 100644 index 0000000..97f2e33 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/58d2448fa2d6ec02f428b85eaeef0855508e72b9.md @@ -0,0 +1,64 @@ +CI detected that the dependency upgrade from version **spring-webmvc-5.3.24** to **spring-webmvc-6.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[31,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[39,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.0/spring-context-6.0.0.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[47,13] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[29,50] cannot access org.springframework.web.servlet.mvc.method.RequestMappingInfo
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.0/spring-webmvc-6.0.0.jar(/org/springframework/web/servlet/mvc/method/RequestMappingInfo.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[109,13] cannot find symbol
[ERROR] symbol: class RequestMappingInfo
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[25,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.0/spring-context-6.0.0.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[35,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/NotificationTemplateProvider.java:[73,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[46,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[36,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/builder/IdsRequestBuilderService.java:[33,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[53,38] cannot access org.springframework.stereotype.Controller
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.0/spring-context-6.0.0.jar(/org/springframework/stereotype/Controller.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[31,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.0/spring-context-6.0.0.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[44,19] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[38,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/RequestTemplateProvider.java:[58,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[61,2] cannot find symbol
[ERROR] symbol: class Controller + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[30,61] cannot access org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.0/spring-webmvc-6.0.0.jar(/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[64,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[28,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.0/spring-context-6.0.0.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[49,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcherProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[57,34] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[52,47] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[29,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.0/spring-context-6.0.0.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[40,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.util.SerializerProvider + +
diff --git a/Resources/JavaVersionIncompatibility/59849004763ffd66d14047d51908192ba0551a73.md b/Resources/JavaVersionIncompatibility/59849004763ffd66d14047d51908192ba0551a73.md new file mode 100644 index 0000000..d8b6a53 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/59849004763ffd66d14047d51908192ba0551a73.md @@ -0,0 +1,33 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `release.yaml` +- `ci.yaml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[19,45] cannot access org.springframework.format.annotation.DateTimeFormat
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.0/spring-context-6.0.0.jar(/org/springframework/format/annotation/DateTimeFormat.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[77,38] cannot access org.springframework.core.io.Resource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.0/spring-core-6.0.0.jar(/org/springframework/core/io/Resource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +
diff --git a/Resources/JavaVersionIncompatibility/5b90c67ef2d2ebb296534ea2ce8d8955cf6854c7.md b/Resources/JavaVersionIncompatibility/5b90c67ef2d2ebb296534ea2ce8d8955cf6854c7.md new file mode 100644 index 0000000..c00ad4a --- /dev/null +++ b/Resources/JavaVersionIncompatibility/5b90c67ef2d2ebb296534ea2ce8d8955cf6854c7.md @@ -0,0 +1,22 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.27** to **spring-core-6.0.10** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `test-suite.yml` +- `build.yml` +- `findbugs.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[27,32] cannot access org.springframework.util.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.10/spring-core-6.0.10.jar(/org/springframework/util/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[37,12] cannot find symbol
[ERROR] symbol: class TaskExecutor
[ERROR] location: class com.lpvs.LicensePreValidationSystem + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/LPVSFileUtil.java:[15,32] cannot access org.springframework.util.FileSystemUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.10/spring-core-6.0.10.jar(/org/springframework/util/FileSystemUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[15,37] cannot access org.springframework.core.task.TaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.10/spring-core-6.0.10.jar(/org/springframework/core/task/TaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/5f09581fe834abe1430c0bb894d095071bd1d581.md b/Resources/JavaVersionIncompatibility/5f09581fe834abe1430c0bb894d095071bd1d581.md new file mode 100644 index 0000000..e0e60cc --- /dev/null +++ b/Resources/JavaVersionIncompatibility/5f09581fe834abe1430c0bb894d095071bd1d581.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.5** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +
diff --git a/Resources/JavaVersionIncompatibility/626631e833256a62137c1e5c35c5c5821ca700d5.md b/Resources/JavaVersionIncompatibility/626631e833256a62137c1e5c35c5c5821ca700d5.md new file mode 100644 index 0000000..ba07b58 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/626631e833256a62137c1e5c35c5c5821ca700d5.md @@ -0,0 +1,73 @@ +CI detected that the dependency upgrade from version **jooq-meta-3.16.6** to **jooq-meta-3.17.4** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `codeql-analysis.yml` +- `maven.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[16,30] cannot access org.jooq.meta.postgres.PostgresDatabase
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq-meta/3.17.4/jooq-meta-3.17.4.jar(/org/jooq/meta/postgres/PostgresDatabase.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,16] cannot find symbol
[ERROR] symbol: variable DSL
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[48,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[59,54] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[38,42] cannot find symbol
[ERROR] symbol: class PostgresDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,40] cannot find symbol
[ERROR] symbol: variable SQLDialect
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[88,47] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[98,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,26] cannot find symbol
[ERROR] symbol: class JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[79,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,43] cannot find symbol
[ERROR] symbol: variable JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[109,17] cannot find symbol
[ERROR] symbol: method setConnection(java.sql.Connection)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[97,40] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[118,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[15,21] cannot access org.jooq.impl.DSL
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.4/jooq-3.17.4.jar(/org/jooq/impl/DSL.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[84,60] cannot find symbol
[ERROR] symbol: method getBasedir()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[13,16] cannot access org.jooq.SQLDialect
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.4/jooq-3.17.4.jar(/org/jooq/SQLDialect.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[78,44] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[18,27] cannot access org.jooq.tools.jdbc.JDBCUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.4/jooq-3.17.4.jar(/org/jooq/tools/jdbc/JDBCUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[61,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,1] static import only from classes and interfaces + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[17,22] cannot access org.jooq.tools.JooqLogger
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.4/jooq-3.17.4.jar(/org/jooq/tools/JooqLogger.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[49,15] cannot find symbol
[ERROR] symbol: class DSLContext
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[89,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[120,9] cannot find symbol
[ERROR] symbol: variable JDBCUtils
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[126,9] cannot find symbol
[ERROR] symbol: variable super
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[12,16] cannot access org.jooq.DSLContext
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.4/jooq-3.17.4.jar(/org/jooq/DSLContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[112,27] cannot find symbol
[ERROR] symbol: class DataAccessException
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[14,26] cannot access org.jooq.exception.DataAccessException
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.4/jooq-3.17.4.jar(/org/jooq/exception/DataAccessException.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,29] cannot access org.jooq.tools.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.4/jooq-3.17.4.jar(/org/jooq/tools/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/67cb9570f6b1d90e2653ab5efd137af3edebc9b5.md b/Resources/JavaVersionIncompatibility/67cb9570f6b1d90e2653ab5efd137af3edebc9b5.md new file mode 100644 index 0000000..e86e9ba --- /dev/null +++ b/Resources/JavaVersionIncompatibility/67cb9570f6b1d90e2653ab5efd137af3edebc9b5.md @@ -0,0 +1,64 @@ +CI detected that the dependency upgrade from version **spring-webmvc-5.3.24** to **spring-webmvc-6.0.6** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[31,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[47,13] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[25,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[109,13] cannot find symbol
[ERROR] symbol: class RequestMappingInfo
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[31,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[29,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[35,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/NotificationTemplateProvider.java:[73,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[30,61] cannot access org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.6/spring-webmvc-6.0.6.jar(/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[28,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[46,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[36,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/builder/IdsRequestBuilderService.java:[33,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[39,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[44,19] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[38,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/RequestTemplateProvider.java:[58,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[61,2] cannot find symbol
[ERROR] symbol: class Controller + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[29,50] cannot access org.springframework.web.servlet.mvc.method.RequestMappingInfo
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.6/spring-webmvc-6.0.6.jar(/org/springframework/web/servlet/mvc/method/RequestMappingInfo.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[64,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[49,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcherProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[57,34] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[53,38] cannot access org.springframework.stereotype.Controller
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/stereotype/Controller.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[52,47] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[40,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.util.SerializerProvider + +
diff --git a/Resources/JavaVersionIncompatibility/6e9e6cdda5c5637ce66ba16b8ccfcd5ffce8141d.md b/Resources/JavaVersionIncompatibility/6e9e6cdda5c5637ce66ba16b8ccfcd5ffce8141d.md new file mode 100644 index 0000000..f63b4de --- /dev/null +++ b/Resources/JavaVersionIncompatibility/6e9e6cdda5c5637ce66ba16b8ccfcd5ffce8141d.md @@ -0,0 +1,34 @@ +CI detected that the dependency upgrade from version **spring-cloud-stream-3.0.7.RELEASE** to **spring-cloud-stream-4.0.2** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `ci.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[10,51] cannot find symbol
[ERROR] symbol: class EnableBinding
[ERROR] location: package org.springframework.cloud.stream.annotation + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[11,51] cannot find symbol
[ERROR] symbol: class Output
[ERROR] location: package org.springframework.cloud.stream.annotation + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[12,47] cannot access org.springframework.cloud.stream.config.BindingProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/cloud/spring-cloud-stream/4.0.2/spring-cloud-stream-4.0.2.jar(/org/springframework/cloud/stream/config/BindingProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[13,47] cannot access org.springframework.cloud.stream.config.BindingServiceConfiguration
[ERROR] bad class file: /root/.m2/repository/org/springframework/cloud/spring-cloud-stream/4.0.2/spring-cloud-stream-4.0.2.jar(/org/springframework/cloud/stream/config/BindingServiceConfiguration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[42,38] cannot find symbol
[ERROR] symbol: class BindingServiceProperties
[ERROR] location: class cn.monitor4all.logRecord.configuration.StreamSenderConfiguration + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[14,47] cannot access org.springframework.cloud.stream.config.BindingServiceProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/cloud/spring-cloud-stream/4.0.2/spring-cloud-stream-4.0.2.jar(/org/springframework/cloud/stream/config/BindingServiceProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[29,2] cannot find symbol
[ERROR] symbol: class EnableBinding + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[40,19] cannot find symbol
[ERROR] symbol: class BindingServiceProperties
[ERROR] location: class cn.monitor4all.logRecord.configuration.StreamSenderConfiguration + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[77,10] cannot find symbol
[ERROR] symbol: class Output
[ERROR] location: interface cn.monitor4all.logRecord.configuration.StreamSenderConfiguration.LogRecordChannel + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[27,21] cannot find symbol
[ERROR] symbol: class BindingServiceConfiguration + +* > [ERROR] /log-record/src/main/java/cn/monitor4all/logRecord/configuration/StreamSenderConfiguration.java:[28,23] cannot find symbol
[ERROR] symbol: class BindingServiceConfiguration + +
diff --git a/Resources/JavaVersionIncompatibility/70e13f6bdb7de7f8eda9f174a5616284f2157ea7.md b/Resources/JavaVersionIncompatibility/70e13f6bdb7de7f8eda9f174a5616284f2157ea7.md new file mode 100644 index 0000000..36ebed3 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/70e13f6bdb7de7f8eda9f174a5616284f2157ea7.md @@ -0,0 +1,60 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.19** to **spring-core-6.0.2** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `ci.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[23,43] cannot access org.springframework.util.concurrent.ListenableFuture
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.2/spring-core-6.0.2.jar(/org/springframework/util/concurrent/ListenableFuture.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[21,37] cannot access org.springframework.core.task.AsyncListenableTaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.2/spring-core-6.0.2.jar(/org/springframework/core/task/AsyncListenableTaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[35,44] cannot find symbol
[ERROR] symbol: class ListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[44,12] cannot find symbol
[ERROR] symbol: class ListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[29,120] cannot find symbol
[ERROR] symbol: class ListenableFuture + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[32,19] cannot find symbol
[ERROR] symbol: class ListenableFutureCallback
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[22,45] cannot access org.springframework.core.task.support.TaskExecutorAdapter
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.2/spring-core-6.0.2.jar(/org/springframework/core/task/support/TaskExecutorAdapter.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[24,43] cannot access org.springframework.util.concurrent.SettableListenableFuture
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.2/spring-core-6.0.2.jar(/org/springframework/util/concurrent/SettableListenableFuture.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[72,31] cannot find symbol
[ERROR] symbol: class ListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[51,12] cannot find symbol
[ERROR] symbol: class ListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[31,123] cannot find symbol
[ERROR] symbol: class ListenableFuture + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[74,13] method does not override or implement a method from a supertype + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[80,13] method does not override or implement a method from a supertype + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[31,62] cannot find symbol
[ERROR] symbol: class TaskExecutorAdapter
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[73,41] cannot find symbol
[ERROR] symbol: class ListenableFutureCallback
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[45,55] cannot find symbol
[ERROR] symbol: class SettableListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[32,68] cannot find symbol
[ERROR] symbol: class ListenableFutureCallback
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[45,9] cannot find symbol
[ERROR] symbol: class SettableListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[34,12] cannot find symbol
[ERROR] symbol: class ListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[37,41] cannot find symbol
[ERROR] symbol: class ListenableFutureCallback
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[31,19] cannot find symbol
[ERROR] symbol: class AsyncListenableTaskExecutor
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[43,13] method does not override or implement a method from a supertype + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[22,43] cannot access org.springframework.util.concurrent.ListenableFutureCallback
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.2/spring-core-6.0.2.jar(/org/springframework/util/concurrent/ListenableFutureCallback.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[38,13] method does not override or implement a method from a supertype + +
diff --git a/Resources/JavaVersionIncompatibility/79759978f25c94d97f340c80ef0e77c3ee6f8cfc.md b/Resources/JavaVersionIncompatibility/79759978f25c94d97f340c80ef0e77c3ee6f8cfc.md new file mode 100644 index 0000000..1830191 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/79759978f25c94d97f340c80ef0e77c3ee6f8cfc.md @@ -0,0 +1,16 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.24** to **spring-core-6.0.6** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ssl/keystore/KeyStoreManager.java:[61,35] cannot access org.springframework.core.io.ClassPathResource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.6/spring-core-6.0.6.jar(/org/springframework/core/io/ClassPathResource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/7cda77e3b9981dba271f866ec727ad9c6af9c709.md b/Resources/JavaVersionIncompatibility/7cda77e3b9981dba271f866ec727ad9c6af9c709.md new file mode 100644 index 0000000..e7f3349 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/7cda77e3b9981dba271f866ec727ad9c6af9c709.md @@ -0,0 +1,82 @@ +CI detected that the dependency upgrade from version **spring-boot-starter-2.7.5** to **spring-boot-starter-3.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[209,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[74,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[97,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[36,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnClass
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.0/spring-boot-autoconfigure-3.0.0.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[37,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.2/spring-beans-6.0.2.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[45,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[35,2] cannot find symbol
[ERROR] symbol: class ConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[34,2] cannot find symbol
[ERROR] symbol: class Validated + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[198,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[38,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[58,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[48,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[210,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[39,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[38,51] cannot access org.springframework.boot.context.properties.EnableConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.0/spring-boot-3.0.0.jar(/org/springframework/boot/context/properties/EnableConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[76,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[40,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[72,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[50,2] cannot find symbol
[ERROR] symbol: class ConditionalOnClass + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[66,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[36,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.2/spring-beans-6.0.2.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[97,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[24,51] cannot access org.springframework.boot.context.properties.ConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.0/spring-boot-3.0.0.jar(/org/springframework/boot/context/properties/ConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[74,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[37,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.0/spring-boot-autoconfigure-3.0.0.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[56,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[49,2] cannot find symbol
[ERROR] symbol: class EnableConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[199,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[25,49] cannot access org.springframework.validation.annotation.Validated
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/validation/annotation/Validated.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[90,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[65,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.0/spring-boot-autoconfigure-3.0.0.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnProperty.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/DapsValidator.java:[40,2] cannot find symbol
[ERROR] symbol: class Service + +
diff --git a/Resources/JavaVersionIncompatibility/7d1985cccacafa64e9eaa7fd5fe5c7154e994456.md b/Resources/JavaVersionIncompatibility/7d1985cccacafa64e9eaa7fd5fe5c7154e994456.md new file mode 100644 index 0000000..9fa1a69 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/7d1985cccacafa64e9eaa7fd5fe5c7154e994456.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.8** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +
diff --git a/Resources/JavaVersionIncompatibility/88676d24472254d05976a62e72e1c3799525a616.md b/Resources/JavaVersionIncompatibility/88676d24472254d05976a62e72e1c3799525a616.md new file mode 100644 index 0000000..32d0658 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/88676d24472254d05976a62e72e1c3799525a616.md @@ -0,0 +1,33 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.2** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `release.yaml` +- `ci.yaml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[19,45] cannot access org.springframework.format.annotation.DateTimeFormat
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/format/annotation/DateTimeFormat.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[77,38] cannot access org.springframework.core.io.Resource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.2/spring-core-6.0.2.jar(/org/springframework/core/io/Resource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +
diff --git a/Resources/JavaVersionIncompatibility/8881523e12a0890f72ac9fef69821cefba0c7a09.md b/Resources/JavaVersionIncompatibility/8881523e12a0890f72ac9fef69821cefba0c7a09.md new file mode 100644 index 0000000..2c176d3 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/8881523e12a0890f72ac9fef69821cefba0c7a09.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.6** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/8e1f0f08eef839903067c7c11432117c4897d0cd.md b/Resources/JavaVersionIncompatibility/8e1f0f08eef839903067c7c11432117c4897d0cd.md new file mode 100644 index 0000000..069b91a --- /dev/null +++ b/Resources/JavaVersionIncompatibility/8e1f0f08eef839903067c7c11432117c4897d0cd.md @@ -0,0 +1,73 @@ +CI detected that the dependency upgrade from version **jooq-meta-3.16.6** to **jooq-meta-3.17.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `codeql-analysis.yml` +- `maven.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,16] cannot find symbol
[ERROR] symbol: variable DSL
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[48,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[59,54] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[38,42] cannot find symbol
[ERROR] symbol: class PostgresDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,40] cannot find symbol
[ERROR] symbol: variable SQLDialect
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[88,47] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[98,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,26] cannot find symbol
[ERROR] symbol: class JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[79,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,43] cannot find symbol
[ERROR] symbol: variable JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[17,22] cannot access org.jooq.tools.JooqLogger
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.0/jooq-3.17.0.jar(/org/jooq/tools/JooqLogger.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,29] cannot access org.jooq.tools.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.0/jooq-3.17.0.jar(/org/jooq/tools/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[109,17] cannot find symbol
[ERROR] symbol: method setConnection(java.sql.Connection)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[14,26] cannot access org.jooq.exception.DataAccessException
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.0/jooq-3.17.0.jar(/org/jooq/exception/DataAccessException.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[97,40] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[13,16] cannot access org.jooq.SQLDialect
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.0/jooq-3.17.0.jar(/org/jooq/SQLDialect.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[118,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[84,60] cannot find symbol
[ERROR] symbol: method getBasedir()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[78,44] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[16,30] cannot access org.jooq.meta.postgres.PostgresDatabase
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq-meta/3.17.0/jooq-meta-3.17.0.jar(/org/jooq/meta/postgres/PostgresDatabase.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[18,27] cannot access org.jooq.tools.jdbc.JDBCUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.0/jooq-3.17.0.jar(/org/jooq/tools/jdbc/JDBCUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[61,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,1] static import only from classes and interfaces + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[49,15] cannot find symbol
[ERROR] symbol: class DSLContext
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[89,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[120,9] cannot find symbol
[ERROR] symbol: variable JDBCUtils
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[126,9] cannot find symbol
[ERROR] symbol: variable super
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[112,27] cannot find symbol
[ERROR] symbol: class DataAccessException
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[15,21] cannot access org.jooq.impl.DSL
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.0/jooq-3.17.0.jar(/org/jooq/impl/DSL.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[12,16] cannot access org.jooq.DSLContext
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.0/jooq-3.17.0.jar(/org/jooq/DSLContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/8f757321e48d7ffb117cbc8fb13d316e23d0f58f.md b/Resources/JavaVersionIncompatibility/8f757321e48d7ffb117cbc8fb13d316e23d0f58f.md new file mode 100644 index 0000000..2da28a7 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/8f757321e48d7ffb117cbc8fb13d316e23d0f58f.md @@ -0,0 +1,79 @@ +CI detected that the dependency upgrade from version **mybatis-spring-2.0.7** to **mybatis-spring-3.0.1** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `spotless.yml` +- `maven-tests.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[191,12] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[119,29] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/BaseDao.java:[8,39] cannot find symbol
[ERROR] symbol: class SqlSessionDaoSupport + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[80,29] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[180,12] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[90,12] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[187,12] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/springinit/MybatisConfig.java:[43,5] cannot find symbol
[ERROR] symbol: class SqlSessionFactoryBean
[ERROR] location: class gov.usgs.owi.nldi.springinit.MybatisConfig + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LogDao.java:[30,24] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LogDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/springinit/MybatisConfig.java:[9,26] cannot access org.mybatis.spring.SqlSessionFactoryBean
[ERROR] bad class file: /root/.m2/repository/org/mybatis/mybatis-spring/3.0.1/mybatis-spring-3.0.1.jar(/org/mybatis/spring/SqlSessionFactoryBean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/BaseDao.java:[27,15] cannot find symbol
[ERROR] symbol: method getClass()
[ERROR] location: class gov.usgs.owi.nldi.dao.BaseDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[256,34] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[167,35] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[202,12] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/BaseDao.java:[4,34] cannot access org.mybatis.spring.support.SqlSessionDaoSupport
[ERROR] bad class file: /root/.m2/repository/org/mybatis/mybatis-spring/3.0.1/mybatis-spring-3.0.1.jar(/org/mybatis/spring/support/SqlSessionDaoSupport.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[104,20] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[144,35] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/StreamingDao.java:[26,17] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.StreamingDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[128,15] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/NavigationDao.java:[53,5] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.NavigationDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[275,12] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[50,35] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[64,35] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/springinit/MybatisConfig.java:[43,51] cannot find symbol
[ERROR] symbol: class SqlSessionFactoryBean
[ERROR] location: class gov.usgs.owi.nldi.springinit.MybatisConfig + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[215,34] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[232,34] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[99,14] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LogDao.java:[34,17] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LogDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/LookupDao.java:[151,17] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.LookupDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/springinit/MybatisConfig.java:[42,10] cannot find symbol
[ERROR] symbol: class SqlSessionFactoryBean
[ERROR] location: class gov.usgs.owi.nldi.springinit.MybatisConfig + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/NavigationDao.java:[33,12] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.NavigationDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/NavigationDao.java:[37,12] cannot find symbol
[ERROR] symbol: method getSqlSession()
[ERROR] location: class gov.usgs.owi.nldi.dao.NavigationDao + +* > [ERROR] /nldi-services/src/main/java/gov/usgs/owi/nldi/dao/BaseDao.java:[28,5] cannot find symbol
[ERROR] symbol: method setSqlSessionFactory(org.apache.ibatis.session.SqlSessionFactory)
[ERROR] location: class gov.usgs.owi.nldi.dao.BaseDao + +
diff --git a/Resources/JavaVersionIncompatibility/90cca141fc95d0510f92e23032c9d03813b074d8.md b/Resources/JavaVersionIncompatibility/90cca141fc95d0510f92e23032c9d03813b074d8.md new file mode 100644 index 0000000..15de85e --- /dev/null +++ b/Resources/JavaVersionIncompatibility/90cca141fc95d0510f92e23032c9d03813b074d8.md @@ -0,0 +1,16 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.24** to **spring-core-6.0.4** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ssl/keystore/KeyStoreManager.java:[61,35] cannot access org.springframework.core.io.ClassPathResource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar(/org/springframework/core/io/ClassPathResource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/979780b29cf329579fa703552f9090b23c10e81d.md b/Resources/JavaVersionIncompatibility/979780b29cf329579fa703552f9090b23c10e81d.md new file mode 100644 index 0000000..7f78532 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/979780b29cf329579fa703552f9090b23c10e81d.md @@ -0,0 +1,64 @@ +CI detected that the dependency upgrade from version **spring-webmvc-5.3.24** to **spring-webmvc-6.0.7** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[31,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[53,38] cannot access org.springframework.stereotype.Controller
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/stereotype/Controller.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[47,13] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[31,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[109,13] cannot find symbol
[ERROR] symbol: class RequestMappingInfo
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[35,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/NotificationTemplateProvider.java:[73,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[46,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[36,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/builder/IdsRequestBuilderService.java:[33,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[39,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[44,19] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[38,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/RequestTemplateProvider.java:[58,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[29,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[61,2] cannot find symbol
[ERROR] symbol: class Controller + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[25,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[28,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.7/spring-context-6.0.7.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[64,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[29,50] cannot access org.springframework.web.servlet.mvc.method.RequestMappingInfo
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.7/spring-webmvc-6.0.7.jar(/org/springframework/web/servlet/mvc/method/RequestMappingInfo.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[49,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcherProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[57,34] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[52,47] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[40,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.util.SerializerProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[30,61] cannot access org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.7/spring-webmvc-6.0.7.jar(/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/9d51a768dc633ed4895a474f78eaaf84a3c209fd.md b/Resources/JavaVersionIncompatibility/9d51a768dc633ed4895a474f78eaaf84a3c209fd.md new file mode 100644 index 0000000..4af2a4d --- /dev/null +++ b/Resources/JavaVersionIncompatibility/9d51a768dc633ed4895a474f78eaaf84a3c209fd.md @@ -0,0 +1,62 @@ +CI detected that the dependency upgrade from version **spring-web-5.3.24** to **spring-web-6.0.6** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[95,52] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[36,32] cannot access org.springframework.http.HttpHeaders
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.6/spring-web-6.0.6.jar(/org/springframework/http/HttpHeaders.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[120,12] cannot find symbol
[ERROR] symbol: class ResponseEntity
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,38] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[28,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.6/spring-web-6.0.6.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[50,32] cannot access org.springframework.http.HttpStatus
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.6/spring-web-6.0.6.jar(/org/springframework/http/HttpStatus.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[96,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[52,32] cannot access org.springframework.http.ResponseEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.6/spring-web-6.0.6.jar(/org/springframework/http/ResponseEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[102,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcher.java:[59,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcher + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[108,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[94,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[66,81] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[35,32] cannot access org.springframework.http.HttpEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.6/spring-web-6.0.6.jar(/org/springframework/http/HttpEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[103,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[51,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[55,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[75,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.protocol.MessageService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,19] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[38,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.6/spring-beans-6.0.6.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[57,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.6/spring-beans-6.0.6.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[26,32] cannot access org.springframework.http.MediaType
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.6/spring-web-6.0.6.jar(/org/springframework/http/MediaType.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/9da8825fbdb24922b94be9eb82eefc73640d8f6b.md b/Resources/JavaVersionIncompatibility/9da8825fbdb24922b94be9eb82eefc73640d8f6b.md new file mode 100644 index 0000000..401118f --- /dev/null +++ b/Resources/JavaVersionIncompatibility/9da8825fbdb24922b94be9eb82eefc73640d8f6b.md @@ -0,0 +1,212 @@ +CI detected that the dependency upgrade from version **spring-data-jpa-2.7.6** to **spring-data-jpa-3.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `maven.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /openhospital-core/src/main/java/org/isf/supplier/service/SupplierIoOperationRepository.java:[32,56] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/Auditable.java:[32,43] cannot access org.springframework.data.annotation.CreatedDate
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-commons/3.0.0/spring-data-commons-3.0.0.jar(/org/springframework/data/annotation/CreatedDate.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/medicalstock/service/LotIoOperationRepository.java:[34,51] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/pregtreattype/service/PregnantTreatmentTypeIoOperationRepository.java:[31,69] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/examination/service/ExaminationIoOperationRepository.java:[27,39] cannot access org.springframework.data.domain.Page
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-commons/3.0.0/spring-data-commons-3.0.0.jar(/org/springframework/data/domain/Page.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/dlvrrestype/service/DeliveryResultIoOperationRepository.java:[31,62] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/examination/service/ExaminationIoOperationRepository.java:[41,9] cannot find symbol
[ERROR] symbol: class Page
[ERROR] location: interface org.isf.examination.service.ExaminationIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/distype/service/DiseaseTypeIoOperationRepository.java:[31,59] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/Auditable.java:[41,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patient/service/PatientIoOperationRepository.java:[36,55] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/service/PriceIoOperationRepository.java:[41,10] cannot find symbol
[ERROR] symbol: class Query
[ERROR] location: interface org.isf.priceslist.service.PriceIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patient/service/PatientIoOperationRepository.java:[40,91] cannot find symbol
[ERROR] symbol: class Pageable
[ERROR] location: interface org.isf.patient.service.PatientIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/medicalstockward/service/MedicalStockWardIoOperationRepository.java:[35,64] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patient/service/PatientIoOperations.java:[94,42] cannot find symbol
[ERROR] symbol: class Pageable
[ERROR] location: class org.isf.patient.service.PatientIoOperations + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/model/PriceList.java:[49,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/Auditable.java:[52,6] cannot find symbol
[ERROR] symbol: class LastModifiedBy
[ERROR] location: class org.isf.utils.db.Auditable + +* > [ERROR] /openhospital-core/src/main/java/org/isf/dlvrtype/service/DeliveryTypeIoOperationRepository.java:[29,60] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/malnutrition/service/MalnutritionIoOperationRepository.java:[33,60] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/medicalstock/service/MovementIoOperationRepository.java:[35,56] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/operation/service/OperationIoOperationRepository.java:[31,57] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patvac/service/PatVacIoOperationRepository.java:[39,10] cannot find symbol
[ERROR] symbol: class Query
[ERROR] location: interface org.isf.patvac.service.PatVacIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/dicom/service/DicomIoOperationRepository.java:[34,53] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/Auditable.java:[48,6] cannot find symbol
[ERROR] symbol: class CreatedDate
[ERROR] location: class org.isf.utils.db.Auditable + +* > [ERROR] /openhospital-core/src/main/java/org/isf/accounting/service/AccountingBillItemsIoOperationRepository.java:[34,67] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/service/PricesListIoOperationRepository.java:[32,58] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/medstockmovtype/service/MedicalStockMovementTypeIoOperationRepository.java:[31,72] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/visits/model/Visit.java:[58,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/JpaConfig.java:[27,54] cannot access org.springframework.data.jpa.repository.config.EnableJpaAuditing
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-jpa/3.0.0/spring-data-jpa-3.0.0.jar(/org/springframework/data/jpa/repository/config/EnableJpaAuditing.class)
[ERROR] class file has wrong version 60.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/model/Price.java:[51,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/medicalstockward/service/MovementWardIoOperationRepository.java:[34,60] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patvac/service/PatVacIoOperationRepository.java:[36,10] cannot find symbol
[ERROR] symbol: class Query
[ERROR] location: interface org.isf.patvac.service.PatVacIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/menu/service/GroupMenuIoOperationRepository.java:[35,10] cannot find symbol
[ERROR] symbol: class Query
[ERROR] location: interface org.isf.menu.service.GroupMenuIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/examination/service/ExaminationIoOperationRepository.java:[41,110] cannot find symbol
[ERROR] symbol: class Pageable
[ERROR] location: interface org.isf.examination.service.ExaminationIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/service/PriceIoOperationRepository.java:[28,47] cannot access org.springframework.data.jpa.repository.Modifying
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-jpa/3.0.0/spring-data-jpa-3.0.0.jar(/org/springframework/data/jpa/repository/Modifying.class)
[ERROR] class file has wrong version 60.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/model/Price.java:[38,51] cannot access org.springframework.data.jpa.domain.support.AuditingEntityListener
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-jpa/3.0.0/spring-data-jpa-3.0.0.jar(/org/springframework/data/jpa/domain/support/AuditingEntityListener.class)
[ERROR] class file has wrong version 60.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/menu/service/UserGroupIoOperationRepository.java:[34,57] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patvac/model/PatientVaccine.java:[56,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/exa/service/ExamIoOperationRepository.java:[31,52] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/accounting/service/AccountingBillIoOperationRepository.java:[35,62] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/service/PriceIoOperationRepository.java:[30,49] cannot access org.springframework.data.repository.query.Param
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-commons/3.0.0/spring-data-commons-3.0.0.jar(/org/springframework/data/repository/query/Param.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/hospital/service/HospitalIoOperationRepository.java:[30,56] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patvac/service/PatVacIoOperationRepository.java:[34,54] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/Auditable.java:[44,6] cannot find symbol
[ERROR] symbol: class CreatedBy
[ERROR] location: class org.isf.utils.db.Auditable + +* > [ERROR] /openhospital-core/src/main/java/org/isf/opd/model/Opd.java:[67,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/ward/service/WardIoOperationRepository.java:[32,52] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/Auditable.java:[56,6] cannot find symbol
[ERROR] symbol: class LastModifiedDate
[ERROR] location: class org.isf.utils.db.Auditable + +* > [ERROR] /openhospital-core/src/main/java/org/isf/medicals/service/MedicalsIoOperationRepository.java:[33,56] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/JpaConfig.java:[26,39] cannot access org.springframework.data.domain.AuditorAware
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-commons/3.0.0/spring-data-commons-3.0.0.jar(/org/springframework/data/domain/AuditorAware.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/AuditorAwareImpl.java:[32,42] cannot find symbol
[ERROR] symbol: class AuditorAware + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patient/model/Patient.java:[73,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/therapy/service/TherapyIoOperationRepository.java:[32,55] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/menu/service/GroupMenuIoOperationRepository.java:[32,57] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/menu/service/UserMenuItemIoOperationRepository.java:[43,44] cannot find symbol
[ERROR] symbol: class Param
[ERROR] location: interface org.isf.menu.service.UserMenuItemIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/JpaConfig.java:[33,2] cannot find symbol
[ERROR] symbol: class EnableJpaAuditing + +* > [ERROR] /openhospital-core/src/main/java/org/isf/lab/service/LabIoOperationRepository.java:[30,51] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/Auditable.java:[34,43] cannot access org.springframework.data.annotation.LastModifiedDate
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-commons/3.0.0/spring-data-commons-3.0.0.jar(/org/springframework/data/annotation/LastModifiedDate.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/Auditable.java:[31,43] cannot access org.springframework.data.annotation.CreatedBy
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-commons/3.0.0/spring-data-commons-3.0.0.jar(/org/springframework/data/annotation/CreatedBy.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/vaccine/service/VaccineIoOperationRepository.java:[31,55] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/opetype/service/OperationTypeIoOperationRepository.java:[31,61] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/lab/service/LabRowIoOperationRepository.java:[30,54] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/operation/service/OperationRowIoOperationRepository.java:[36,60] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/service/PriceIoOperationRepository.java:[27,47] cannot access org.springframework.data.jpa.repository.JpaRepository
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-jpa/3.0.0/spring-data-jpa-3.0.0.jar(/org/springframework/data/jpa/repository/JpaRepository.class)
[ERROR] class file has wrong version 60.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/exa/service/ExamRowIoOperationRepository.java:[32,55] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/vactype/model/VaccineType.java:[49,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/menu/model/GroupMenu.java:[48,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/menu/service/GroupMenuIoOperationRepository.java:[36,36] cannot find symbol
[ERROR] symbol: class Param
[ERROR] location: interface org.isf.menu.service.GroupMenuIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/examination/service/ExaminationIoOperationRepository.java:[35,59] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patvac/service/PatVacIoOperationRepository.java:[40,91] cannot find symbol
[ERROR] symbol: class Param
[ERROR] location: interface org.isf.patvac.service.PatVacIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/JpaConfig.java:[37,12] cannot find symbol
[ERROR] symbol: class AuditorAware
[ERROR] location: class org.isf.utils.db.JpaConfig + +* > [ERROR] /openhospital-core/src/main/java/org/isf/medtype/service/MedicalTypeIoOperationRepository.java:[31,59] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/ward/model/Ward.java:[48,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/opd/service/OpdIoOperationRepository.java:[33,51] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/dicomtype/service/DicomTypeIoOperationRepository.java:[31,57] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patient/service/PatientIoOperationRepository.java:[28,39] cannot access org.springframework.data.domain.Pageable
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-commons/3.0.0/spring-data-commons-3.0.0.jar(/org/springframework/data/domain/Pageable.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/vaccine/model/Vaccine.java:[51,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/pricesothers/service/PriceOthersIoOperationRepository.java:[31,59] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/examination/service/ExaminationOperations.java:[31,39] cannot access org.springframework.data.domain.PageRequest
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-commons/3.0.0/spring-data-commons-3.0.0.jar(/org/springframework/data/domain/PageRequest.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/admission/service/AdmissionIoOperationRepository.java:[34,57] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/supplier/service/SupplierIoOperationRepository.java:[34,6] cannot find symbol
[ERROR] symbol: class Query
[ERROR] location: interface org.isf.supplier.service.SupplierIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/patvac/service/PatVacIoOperationRepository.java:[40,46] cannot find symbol
[ERROR] symbol: class Param
[ERROR] location: interface org.isf.patvac.service.PatVacIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/menu/service/UserMenuItemIoOperationRepository.java:[33,60] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/utils/db/Auditable.java:[33,43] cannot access org.springframework.data.annotation.LastModifiedBy
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-commons/3.0.0/spring-data-commons-3.0.0.jar(/org/springframework/data/annotation/LastModifiedBy.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/vactype/service/VaccineTypeIoOperationRepository.java:[31,59] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/service/PriceIoOperationRepository.java:[29,47] cannot access org.springframework.data.jpa.repository.Query
[ERROR] bad class file: /root/.m2/repository/org/springframework/data/spring-data-jpa/3.0.0/spring-data-jpa-3.0.0.jar(/org/springframework/data/jpa/repository/Query.class)
[ERROR] class file has wrong version 60.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/service/PriceIoOperationRepository.java:[40,10] cannot find symbol
[ERROR] symbol: class Modifying
[ERROR] location: interface org.isf.priceslist.service.PriceIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/admtype/service/AdmissionTypeIoOperationRepository.java:[31,61] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/supplier/model/Supplier.java:[43,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/menu/service/GroupMenuIoOperationRepository.java:[34,10] cannot find symbol
[ERROR] symbol: class Modifying
[ERROR] location: interface org.isf.menu.service.GroupMenuIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/disease/model/Disease.java:[53,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/service/PriceIoOperationRepository.java:[42,30] cannot find symbol
[ERROR] symbol: class Param
[ERROR] location: interface org.isf.priceslist.service.PriceIoOperationRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/sms/service/SmsIoOperationRepository.java:[31,51] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/priceslist/service/PriceIoOperationRepository.java:[34,53] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/menu/service/UserIoOperationRepository.java:[35,52] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/visits/service/VisitsIoOperationRepository.java:[34,54] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/disease/service/DiseaseIoOperationRepository.java:[33,55] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/accounting/service/AccountingBillPaymentIoOperationRepository.java:[37,69] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/distype/model/DiseaseType.java:[47,18] cannot find symbol
[ERROR] symbol: class AuditingEntityListener + +* > [ERROR] /openhospital-core/src/main/java/org/isf/agetype/service/AgeTypeIoOperationRepository.java:[31,55] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/disctype/service/DischargeTypeIoOperationRepository.java:[31,61] cannot find symbol
[ERROR] symbol: class JpaRepository + +* > [ERROR] /openhospital-core/src/main/java/org/isf/exatype/service/ExamTypeIoOperationRepository.java:[31,56] cannot find symbol
[ERROR] symbol: class JpaRepository + +
diff --git a/Resources/JavaVersionIncompatibility/9dbbd30590fa87f3e719615e0816c231106e01de.md b/Resources/JavaVersionIncompatibility/9dbbd30590fa87f3e719615e0816c231106e01de.md new file mode 100644 index 0000000..7e4fefb --- /dev/null +++ b/Resources/JavaVersionIncompatibility/9dbbd30590fa87f3e719615e0816c231106e01de.md @@ -0,0 +1,82 @@ +CI detected that the dependency upgrade from version **spring-boot-starter-2.7.5** to **spring-boot-starter-3.0.3** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[38,51] cannot access org.springframework.boot.context.properties.EnableConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.3/spring-boot-3.0.3.jar(/org/springframework/boot/context/properties/EnableConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[39,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[209,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[74,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[97,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[45,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[35,2] cannot find symbol
[ERROR] symbol: class ConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[36,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnClass
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.3/spring-boot-autoconfigure-3.0.3.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[34,2] cannot find symbol
[ERROR] symbol: class Validated + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[198,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[58,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[48,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[210,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[40,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[25,49] cannot access org.springframework.validation.annotation.Validated
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/validation/annotation/Validated.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[65,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.3/spring-boot-autoconfigure-3.0.3.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnProperty.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[76,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[72,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[50,2] cannot find symbol
[ERROR] symbol: class ConditionalOnClass + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[24,51] cannot access org.springframework.boot.context.properties.ConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.3/spring-boot-3.0.3.jar(/org/springframework/boot/context/properties/ConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[37,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.5/spring-beans-6.0.5.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[97,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[74,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[66,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[38,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[56,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[49,2] cannot find symbol
[ERROR] symbol: class EnableConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[37,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.3/spring-boot-autoconfigure-3.0.3.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[199,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[90,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[36,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.5/spring-beans-6.0.5.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/DapsValidator.java:[40,2] cannot find symbol
[ERROR] symbol: class Service + +
diff --git a/Resources/JavaVersionIncompatibility/a1ff30e0bc6a9b48e024a8ab27cefda3ad85b530.md b/Resources/JavaVersionIncompatibility/a1ff30e0bc6a9b48e024a8ab27cefda3ad85b530.md new file mode 100644 index 0000000..a267a61 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/a1ff30e0bc6a9b48e024a8ab27cefda3ad85b530.md @@ -0,0 +1,73 @@ +CI detected that the dependency upgrade from version **jooq-meta-3.16.6** to **jooq-meta-3.17.3** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `codeql-analysis.yml` +- `maven.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[17,22] cannot access org.jooq.tools.JooqLogger
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.3/jooq-3.17.3.jar(/org/jooq/tools/JooqLogger.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[12,16] cannot access org.jooq.DSLContext
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.3/jooq-3.17.3.jar(/org/jooq/DSLContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,16] cannot find symbol
[ERROR] symbol: variable DSL
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[48,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[14,26] cannot access org.jooq.exception.DataAccessException
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.3/jooq-3.17.3.jar(/org/jooq/exception/DataAccessException.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[59,54] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[38,42] cannot find symbol
[ERROR] symbol: class PostgresDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,40] cannot find symbol
[ERROR] symbol: variable SQLDialect
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[88,47] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[98,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,26] cannot find symbol
[ERROR] symbol: class JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[79,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[18,27] cannot access org.jooq.tools.jdbc.JDBCUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.3/jooq-3.17.3.jar(/org/jooq/tools/jdbc/JDBCUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,43] cannot find symbol
[ERROR] symbol: variable JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[109,17] cannot find symbol
[ERROR] symbol: method setConnection(java.sql.Connection)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,29] cannot access org.jooq.tools.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.3/jooq-3.17.3.jar(/org/jooq/tools/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[97,40] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[16,30] cannot access org.jooq.meta.postgres.PostgresDatabase
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq-meta/3.17.3/jooq-meta-3.17.3.jar(/org/jooq/meta/postgres/PostgresDatabase.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[118,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[84,60] cannot find symbol
[ERROR] symbol: method getBasedir()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[78,44] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[13,16] cannot access org.jooq.SQLDialect
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.3/jooq-3.17.3.jar(/org/jooq/SQLDialect.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[15,21] cannot access org.jooq.impl.DSL
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.3/jooq-3.17.3.jar(/org/jooq/impl/DSL.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[61,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,1] static import only from classes and interfaces + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[49,15] cannot find symbol
[ERROR] symbol: class DSLContext
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[89,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[120,9] cannot find symbol
[ERROR] symbol: variable JDBCUtils
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[126,9] cannot find symbol
[ERROR] symbol: variable super
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[112,27] cannot find symbol
[ERROR] symbol: class DataAccessException
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +
diff --git a/Resources/JavaVersionIncompatibility/a698299490d70ce07b7af6e29ebf4627d412f4dd.md b/Resources/JavaVersionIncompatibility/a698299490d70ce07b7af6e29ebf4627d412f4dd.md new file mode 100644 index 0000000..2274400 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/a698299490d70ce07b7af6e29ebf4627d412f4dd.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.3** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +
diff --git a/Resources/JavaVersionIncompatibility/aa14451c6f218af9c08e846345d83259eb7d46a8.md b/Resources/JavaVersionIncompatibility/aa14451c6f218af9c08e846345d83259eb7d46a8.md new file mode 100644 index 0000000..839b7f5 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/aa14451c6f218af9c08e846345d83259eb7d46a8.md @@ -0,0 +1,22 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.23** to **spring-core-6.0.7** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `test-suite.yml` +- `build.yml` +- `findbugs.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[39,12] cannot find symbol
[ERROR] symbol: class TaskExecutor
[ERROR] location: class com.lpvs.LicensePreValidationSystem + +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[25,32] cannot access org.springframework.util.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.7/spring-core-6.0.7.jar(/org/springframework/util/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/FileUtil.java:[13,32] cannot access org.springframework.util.FileSystemUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.7/spring-core-6.0.7.jar(/org/springframework/util/FileSystemUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[17,37] cannot access org.springframework.core.task.TaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.7/spring-core-6.0.7.jar(/org/springframework/core/task/TaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/ab70529b2edf0a0b3f672278e191dc207d1b8711.md b/Resources/JavaVersionIncompatibility/ab70529b2edf0a0b3f672278e191dc207d1b8711.md new file mode 100644 index 0000000..3804032 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/ab70529b2edf0a0b3f672278e191dc207d1b8711.md @@ -0,0 +1,22 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.23** to **spring-core-6.0.5** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `test-suite.yml` +- `build.yml` +- `findbugs.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[39,12] cannot find symbol
[ERROR] symbol: class TaskExecutor
[ERROR] location: class com.lpvs.LicensePreValidationSystem + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/FileUtil.java:[13,32] cannot access org.springframework.util.FileSystemUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.5/spring-core-6.0.5.jar(/org/springframework/util/FileSystemUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[17,37] cannot access org.springframework.core.task.TaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.5/spring-core-6.0.5.jar(/org/springframework/core/task/TaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[25,32] cannot access org.springframework.util.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.5/spring-core-6.0.5.jar(/org/springframework/util/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/abe29340c60b0bfe93b13b638838163cf355eb03.md b/Resources/JavaVersionIncompatibility/abe29340c60b0bfe93b13b638838163cf355eb03.md new file mode 100644 index 0000000..6fbbb45 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/abe29340c60b0bfe93b13b638838163cf355eb03.md @@ -0,0 +1,82 @@ +CI detected that the dependency upgrade from version **spring-boot-starter-2.7.5** to **spring-boot-starter-3.0.6** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[209,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[74,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[97,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[45,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[35,2] cannot find symbol
[ERROR] symbol: class ConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[34,2] cannot find symbol
[ERROR] symbol: class Validated + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[198,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[58,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[48,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[210,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[76,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[38,51] cannot access org.springframework.boot.context.properties.EnableConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.6/spring-boot-3.0.6.jar(/org/springframework/boot/context/properties/EnableConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[72,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[50,2] cannot find symbol
[ERROR] symbol: class ConditionalOnClass + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[65,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.6/spring-boot-autoconfigure-3.0.6.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnProperty.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[97,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[74,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[25,49] cannot access org.springframework.validation.annotation.Validated
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/validation/annotation/Validated.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[36,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnClass
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.6/spring-boot-autoconfigure-3.0.6.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[36,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.8/spring-beans-6.0.8.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[39,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[56,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[49,2] cannot find symbol
[ERROR] symbol: class EnableConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[38,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[199,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[37,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.8/spring-beans-6.0.8.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[90,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[66,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/DapsValidator.java:[40,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[40,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[37,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.6/spring-boot-autoconfigure-3.0.6.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[24,51] cannot access org.springframework.boot.context.properties.ConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.6/spring-boot-3.0.6.jar(/org/springframework/boot/context/properties/ConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/ae17c8e47b93596cffeb2ec9241465cf39c7f8eb.md b/Resources/JavaVersionIncompatibility/ae17c8e47b93596cffeb2ec9241465cf39c7f8eb.md new file mode 100644 index 0000000..a8464b5 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/ae17c8e47b93596cffeb2ec9241465cf39c7f8eb.md @@ -0,0 +1,62 @@ +CI detected that the dependency upgrade from version **spring-web-5.3.24** to **spring-web-6.0.3** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[95,52] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[120,12] cannot find symbol
[ERROR] symbol: class ResponseEntity
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,38] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[38,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.3/spring-beans-6.0.3.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[96,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[102,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcher.java:[59,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcher + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[108,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[94,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[66,81] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[35,32] cannot access org.springframework.http.HttpEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.3/spring-web-6.0.3.jar(/org/springframework/http/HttpEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[103,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[50,32] cannot access org.springframework.http.HttpStatus
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.3/spring-web-6.0.3.jar(/org/springframework/http/HttpStatus.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[51,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[26,32] cannot access org.springframework.http.MediaType
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.3/spring-web-6.0.3.jar(/org/springframework/http/MediaType.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[52,32] cannot access org.springframework.http.ResponseEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.3/spring-web-6.0.3.jar(/org/springframework/http/ResponseEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[55,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[75,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.protocol.MessageService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,19] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[57,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.3/spring-beans-6.0.3.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[36,32] cannot access org.springframework.http.HttpHeaders
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.3/spring-web-6.0.3.jar(/org/springframework/http/HttpHeaders.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[28,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.3/spring-web-6.0.3.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/b19ea99f63b85bbe2bcbdb67bd57459a79f4e677.md b/Resources/JavaVersionIncompatibility/b19ea99f63b85bbe2bcbdb67bd57459a79f4e677.md new file mode 100644 index 0000000..0e9eece --- /dev/null +++ b/Resources/JavaVersionIncompatibility/b19ea99f63b85bbe2bcbdb67bd57459a79f4e677.md @@ -0,0 +1,73 @@ +CI detected that the dependency upgrade from version **jooq-meta-3.16.6** to **jooq-meta-3.17.2** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `codeql-analysis.yml` +- `maven.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,29] cannot access org.jooq.tools.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.2/jooq-3.17.2.jar(/org/jooq/tools/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[18,27] cannot access org.jooq.tools.jdbc.JDBCUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.2/jooq-3.17.2.jar(/org/jooq/tools/jdbc/JDBCUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,16] cannot find symbol
[ERROR] symbol: variable DSL
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[48,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[59,54] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[38,42] cannot find symbol
[ERROR] symbol: class PostgresDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,40] cannot find symbol
[ERROR] symbol: variable SQLDialect
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[88,47] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[98,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,26] cannot find symbol
[ERROR] symbol: class JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[79,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,43] cannot find symbol
[ERROR] symbol: variable JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[109,17] cannot find symbol
[ERROR] symbol: method setConnection(java.sql.Connection)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[12,16] cannot access org.jooq.DSLContext
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.2/jooq-3.17.2.jar(/org/jooq/DSLContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[97,40] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[118,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[84,60] cannot find symbol
[ERROR] symbol: method getBasedir()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[78,44] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[14,26] cannot access org.jooq.exception.DataAccessException
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.2/jooq-3.17.2.jar(/org/jooq/exception/DataAccessException.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[61,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[15,21] cannot access org.jooq.impl.DSL
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.2/jooq-3.17.2.jar(/org/jooq/impl/DSL.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,1] static import only from classes and interfaces + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[49,15] cannot find symbol
[ERROR] symbol: class DSLContext
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[13,16] cannot access org.jooq.SQLDialect
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.2/jooq-3.17.2.jar(/org/jooq/SQLDialect.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[89,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[120,9] cannot find symbol
[ERROR] symbol: variable JDBCUtils
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[17,22] cannot access org.jooq.tools.JooqLogger
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.2/jooq-3.17.2.jar(/org/jooq/tools/JooqLogger.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[126,9] cannot find symbol
[ERROR] symbol: variable super
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[16,30] cannot access org.jooq.meta.postgres.PostgresDatabase
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq-meta/3.17.2/jooq-meta-3.17.2.jar(/org/jooq/meta/postgres/PostgresDatabase.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[112,27] cannot find symbol
[ERROR] symbol: class DataAccessException
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +
diff --git a/Resources/JavaVersionIncompatibility/b2b18584e757c44b1468383252d6a9761f8097de.md b/Resources/JavaVersionIncompatibility/b2b18584e757c44b1468383252d6a9761f8097de.md new file mode 100644 index 0000000..683d979 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/b2b18584e757c44b1468383252d6a9761f8097de.md @@ -0,0 +1,33 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.25** to **spring-context-6.0.5** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `release.yaml` +- `ci.yaml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[19,45] cannot access org.springframework.format.annotation.DateTimeFormat
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.5/spring-context-6.0.5.jar(/org/springframework/format/annotation/DateTimeFormat.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[77,38] cannot access org.springframework.core.io.Resource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.5/spring-core-6.0.5.jar(/org/springframework/core/io/Resource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +
diff --git a/Resources/JavaVersionIncompatibility/b92fdfdaeea759fb558907ef8f7e3d46c170f886.md b/Resources/JavaVersionIncompatibility/b92fdfdaeea759fb558907ef8f7e3d46c170f886.md new file mode 100644 index 0000000..8f6212a --- /dev/null +++ b/Resources/JavaVersionIncompatibility/b92fdfdaeea759fb558907ef8f7e3d46c170f886.md @@ -0,0 +1,16 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.24** to **spring-core-6.0.1** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ssl/keystore/KeyStoreManager.java:[61,35] cannot access org.springframework.core.io.ClassPathResource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.1/spring-core-6.0.1.jar(/org/springframework/core/io/ClassPathResource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/bad55510363bde900a60f13ecc744e0c244397d4.md b/Resources/JavaVersionIncompatibility/bad55510363bde900a60f13ecc744e0c244397d4.md new file mode 100644 index 0000000..a17d4d9 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/bad55510363bde900a60f13ecc744e0c244397d4.md @@ -0,0 +1,33 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.1** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `release.yaml` +- `ci.yaml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[77,38] cannot access org.springframework.core.io.Resource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.1/spring-core-6.0.1.jar(/org/springframework/core/io/Resource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[19,45] cannot access org.springframework.format.annotation.DateTimeFormat
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.1/spring-context-6.0.1.jar(/org/springframework/format/annotation/DateTimeFormat.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +
diff --git a/Resources/JavaVersionIncompatibility/bcafa6f39116555a4c53882ed2cf2835594d9114.md b/Resources/JavaVersionIncompatibility/bcafa6f39116555a4c53882ed2cf2835594d9114.md new file mode 100644 index 0000000..7347004 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/bcafa6f39116555a4c53882ed2cf2835594d9114.md @@ -0,0 +1,64 @@ +CI detected that the dependency upgrade from version **spring-webmvc-5.3.24** to **spring-webmvc-6.0.3** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[29,50] cannot access org.springframework.web.servlet.mvc.method.RequestMappingInfo
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.3/spring-webmvc-6.0.3.jar(/org/springframework/web/servlet/mvc/method/RequestMappingInfo.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[31,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[25,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[31,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[47,13] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[53,38] cannot access org.springframework.stereotype.Controller
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/stereotype/Controller.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[109,13] cannot find symbol
[ERROR] symbol: class RequestMappingInfo
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[39,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[35,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/NotificationTemplateProvider.java:[73,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[46,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[30,61] cannot access org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.3/spring-webmvc-6.0.3.jar(/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[36,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/builder/IdsRequestBuilderService.java:[33,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[44,19] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[38,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/RequestTemplateProvider.java:[58,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[61,2] cannot find symbol
[ERROR] symbol: class Controller + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[28,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[29,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[64,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[49,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcherProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[57,34] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[52,47] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[40,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.util.SerializerProvider + +
diff --git a/Resources/JavaVersionIncompatibility/bdbb81614557858922836294d1d6dd3dd661f10c.md b/Resources/JavaVersionIncompatibility/bdbb81614557858922836294d1d6dd3dd661f10c.md new file mode 100644 index 0000000..8f3d4d2 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/bdbb81614557858922836294d1d6dd3dd661f10c.md @@ -0,0 +1,33 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.3** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `release.yaml` +- `ci.yaml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[70,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[62,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[19,45] cannot access org.springframework.format.annotation.DateTimeFormat
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/format/annotation/DateTimeFormat.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[77,38] cannot access org.springframework.core.io.Resource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.3/spring-core-6.0.3.jar(/org/springframework/core/io/Resource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[58,39] package DateTimeFormat does not exist + +* > [ERROR] /micronaut-openapi-codegen/gen/main/java/testmodel/spring/Model.java:[66,4] cannot find symbol
[ERROR] symbol: class DateTimeFormat
[ERROR] location: class testmodel.spring.Model + +
diff --git a/Resources/JavaVersionIncompatibility/c1fc16b4fe9dfdfa16ce7248fccad0e7d994094d.md b/Resources/JavaVersionIncompatibility/c1fc16b4fe9dfdfa16ce7248fccad0e7d994094d.md new file mode 100644 index 0000000..7c4c872 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/c1fc16b4fe9dfdfa16ce7248fccad0e7d994094d.md @@ -0,0 +1,22 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.23** to **spring-core-6.0.2** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `test-suite.yml` +- `build.yml` +- `findbugs.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[39,12] cannot find symbol
[ERROR] symbol: class TaskExecutor
[ERROR] location: class com.lpvs.LicensePreValidationSystem + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[17,37] cannot access org.springframework.core.task.TaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.2/spring-core-6.0.2.jar(/org/springframework/core/task/TaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[25,32] cannot access org.springframework.util.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.2/spring-core-6.0.2.jar(/org/springframework/util/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/FileUtil.java:[13,32] cannot access org.springframework.util.FileSystemUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.2/spring-core-6.0.2.jar(/org/springframework/util/FileSystemUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/c4950c79dfe902dae8991ff722216c7ba787bf32.md b/Resources/JavaVersionIncompatibility/c4950c79dfe902dae8991ff722216c7ba787bf32.md new file mode 100644 index 0000000..8640fa7 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/c4950c79dfe902dae8991ff722216c7ba787bf32.md @@ -0,0 +1,60 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.19** to **spring-core-6.0.4** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `ci.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[35,44] cannot find symbol
[ERROR] symbol: class ListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[44,12] cannot find symbol
[ERROR] symbol: class ListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[29,120] cannot find symbol
[ERROR] symbol: class ListenableFuture + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[32,19] cannot find symbol
[ERROR] symbol: class ListenableFutureCallback
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[72,31] cannot find symbol
[ERROR] symbol: class ListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[51,12] cannot find symbol
[ERROR] symbol: class ListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[31,123] cannot find symbol
[ERROR] symbol: class ListenableFuture + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[74,13] method does not override or implement a method from a supertype + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[80,13] method does not override or implement a method from a supertype + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[31,62] cannot find symbol
[ERROR] symbol: class TaskExecutorAdapter
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[73,41] cannot find symbol
[ERROR] symbol: class ListenableFutureCallback
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[21,37] cannot access org.springframework.core.task.AsyncListenableTaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar(/org/springframework/core/task/AsyncListenableTaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[45,55] cannot find symbol
[ERROR] symbol: class SettableListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[32,68] cannot find symbol
[ERROR] symbol: class ListenableFutureCallback
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[45,9] cannot find symbol
[ERROR] symbol: class SettableListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[34,12] cannot find symbol
[ERROR] symbol: class ListenableFuture
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[22,43] cannot access org.springframework.util.concurrent.ListenableFutureCallback
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar(/org/springframework/util/concurrent/ListenableFutureCallback.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[22,45] cannot access org.springframework.core.task.support.TaskExecutorAdapter
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar(/org/springframework/core/task/support/TaskExecutorAdapter.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[37,41] cannot find symbol
[ERROR] symbol: class ListenableFutureCallback
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringConvertedFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[31,19] cannot find symbol
[ERROR] symbol: class AsyncListenableTaskExecutor
[ERROR] location: class net.javacrumbs.futureconverter.common.test.spring.SpringOriginalFutureTestHelper + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[43,13] method does not override or implement a method from a supertype + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[23,43] cannot access org.springframework.util.concurrent.ListenableFuture
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar(/org/springframework/util/concurrent/ListenableFuture.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringOriginalFutureTestHelper.java:[24,43] cannot access org.springframework.util.concurrent.SettableListenableFuture
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar(/org/springframework/util/concurrent/SettableListenableFuture.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /future-converter/common-test/src/main/java/net/javacrumbs/futureconverter/common/test/spring/SpringConvertedFutureTestHelper.java:[38,13] method does not override or implement a method from a supertype + +
diff --git a/Resources/JavaVersionIncompatibility/c5905f7220e1129a0448715ee5d0e61ee5ac31e1.md b/Resources/JavaVersionIncompatibility/c5905f7220e1129a0448715ee5d0e61ee5ac31e1.md new file mode 100644 index 0000000..dcb3328 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/c5905f7220e1129a0448715ee5d0e61ee5ac31e1.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.10** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.10/spring-context-6.0.10.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.10/spring-context-6.0.10.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/c83979c19ca572bfef0fa96d73772fdbeeddd109.md b/Resources/JavaVersionIncompatibility/c83979c19ca572bfef0fa96d73772fdbeeddd109.md new file mode 100644 index 0000000..9d46d2f --- /dev/null +++ b/Resources/JavaVersionIncompatibility/c83979c19ca572bfef0fa96d73772fdbeeddd109.md @@ -0,0 +1,26 @@ +CI detected that the dependency upgrade from version **graphql-java-servlet-14.0.0** to **graphql-java-servlet-15.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `maven.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /dropwizard-graphql/graphql-core/src/main/java/com/smoketurner/dropwizard/graphql/GraphQLBundle.java:[45,11] cannot find symbol
[ERROR] symbol: class GraphQLQueryInvoker
[ERROR] location: class com.smoketurner.dropwizard.graphql.GraphQLBundle + +* > [ERROR] /dropwizard-graphql/graphql-core/src/main/java/com/smoketurner/dropwizard/graphql/GraphQLBundle.java:[51,36] cannot access graphql.kickstart.servlet.GraphQLConfiguration
[ERROR] bad class file: /root/.m2/repository/com/graphql-java-kickstart/graphql-java-servlet/15.0.0/graphql-java-servlet-15.0.0.jar(/graphql/kickstart/servlet/GraphQLConfiguration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /dropwizard-graphql/graphql-core/src/main/java/com/smoketurner/dropwizard/graphql/GraphQLBundle.java:[54,11] cannot find symbol
[ERROR] symbol: class GraphQLHttpServlet
[ERROR] location: class com.smoketurner.dropwizard.graphql.GraphQLBundle + +* > [ERROR] /dropwizard-graphql/graphql-core/src/main/java/com/smoketurner/dropwizard/graphql/GraphQLBundle.java:[19,35] cannot access graphql.kickstart.execution.GraphQLQueryInvoker
[ERROR] bad class file: /root/.m2/repository/com/graphql-java-kickstart/graphql-java-kickstart/15.0.0/graphql-java-kickstart-15.0.0.jar(/graphql/kickstart/execution/GraphQLQueryInvoker.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /dropwizard-graphql/graphql-core/src/main/java/com/smoketurner/dropwizard/graphql/GraphQLBundle.java:[46,9] cannot find symbol
[ERROR] symbol: variable GraphQLQueryInvoker
[ERROR] location: class com.smoketurner.dropwizard.graphql.GraphQLBundle + +* > [ERROR] /dropwizard-graphql/graphql-core/src/main/java/com/smoketurner/dropwizard/graphql/GraphQLBundle.java:[20,33] cannot access graphql.kickstart.servlet.GraphQLHttpServlet
[ERROR] bad class file: /root/.m2/repository/com/graphql-java-kickstart/graphql-java-servlet/15.0.0/graphql-java-servlet-15.0.0.jar(/graphql/kickstart/servlet/GraphQLHttpServlet.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /dropwizard-graphql/graphql-core/src/main/java/com/smoketurner/dropwizard/graphql/GraphQLBundle.java:[54,40] cannot find symbol
[ERROR] symbol: variable GraphQLHttpServlet
[ERROR] location: class com.smoketurner.dropwizard.graphql.GraphQLBundle + +
diff --git a/Resources/JavaVersionIncompatibility/c8da6c3c823d745bb37b072a4a33b6342a86dcd9.md b/Resources/JavaVersionIncompatibility/c8da6c3c823d745bb37b072a4a33b6342a86dcd9.md new file mode 100644 index 0000000..c9d5563 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/c8da6c3c823d745bb37b072a4a33b6342a86dcd9.md @@ -0,0 +1,62 @@ +CI detected that the dependency upgrade from version **spring-web-5.3.24** to **spring-web-6.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[95,52] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[120,12] cannot find symbol
[ERROR] symbol: class ResponseEntity
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,38] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[96,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[102,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[57,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.0/spring-beans-6.0.0.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcher.java:[59,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcher + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[108,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[94,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[50,32] cannot access org.springframework.http.HttpStatus
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/http/HttpStatus.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[66,81] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[103,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[38,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.0/spring-beans-6.0.0.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[51,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[35,32] cannot access org.springframework.http.HttpEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/http/HttpEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[55,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[26,32] cannot access org.springframework.http.MediaType
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/http/MediaType.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[75,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.protocol.MessageService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,19] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[28,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[52,32] cannot access org.springframework.http.ResponseEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/http/ResponseEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[36,32] cannot access org.springframework.http.HttpHeaders
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.0/spring-web-6.0.0.jar(/org/springframework/http/HttpHeaders.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/d675fa18d22f8ad374f8d6cb7e0dfd9b1f18cc58.md b/Resources/JavaVersionIncompatibility/d675fa18d22f8ad374f8d6cb7e0dfd9b1f18cc58.md new file mode 100644 index 0000000..0626dbd --- /dev/null +++ b/Resources/JavaVersionIncompatibility/d675fa18d22f8ad374f8d6cb7e0dfd9b1f18cc58.md @@ -0,0 +1,64 @@ +CI detected that the dependency upgrade from version **spring-webmvc-5.3.24** to **spring-webmvc-6.0.1** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[31,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[31,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.1/spring-context-6.0.1.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[28,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.1/spring-context-6.0.1.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[39,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.1/spring-context-6.0.1.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[47,13] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[29,50] cannot access org.springframework.web.servlet.mvc.method.RequestMappingInfo
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.1/spring-webmvc-6.0.1.jar(/org/springframework/web/servlet/mvc/method/RequestMappingInfo.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[29,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.1/spring-context-6.0.1.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[109,13] cannot find symbol
[ERROR] symbol: class RequestMappingInfo
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[25,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.1/spring-context-6.0.1.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[30,61] cannot access org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.1/spring-webmvc-6.0.1.jar(/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[35,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/NotificationTemplateProvider.java:[73,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[46,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[36,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/builder/IdsRequestBuilderService.java:[33,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[44,19] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[38,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/RequestTemplateProvider.java:[58,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[61,2] cannot find symbol
[ERROR] symbol: class Controller + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[53,38] cannot access org.springframework.stereotype.Controller
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.1/spring-context-6.0.1.jar(/org/springframework/stereotype/Controller.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[64,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[49,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcherProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[57,34] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[52,47] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[40,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.util.SerializerProvider + +
diff --git a/Resources/JavaVersionIncompatibility/d7cc1744503dcd393468db7cbc47cec0cea2a2f0.md b/Resources/JavaVersionIncompatibility/d7cc1744503dcd393468db7cbc47cec0cea2a2f0.md new file mode 100644 index 0000000..25074de --- /dev/null +++ b/Resources/JavaVersionIncompatibility/d7cc1744503dcd393468db7cbc47cec0cea2a2f0.md @@ -0,0 +1,16 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.24** to **spring-core-6.0.3** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ssl/keystore/KeyStoreManager.java:[61,35] cannot access org.springframework.core.io.ClassPathResource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.3/spring-core-6.0.3.jar(/org/springframework/core/io/ClassPathResource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/df8452d0d7878f371c8775814e7a60cf6cecbfbb.md b/Resources/JavaVersionIncompatibility/df8452d0d7878f371c8775814e7a60cf6cecbfbb.md new file mode 100644 index 0000000..197a997 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/df8452d0d7878f371c8775814e7a60cf6cecbfbb.md @@ -0,0 +1,29 @@ +CI detected that the dependency upgrade from version **spring-context-5.3.23** to **spring-context-6.0.0** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `build.yml` +- `deploy.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[6,35] cannot access org.springframework.context.ConfigurableApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.0/spring-context-6.0.0.jar(/org/springframework/context/ConfigurableApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[53,41] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[33,11] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[52,65] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[41,5] reference to CallActivityMockForSpringContext is ambiguous
[ERROR] both constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,org.springframework.beans.factory.config.SingletonBeanRegistry) in org.camunda.community.mockito.process.CallActivityMockForSpringContext and constructor CallActivityMockForSpringContext(java.lang.String,org.camunda.community.mockito.process.CallActivityMock.MockedModelConfigurer,ApplicationContext) in org.camunda.community.mockito.process.CallActivityMockForSpringContext match + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[5,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.0/spring-context-6.0.0.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[48,73] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +* > [ERROR] /camunda-platform-7-mockito/src/main/java/org/camunda/community/mockito/process/CallActivityMockForSpringContext.java:[56,14] cannot find symbol
[ERROR] symbol: class ConfigurableApplicationContext
[ERROR] location: class org.camunda.community.mockito.process.CallActivityMockForSpringContext + +
diff --git a/Resources/JavaVersionIncompatibility/e14a9e4a300747a582012aec4d40a6a69f5fd4f4.md b/Resources/JavaVersionIncompatibility/e14a9e4a300747a582012aec4d40a6a69f5fd4f4.md new file mode 100644 index 0000000..0ec2bdc --- /dev/null +++ b/Resources/JavaVersionIncompatibility/e14a9e4a300747a582012aec4d40a6a69f5fd4f4.md @@ -0,0 +1,62 @@ +CI detected that the dependency upgrade from version **spring-web-5.3.24** to **spring-web-6.0.5** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[95,52] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[28,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.5/spring-web-6.0.5.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[120,12] cannot find symbol
[ERROR] symbol: class ResponseEntity
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,38] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[26,32] cannot access org.springframework.http.MediaType
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.5/spring-web-6.0.5.jar(/org/springframework/http/MediaType.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[96,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[102,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcher.java:[59,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcher + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[108,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[94,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[66,81] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[103,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[51,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[55,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[36,32] cannot access org.springframework.http.HttpHeaders
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.5/spring-web-6.0.5.jar(/org/springframework/http/HttpHeaders.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[75,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.protocol.MessageService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,19] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[38,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.5/spring-beans-6.0.5.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[57,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.5/spring-beans-6.0.5.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[35,32] cannot access org.springframework.http.HttpEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.5/spring-web-6.0.5.jar(/org/springframework/http/HttpEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[52,32] cannot access org.springframework.http.ResponseEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.5/spring-web-6.0.5.jar(/org/springframework/http/ResponseEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[50,32] cannot access org.springframework.http.HttpStatus
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.5/spring-web-6.0.5.jar(/org/springframework/http/HttpStatus.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/e14e4c4fa02468ad27d303785c26539a6b3b8eab.md b/Resources/JavaVersionIncompatibility/e14e4c4fa02468ad27d303785c26539a6b3b8eab.md new file mode 100644 index 0000000..91d10bf --- /dev/null +++ b/Resources/JavaVersionIncompatibility/e14e4c4fa02468ad27d303785c26539a6b3b8eab.md @@ -0,0 +1,64 @@ +CI detected that the dependency upgrade from version **spring-webmvc-5.3.24** to **spring-webmvc-6.0.2** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[31,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[31,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[29,50] cannot access org.springframework.web.servlet.mvc.method.RequestMappingInfo
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.2/spring-webmvc-6.0.2.jar(/org/springframework/web/servlet/mvc/method/RequestMappingInfo.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[47,13] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[109,13] cannot find symbol
[ERROR] symbol: class RequestMappingInfo
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[28,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[39,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[35,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/NotificationTemplateProvider.java:[73,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[46,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[29,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[36,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/builder/IdsRequestBuilderService.java:[33,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[44,19] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[38,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/RequestTemplateProvider.java:[58,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[61,2] cannot find symbol
[ERROR] symbol: class Controller + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[25,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[64,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[49,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcherProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[57,34] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[52,47] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[53,38] cannot access org.springframework.stereotype.Controller
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.2/spring-context-6.0.2.jar(/org/springframework/stereotype/Controller.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[30,61] cannot access org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.2/spring-webmvc-6.0.2.jar(/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[40,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.util.SerializerProvider + +
diff --git a/Resources/JavaVersionIncompatibility/e47fd8edc5227b6852ebd2466dd89049c9907b80.md b/Resources/JavaVersionIncompatibility/e47fd8edc5227b6852ebd2466dd89049c9907b80.md new file mode 100644 index 0000000..8a373cf --- /dev/null +++ b/Resources/JavaVersionIncompatibility/e47fd8edc5227b6852ebd2466dd89049c9907b80.md @@ -0,0 +1,22 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.27** to **spring-core-6.0.11** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `test-suite.yml` +- `build.yml` +- `findbugs.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /LPVS/src/main/java/com/lpvs/util/LPVSFileUtil.java:[15,32] cannot access org.springframework.util.FileSystemUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.11/spring-core-6.0.11.jar(/org/springframework/util/FileSystemUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[37,12] cannot find symbol
[ERROR] symbol: class TaskExecutor
[ERROR] location: class com.lpvs.LicensePreValidationSystem + +* > [ERROR] /LPVS/src/main/java/com/lpvs/controller/GitHubWebhooksController.java:[27,32] cannot access org.springframework.util.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.11/spring-core-6.0.11.jar(/org/springframework/util/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /LPVS/src/main/java/com/lpvs/LicensePreValidationSystem.java:[15,37] cannot access org.springframework.core.task.TaskExecutor
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.11/spring-core-6.0.11.jar(/org/springframework/core/task/TaskExecutor.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/eb82573b99b6d9688e557d3490fa5d3e9512c99b.md b/Resources/JavaVersionIncompatibility/eb82573b99b6d9688e557d3490fa5d3e9512c99b.md new file mode 100644 index 0000000..bd210f2 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/eb82573b99b6d9688e557d3490fa5d3e9512c99b.md @@ -0,0 +1,73 @@ +CI detected that the dependency upgrade from version **jooq-meta-3.16.6** to **jooq-meta-3.17.1** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `codeql-analysis.yml` +- `maven.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,16] cannot find symbol
[ERROR] symbol: variable DSL
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[48,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[13,16] cannot access org.jooq.SQLDialect
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.1/jooq-3.17.1.jar(/org/jooq/SQLDialect.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[59,54] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[38,42] cannot find symbol
[ERROR] symbol: class PostgresDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[16,30] cannot access org.jooq.meta.postgres.PostgresDatabase
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq-meta/3.17.1/jooq-meta-3.17.1.jar(/org/jooq/meta/postgres/PostgresDatabase.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[50,40] cannot find symbol
[ERROR] symbol: variable SQLDialect
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[88,47] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[98,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,26] cannot find symbol
[ERROR] symbol: class JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[79,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[40,43] cannot find symbol
[ERROR] symbol: variable JooqLogger
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[109,17] cannot find symbol
[ERROR] symbol: method setConnection(java.sql.Connection)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[97,40] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[118,5] method does not override or implement a method from a supertype + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[84,60] cannot find symbol
[ERROR] symbol: method getBasedir()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[78,44] cannot find symbol
[ERROR] symbol: method getProperties()
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[17,22] cannot access org.jooq.tools.JooqLogger
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.1/jooq-3.17.1.jar(/org/jooq/tools/JooqLogger.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[61,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,1] static import only from classes and interfaces + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[12,16] cannot access org.jooq.DSLContext
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.1/jooq-3.17.1.jar(/org/jooq/DSLContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[23,29] cannot access org.jooq.tools.StringUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.1/jooq-3.17.1.jar(/org/jooq/tools/StringUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[14,26] cannot access org.jooq.exception.DataAccessException
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.1/jooq-3.17.1.jar(/org/jooq/exception/DataAccessException.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[49,15] cannot find symbol
[ERROR] symbol: class DSLContext
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[89,21] cannot find symbol
[ERROR] symbol: method isBlank(java.lang.String)
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[120,9] cannot find symbol
[ERROR] symbol: variable JDBCUtils
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[126,9] cannot find symbol
[ERROR] symbol: variable super
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[15,21] cannot access org.jooq.impl.DSL
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.1/jooq-3.17.1.jar(/org/jooq/impl/DSL.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[112,27] cannot find symbol
[ERROR] symbol: class DataAccessException
[ERROR] location: class com.github.sabomichal.jooq.PostgresDDLDatabase + +* > [ERROR] /jooq-meta-postgres-flyway/src/main/java/com/github/sabomichal/jooq/PostgresDDLDatabase.java:[18,27] cannot access org.jooq.tools.jdbc.JDBCUtils
[ERROR] bad class file: /root/.m2/repository/org/jooq/jooq/3.17.1/jooq-3.17.1.jar(/org/jooq/tools/jdbc/JDBCUtils.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/f5a34301592bb62474489de79069d7873ffe070e.md b/Resources/JavaVersionIncompatibility/f5a34301592bb62474489de79069d7873ffe070e.md new file mode 100644 index 0000000..04772b3 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/f5a34301592bb62474489de79069d7873ffe070e.md @@ -0,0 +1,64 @@ +CI detected that the dependency upgrade from version **spring-webmvc-5.3.24** to **spring-webmvc-6.0.4** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[31,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[31,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[29,50] cannot access org.springframework.web.servlet.mvc.method.RequestMappingInfo
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.4/spring-webmvc-6.0.4.jar(/org/springframework/web/servlet/mvc/method/RequestMappingInfo.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[47,13] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[109,13] cannot find symbol
[ERROR] symbol: class RequestMappingInfo
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[39,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[35,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/NotificationTemplateProvider.java:[73,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[46,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[53,38] cannot access org.springframework.stereotype.Controller
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/stereotype/Controller.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[36,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/builder/IdsRequestBuilderService.java:[33,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[44,19] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[38,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/RequestTemplateProvider.java:[58,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[61,2] cannot find symbol
[ERROR] symbol: class Controller + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[30,61] cannot access org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.4/spring-webmvc-6.0.4.jar(/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[64,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[29,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[49,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcherProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[57,34] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[28,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[52,47] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[25,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.4/spring-context-6.0.4.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[40,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.util.SerializerProvider + +
diff --git a/Resources/JavaVersionIncompatibility/f5dbb3021aa96afc60b38d2b0b01873d3a6f16bd.md b/Resources/JavaVersionIncompatibility/f5dbb3021aa96afc60b38d2b0b01873d3a6f16bd.md new file mode 100644 index 0000000..2c19caa --- /dev/null +++ b/Resources/JavaVersionIncompatibility/f5dbb3021aa96afc60b38d2b0b01873d3a6f16bd.md @@ -0,0 +1,64 @@ +CI detected that the dependency upgrade from version **spring-webmvc-5.3.24** to **spring-webmvc-6.0.8** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[31,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[25,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[30,61] cannot access org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.8/spring-webmvc-6.0.8.jar(/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[47,13] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[109,13] cannot find symbol
[ERROR] symbol: class RequestMappingInfo
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[35,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/NotificationTemplateProvider.java:[73,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[53,38] cannot access org.springframework.stereotype.Controller
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/stereotype/Controller.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[46,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[39,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[36,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/builder/IdsRequestBuilderService.java:[33,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[44,19] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[38,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/requests/RequestTemplateProvider.java:[58,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[61,2] cannot find symbol
[ERROR] symbol: class Controller + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[31,35] cannot access org.springframework.context.ApplicationContext
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/context/ApplicationContext.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[29,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[64,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[29,50] cannot access org.springframework.web.servlet.mvc.method.RequestMappingInfo
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-webmvc/6.0.8/spring-webmvc-6.0.8.jar(/org/springframework/web/servlet/mvc/method/RequestMappingInfo.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[49,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcherProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[57,34] cannot find symbol
[ERROR] symbol: class RequestMappingHandlerMapping
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[52,47] cannot find symbol
[ERROR] symbol: class ApplicationContext
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/util/SerializerProvider.java:[40,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.util.SerializerProvider + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcherProvider.java:[28,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.8/spring-context-6.0.8.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/fb71d68c62a6b9263ebc5113d97c91535d3106b2.md b/Resources/JavaVersionIncompatibility/fb71d68c62a6b9263ebc5113d97c91535d3106b2.md new file mode 100644 index 0000000..0c17aa3 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/fb71d68c62a6b9263ebc5113d97c91535d3106b2.md @@ -0,0 +1,16 @@ +CI detected that the dependency upgrade from version **spring-core-5.3.24** to **spring-core-6.0.2** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ssl/keystore/KeyStoreManager.java:[61,35] cannot access org.springframework.core.io.ClassPathResource
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-core/6.0.2/spring-core-6.0.2.jar(/org/springframework/core/io/ClassPathResource.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/fe31c5e11259881e9dce66d325d1b8b8ed8afc81.md b/Resources/JavaVersionIncompatibility/fe31c5e11259881e9dce66d325d1b8b8ed8afc81.md new file mode 100644 index 0000000..e18c4e6 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/fe31c5e11259881e9dce66d325d1b8b8ed8afc81.md @@ -0,0 +1,82 @@ +CI detected that the dependency upgrade from version **spring-boot-starter-2.7.5** to **spring-boot-starter-3.0.4** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[25,49] cannot access org.springframework.validation.annotation.Validated
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/validation/annotation/Validated.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[209,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[74,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[97,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[45,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[35,2] cannot find symbol
[ERROR] symbol: class ConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[37,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.6/spring-beans-6.0.6.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[34,2] cannot find symbol
[ERROR] symbol: class Validated + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[198,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[58,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[48,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[210,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[65,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.4/spring-boot-autoconfigure-3.0.4.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnProperty.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[76,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[39,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[66,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[72,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[50,2] cannot find symbol
[ERROR] symbol: class ConditionalOnClass + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[24,51] cannot access org.springframework.boot.context.properties.ConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.4/spring-boot-3.0.4.jar(/org/springframework/boot/context/properties/ConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[97,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[74,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[38,51] cannot access org.springframework.boot.context.properties.EnableConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.4/spring-boot-3.0.4.jar(/org/springframework/boot/context/properties/EnableConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[40,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[38,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.6/spring-context-6.0.6.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[37,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.4/spring-boot-autoconfigure-3.0.4.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[56,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[49,2] cannot find symbol
[ERROR] symbol: class EnableConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[199,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[90,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[36,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnClass
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.4/spring-boot-autoconfigure-3.0.4.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/DapsValidator.java:[40,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[36,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.6/spring-beans-6.0.6.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/fe57fca108ccd8ea9b98666075fbc3237874c314.md b/Resources/JavaVersionIncompatibility/fe57fca108ccd8ea9b98666075fbc3237874c314.md new file mode 100644 index 0000000..6f5ec9b --- /dev/null +++ b/Resources/JavaVersionIncompatibility/fe57fca108ccd8ea9b98666075fbc3237874c314.md @@ -0,0 +1,62 @@ +CI detected that the dependency upgrade from version **spring-web-5.3.24** to **spring-web-6.0.2** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[95,52] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[35,32] cannot access org.springframework.http.HttpEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.2/spring-web-6.0.2.jar(/org/springframework/http/HttpEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[120,12] cannot find symbol
[ERROR] symbol: class ResponseEntity
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,38] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[38,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.2/spring-beans-6.0.2.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[96,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[102,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/dispatcher/MessageDispatcher.java:[59,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.dispatcher.MessageDispatcher + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[108,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.protocol.http.IdsHttpService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[94,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[66,81] cannot find symbol
[ERROR] symbol: class MediaType
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[52,32] cannot access org.springframework.http.ResponseEntity
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.2/spring-web-6.0.2.jar(/org/springframework/http/ResponseEntity.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[103,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.MessageController + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/handler/request/RequestMessageHandlerService.java:[51,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.handler.request.RequestMessageHandlerService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[55,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.endpoint.EndpointService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[36,32] cannot access org.springframework.http.HttpHeaders
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.2/spring-web-6.0.2.jar(/org/springframework/http/HttpHeaders.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/MessageService.java:[75,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.protocol.MessageService + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/response/Base64EncodedFileBodyResponse.java:[54,19] cannot find symbol
[ERROR] symbol: class HttpEntity
[ERROR] location: class ids.messaging.response.Base64EncodedFileBodyResponse + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/protocol/http/IdsHttpService.java:[57,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.2/spring-beans-6.0.2.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/MessageController.java:[50,32] cannot access org.springframework.http.HttpStatus
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.2/spring-web-6.0.2.jar(/org/springframework/http/HttpStatus.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[28,47] cannot access org.springframework.web.bind.annotation.RequestMethod
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.2/spring-web-6.0.2.jar(/org/springframework/web/bind/annotation/RequestMethod.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/messaging/src/main/java/ids/messaging/endpoint/EndpointService.java:[26,32] cannot access org.springframework.http.MediaType
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-web/6.0.2/spring-web-6.0.2.jar(/org/springframework/http/MediaType.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/JavaVersionIncompatibility/fe8646eae5d5f81a733be6cbf8f3a308c604e8ec.md b/Resources/JavaVersionIncompatibility/fe8646eae5d5f81a733be6cbf8f3a308c604e8ec.md new file mode 100644 index 0000000..2592fb6 --- /dev/null +++ b/Resources/JavaVersionIncompatibility/fe8646eae5d5f81a733be6cbf8f3a308c604e8ec.md @@ -0,0 +1,82 @@ +CI detected that the dependency upgrade from version **spring-boot-starter-2.7.5** to **spring-boot-starter-3.0.1** has failed. +The new version of the dependency require a different version of Java. + +CI uses **Java 11** (class version **55.0**). The new version of the dependency requires **Java 17** (class version **61.0**). + +To resolve this issue, you need to update the Java version to **Java 17** in the following files: +- `development-maven-build.yml` +- `maven-build-push.yml` +- `maven-build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[209,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[65,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.1/spring-boot-autoconfigure-3.0.1.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnProperty.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[40,46] cannot access org.springframework.context.annotation.Configuration
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/context/annotation/Configuration.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[74,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[97,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[45,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[88,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[35,2] cannot find symbol
[ERROR] symbol: class ConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[34,2] cannot find symbol
[ERROR] symbol: class Validated + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[198,6] cannot find symbol
[ERROR] symbol: class Bean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[38,38] cannot access org.springframework.stereotype.Service
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/stereotype/Service.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[66,38] cannot access org.springframework.stereotype.Component
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/stereotype/Component.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[58,2] cannot find symbol
[ERROR] symbol: class ConditionalOnProperty + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[48,2] cannot find symbol
[ERROR] symbol: class Configuration + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[210,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[76,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/orbiter/OrbiterTokenManagerService.java:[72,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[50,2] cannot find symbol
[ERROR] symbol: class ConditionalOnClass + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[82,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[39,46] cannot access org.springframework.context.annotation.Bean
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/context/annotation/Bean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[37,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.1/spring-boot-autoconfigure-3.0.1.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[36,52] cannot access org.springframework.beans.factory.annotation.Autowired
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.3/spring-beans-6.0.3.jar(/org/springframework/beans/factory/annotation/Autowired.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[37,52] cannot access org.springframework.beans.factory.annotation.Value
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-beans/6.0.3/spring-beans-6.0.3.jar(/org/springframework/beans/factory/annotation/Value.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[38,51] cannot access org.springframework.boot.context.properties.EnableConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.1/spring-boot-3.0.1.jar(/org/springframework/boot/context/properties/EnableConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/TokenProviderService.java:[97,6] cannot find symbol
[ERROR] symbol: class Autowired
[ERROR] location: class ids.messaging.core.daps.TokenProviderService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[74,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[24,51] cannot access org.springframework.boot.context.properties.ConfigurationProperties
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot/3.0.1/spring-boot-3.0.1.jar(/org/springframework/boot/context/properties/ConfigurationProperties.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProperties.java:[25,49] cannot access org.springframework.validation.annotation.Validated
[ERROR] bad class file: /root/.m2/repository/org/springframework/spring-context/6.0.3/spring-context-6.0.3.jar(/org/springframework/validation/annotation/Validated.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[56,2] cannot find symbol
[ERROR] symbol: class Component + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[49,2] cannot find symbol
[ERROR] symbol: class EnableConfigurationProperties + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[199,6] cannot find symbol
[ERROR] symbol: class ConditionalOnMissingBean
[ERROR] location: class ids.messaging.core.config.ConfigProducer + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/aisec/AisecTokenManagerService.java:[90,6] cannot find symbol
[ERROR] symbol: class Value
[ERROR] location: class ids.messaging.core.daps.aisec.AisecTokenManagerService + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/daps/DapsValidator.java:[40,2] cannot find symbol
[ERROR] symbol: class Service + +* > [ERROR] /IDS-Messaging-Services/core/src/main/java/ids/messaging/core/config/ConfigProducer.java:[36,56] cannot access org.springframework.boot.autoconfigure.condition.ConditionalOnClass
[ERROR] bad class file: /root/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.0.1/spring-boot-autoconfigure-3.0.1.jar(/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.class)
[ERROR] class file has wrong version 61.0, should be 55.0
[ERROR] Please remove or make sure it appears in the correct subdirectory of the classpath. + +
diff --git a/Resources/findings.md b/Resources/findings.md index 785870e..da7426c 100644 --- a/Resources/findings.md +++ b/Resources/findings.md @@ -18,4 +18,9 @@ [Line from log: 1765](../projects/6ac25d3a60ea29a41a37ad47b7feb2908ee84fff/myfaces-tobago/6ac25d3a60ea29a41a37ad47b7feb2908ee84fff.log) * >[ERROR] /myfaces-tobago/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/mock/servlet/MockHttpSession.java:[24,28] cannot find symbol symbol: class HttpSessionContext - location: package jakarta.servlet.http \ No newline at end of file + location: package jakarta.servlet.http + > + + +### User Study +Compilation failure: 1d43bce1de6a81ac017c233d72f348d3c850299e \ No newline at end of file diff --git a/Resources/java_version.md b/Resources/java_version.md new file mode 100644 index 0000000..468272e --- /dev/null +++ b/Resources/java_version.md @@ -0,0 +1,17 @@ +CI detected that the dependency upgrade from version <**label indicating the previous version of the dependency**> to <**label indicating the new version of the dependency**> has failed. + +The new version of the dependency require a different version of Java. + +CI uses Java <**current Java version**>. The new version of the dependency requires Java <**required Java version**>. + +To resolve this issue, you need to update the Java version in the following files to the version required by the new dependency: + +- `maven.yml` +- `build.yml` + +
+Here you can find a list of failures identified from the logs generated in the build process + +* > Label to indicate the error message in the logs +* > Label to indicate the error message in the logs +
diff --git a/Resources/java_versions_comp.json b/Resources/java_versions_comp.json new file mode 100644 index 0000000..3c4e9ac --- /dev/null +++ b/Resources/java_versions_comp.json @@ -0,0 +1,351 @@ +{ + "4b9fdf1135b704e050cf785d6ea353d24f4c64bb/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "1629113f03956a230738c47397c33f8ba2d11341/LPVS/.github": { + "test-suite.yml": [11], + "build.yml": [11], + "findbugs.yml": [11] + }, + "4259baebb426fefbe9dbee26725d6803170dcb85/lti-launch/.github": { + "maven.yml": [11] + }, + "3b4a91979f0d93ca4cbb79e6cfa5029a6b8eaf01/jtcop/.github": { + "maven.test.yaml": [11, 17], + "maven.release.yml": [11], + "codecov.yaml": [11] + }, + "e47fd8edc5227b6852ebd2466dd89049c9907b80/LPVS/.github": { + "test-suite.yml": [11], + "build.yml": [11], + "findbugs.yml": [11] + }, + "1506282e31f5b78fb4395a27f9ad901ef3d98c70/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "bcafa6f39116555a4c53882ed2cf2835594d9114/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "a698299490d70ce07b7af6e29ebf4627d412f4dd/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "b19ea99f63b85bbe2bcbdb67bd57459a79f4e677/jooq-meta-postgres-flyway/.github": { + "codeql-analysis.yml": [11], + "maven.yml": [11] + }, + "eb82573b99b6d9688e557d3490fa5d3e9512c99b/jooq-meta-postgres-flyway/.github": { + "codeql-analysis.yml": [11], + "maven.yml": [11] + }, + "59849004763ffd66d14047d51908192ba0551a73/micronaut-openapi-codegen/.github": { + "release.yaml": [11], + "ci.yaml": [11] + }, + "404e4edc99c0ef601ad3a343f168194815db4151/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "3d0cc7db9d9c9420fa4f478a72067ef846ba8129/jooq-meta-postgres-flyway/.github": { + "codeql-analysis.yml": [11], + "maven.yml": [11] + }, + "67cb9570f6b1d90e2653ab5efd137af3edebc9b5/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "9da8825fbdb24922b94be9eb82eefc73640d8f6b/openhospital-core/.github": { + "maven.yml": [11] + }, + "9dbbd30590fa87f3e719615e0816c231106e01de/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "07ff1a34661db6c7f0ca03156ff5d8936b5123f5/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "11c09e31119c28ea91a9777b2ce8893bca483493/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "8881523e12a0890f72ac9fef69821cefba0c7a09/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "bad55510363bde900a60f13ecc744e0c244397d4/micronaut-openapi-codegen/.github": { + "release.yaml": [11], + "ci.yaml": [11] + }, + "e14e4c4fa02468ad27d303785c26539a6b3b8eab/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "90cca141fc95d0510f92e23032c9d03813b074d8/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "c4950c79dfe902dae8991ff722216c7ba787bf32/future-converter/.github": { + "ci.yml": [8, 17, 18] + }, + "b2b18584e757c44b1468383252d6a9761f8097de/micronaut-openapi-codegen/.github": { + "release.yaml": [11], + "ci.yaml": [11] + }, + "c83979c19ca572bfef0fa96d73772fdbeeddd109/dropwizard-graphql/.github": { + "maven.yml": [11, 14] + }, + "79759978f25c94d97f340c80ef0e77c3ee6f8cfc/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "ae17c8e47b93596cffeb2ec9241465cf39c7f8eb/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "4607926d691c986e2e172f636db7c527945c5b45/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "aa14451c6f218af9c08e846345d83259eb7d46a8/LPVS/.github": { + "test-suite.yml": [11], + "build.yml": [11], + "findbugs.yml": [11] + }, + "bdbb81614557858922836294d1d6dd3dd661f10c/micronaut-openapi-codegen/.github": { + "release.yaml": [11], + "ci.yaml": [11] + }, + "08e33c7bbc45ceac64564dadb9abbae0ed481ca5/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "6e9e6cdda5c5637ce66ba16b8ccfcd5ffce8141d/log-record/.github": { + "ci.yml": [8] + }, + "7cda77e3b9981dba271f866ec727ad9c6af9c709/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "1e1de78344a89be66d2e78f7adb07a479f6677eb/LPVS/.github": { + "test-suite.yml": [11], + "build.yml": [11], + "findbugs.yml": [11] + }, + "8f757321e48d7ffb117cbc8fb13d316e23d0f58f/nldi-services/.github": { + "spotless.yml": [11], + "maven-tests.yml": [11] + }, + "5320d2638b01419a8bac95e0ee939523831a720a/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "d7cc1744503dcd393468db7cbc47cec0cea2a2f0/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "626631e833256a62137c1e5c35c5c5821ca700d5/jooq-meta-postgres-flyway/.github": { + "codeql-analysis.yml": [11], + "maven.yml": [11] + }, + "02eedffd33cc1fe94b59372a1c1bfd91b2fc2ced/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "88676d24472254d05976a62e72e1c3799525a616/micronaut-openapi-codegen/.github": { + "release.yaml": [11], + "ci.yaml": [11] + }, + "fb71d68c62a6b9263ebc5113d97c91535d3106b2/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "4861e40d7047a73bdbae1a4856a2b5ee4a79071a/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "a1ff30e0bc6a9b48e024a8ab27cefda3ad85b530/jooq-meta-postgres-flyway/.github": { + "codeql-analysis.yml": [11], + "maven.yml": [11] + }, + "44e6ae1bd9fea04c5c6edeee53c673e7c0310dff/micronaut-openapi-codegen/.github": { + "release.yaml": [11], + "ci.yaml": [11] + }, + "9d51a768dc633ed4895a474f78eaaf84a3c209fd/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "7d1985cccacafa64e9eaa7fd5fe5c7154e994456/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "e14a9e4a300747a582012aec4d40a6a69f5fd4f4/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "0cdcc1f1319311f383676a89808c9b8eb190145c/LPVS/.github": { + "test-suite.yml": [11], + "build.yml": [11], + "findbugs.yml": [11] + }, + "c5905f7220e1129a0448715ee5d0e61ee5ac31e1/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "3d2b38ee1c838d885db80326b3cd60e314704e39/log-record/.github": { + "ci.yml": [8] + }, + "8e1f0f08eef839903067c7c11432117c4897d0cd/jooq-meta-postgres-flyway/.github": { + "codeql-analysis.yml": [11], + "maven.yml": [11] + }, + "abe29340c60b0bfe93b13b638838163cf355eb03/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "979780b29cf329579fa703552f9090b23c10e81d/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "58d2448fa2d6ec02f428b85eaeef0855508e72b9/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "0ed34fa61c9e31bd4ebb7e4bf12ce792aec96091/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "ab70529b2edf0a0b3f672278e191dc207d1b8711/LPVS/.github": { + "test-suite.yml": [11], + "build.yml": [11], + "findbugs.yml": [11] + }, + "11be71ab8713fe987785e9e25e4f3e410e709ab9/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "b92fdfdaeea759fb558907ef8f7e3d46c170f886/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "fe57fca108ccd8ea9b98666075fbc3237874c314/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "2b3054325e9e55e1af6056b604048fc328dbb2dd/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "df8452d0d7878f371c8775814e7a60cf6cecbfbb/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "5f09581fe834abe1430c0bb894d095071bd1d581/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "d675fa18d22f8ad374f8d6cb7e0dfd9b1f18cc58/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "c8da6c3c823d745bb37b072a4a33b6342a86dcd9/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "2c04b9834112eba86fbb8ad1f925128d49449c41/log-record/.github": { + "ci.yml": [8] + }, + "17778ff224c38fe03999cac8caa1814b68fd0ef2/camunda-platform-7-mockito/.github": { + "build.yml": [11], + "deploy.yml": [11] + }, + "5b90c67ef2d2ebb296534ea2ce8d8955cf6854c7/LPVS/.github": { + "test-suite.yml": [11], + "build.yml": [11], + "findbugs.yml": [11] + }, + "0c60d0b08c999769313bfe2335fa792efcfb0300/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "f5dbb3021aa96afc60b38d2b0b01873d3a6f16bd/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "0ddd0efa29634a4783358cba727d0851236aa579/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "fe31c5e11259881e9dce66d325d1b8b8ed8afc81/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "01609f962f32cc2ba04fa574c79429e86b372c6b/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "f5a34301592bb62474489de79069d7873ffe070e/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "fe8646eae5d5f81a733be6cbf8f3a308c604e8ec/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "315060cd2c7a3812a4adf614b042de84e9c39da4/IDS-Messaging-Services/.github": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + }, + "70e13f6bdb7de7f8eda9f174a5616284f2157ea7/future-converter/.github": { + "ci.yml": [8, 17, 18] + }, + "c1fc16b4fe9dfdfa16ce7248fccad0e7d994094d/LPVS/.github": { + "test-suite.yml": [11], + "build.yml": [11], + "findbugs.yml": [11] + }, + "433fbc0ee1192ca4aa69f337fd3b530ec94906e9/LPVS/.github": { + "test-suite.yml": [11], + "build.yml": [11], + "findbugs.yml": [11] + } +} diff --git a/Resources/java_versions_projects.json b/Resources/java_versions_projects.json new file mode 100644 index 0000000..b057fca --- /dev/null +++ b/Resources/java_versions_projects.json @@ -0,0 +1,48 @@ +{ + "jtcop": { + "maven.test.yaml": [11, 17], + "maven.release.yml": [11], + "codecov.yaml": [11] + }, + "LPVS": { + "test-suite.yml": [11], + "build.yml": [11], + "findbugs.yml": [11] + }, + "log-record": { + "ci.yml": [8] + }, + "lti-launch": { + "maven.yml": [11] + }, + "micronaut-openapi-codegen": { + "release.yaml": [11], + "ci.yaml": [11] + }, + "dropwizard-graphql": { + "maven.yml": [11, 14] + }, + "jooq-meta-postgres-flyway": { + "codeql-analysis.yml": [11], + "maven.yml": [11] + }, + "openhospital-core": { + "maven.yml": [11] + }, + "nldi-services": { + "spotless.yml": [11], + "maven-tests.yml": [11] + }, + "camunda-platform-7-mockito": { + "build.yml": [11], + "deploy.yml": [11] + }, + "future-converter": { + "ci.yml": [8, 17, 18] + }, + "IDS-Messaging-Services": { + "development-maven-build.yml": [11], + "maven-build-push.yml": [11], + "maven-build.yml": [11] + } +} diff --git a/Resources/results.md b/Resources/results.md new file mode 100644 index 0000000..9a85de7 --- /dev/null +++ b/Resources/results.md @@ -0,0 +1,18 @@ +| Breaking commit | Maracas Result | Breaking Good Result | Description | +|:-----------------------------------------|:------------------------------------------|:---------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| bd3ce213e2771c6ef7817c80818807a757d4e94a | Breaking changes: 379
Broken use: 0 | Method modifies but needs to generate an explanation with an exception | ------------------- | +| 43b3a858b77ec27fc8946aba292001c3de465012 | Breaking changes: 244
Broken use: 8 | The error is not related to any of the dependency changes | Check if it is related to a transitive dependency
Analyze why the new version of the dependency
causes a break with a transitive dependency | +| 8e1f0f08eef839903067c7c11432117c4897d0cd | Breaking changes: 0
Broken use: 0 | The issue occurs because the project is compiled with a different version of Java | ------------------- | +| aa14451c6f218af9c08e846345d83259eb7d46a8 | Broken use: 0 | The issue occurs because the project is compiled with a different version of Java | ------------------- | +| aa14451c6f218af9c08e846345d83259eb7d46a8 | Broken use: 0 | The issue occurs because the dependency version is compiled with a different version of Java | [ERROR] /LPVS/src/main/java/com/lpvs/util/FileUtil.java:[13,32] cannot access org.springframework.util.FileSystemUtils
class file has wrong version 61.0, should be 55.0 | +| 6c53cd904bd66fc79af8687571e607c259226b81 | Broken use: 4 | The issue occurs because the project is compiled with a different version of Java | ------------------- | +| 6c53cd904bd66fc79af8687571e607c259226b81 | broken use: 4 | No relationship between JAPICMP changes and the log errors | | +| 26fd1cd7639b7deb7078df5e4cb05c6d463ad07a | Broken use: 0 | Related to a third-party dependency | | +| 6c9a2ecf3bac1e0c7675e03b2828a71450d8ed45 | Broken use: 0 | No changes related to JAPICMP results | | +| c5fd5187ce64d2b53602717f09cc18dd21d55e8d | ---- | Use of the `-Werror` option which treats warnings as errors | | +| 7d97e1c7331f6722eb1d8192bf0a2686f5a33798 | Broken use : 0 | No relationship between japicmp and the errors | | +| c44aa1857cdeb811d87303df5671be9431105d3c | Use of the `-Werror` | Warning errors are not present in the results of japicmp | +| db02c6bcb989a5b0f08861c3344b532769530467 | Broken use:18 | The error is not related to any of the dependency changes | Check if it is related to a transitive dependency
Analyze why the new version of the dependency
causes a break with a transitive dependency | +| 7e8c62e2bb21097e563747184636cf8e8934ce98 | Broken use: 0 | The issue is with a third-party dependency | ------------------- | +| 3a4a2b11483689ca3e99e92785a7b27c56d072b8 | Broken use: 0 | Related to a third-party dependency | | +| c09896887acf0fe59320e01145a7034cd8d4e326 | Broken use : 4 | fixed | FIXED | \ No newline at end of file diff --git a/Resources/transitive.md b/Resources/transitive.md new file mode 100644 index 0000000..ba233b3 --- /dev/null +++ b/Resources/transitive.md @@ -0,0 +1,20 @@ +CI detected that the dependency upgrade from version <**label indicating the previous version of the dependency**> to <**label indicating the new version of the dependency**> has failed. Here are +details to help you understand and fix the problem: + +Your code depends on indirect dependency <**label indicating indirect dependency**> which has been removed in the new version of the updated dependency (<**label indicating the new version of the dependency**>). + +
+Here you can find a list of failures identified from the logs generated in the build process + + * > Label to indicate the error message in the logs + * An error was detected in line < Label indicate line in client> which is making use of an outdated API. + ``` java + < Line in client > + ``` + * > Label to indicate the error message in the logs + * An error was detected in line < Label indicate line in client> which is making use of an outdated API. + ``` java + < Line in client > + ``` +
+ diff --git a/Results/Explanations_v1/1ef97ea6c5b6e34151fe6167001b69e003449f96.md b/Results/Explanations_v1/1ef97ea6c5b6e34151fe6167001b69e003449f96.md new file mode 100644 index 0000000..7174cec --- /dev/null +++ b/Results/Explanations_v1/1ef97ea6c5b6e34151fe6167001b69e003449f96.md @@ -0,0 +1,17 @@ +CI detected that the dependency upgrade from version **datafaker-1.3.0** to **datafaker-1.4.0** has failed. Here are details to help you understand and fix the problem: +1. Your client utilizes **1** instructions which has been modified in the new version of the dependency. + * Method between(java.util.Date,java.util.Date) which has been removed in the new version of the dependency + + * The failure is identified from the logs generated in the build process. + + * >[[ERROR] /flink-faker/src/main/java/com/github/knaufk/flink/faker/DateTime.java:[45,40] incompatible types: java.util.Date cannot be converted to java.sql.Timestamp](https://github.com/chains-project/breaking-good/actions/runs/8110103454/job/22166641300#step:4:709) + * An error was detected in line 45 which is making use of an outdated API. + ``` java + 45 super.between(from, to); + ``` + + To resolve this issue, there are alternative options available in the new version of the dependency that can replace the incompatible method currently used in the client. You can consider substituting the existing method with one of the following options provided by the new version of the dependency + ``` java + Timestamp between(Timestamp,Timestamp); + ``` + diff --git a/Scripts/java_version_failure.py b/Scripts/java_version_failure.py new file mode 100644 index 0000000..0fc59a3 --- /dev/null +++ b/Scripts/java_version_failure.py @@ -0,0 +1,29 @@ +import json + +# Nombre del archivo JSON de entrada +input_json_file = '../explanationStatistics-data.json' + +# Nombre del archivo de texto con los commits +commits_file = '/Users/frank/Documents/Work/PHD/Explaining/breaking-good/client_java_version_failure.txt' + +# Cargar datos del archivo JSON +with open(input_json_file, 'r') as json_file: + data = json.load(json_file) + +# Obtener la lista de commits desde el archivo de texto +with open(commits_file, 'r') as commits_txt: + commits = {line.strip() for line in commits_txt} + +# Procesar cada objeto en el JSON +for item in data: + commit_value = item.get('commit') + if commit_value in commits: + item['java'] = True + else: + item['java'] = False + +# Guardar los datos actualizados en el mismo archivo JSON +with open(input_json_file, 'w') as json_file: + json.dump(data, json_file, indent=4) + +print("JSON actualizado con éxito.") diff --git a/Scripts/werrro-with_json.py b/Scripts/werrro-with_json.py new file mode 100644 index 0000000..3ae7990 --- /dev/null +++ b/Scripts/werrro-with_json.py @@ -0,0 +1,60 @@ +import os +import json + +def search_line_in_files(folder, search_line): + file_names = set() # Conjunto para almacenar nombres de archivos sin extensión + + # Check if the folder exists + if not os.path.isdir(folder): + print(f"The folder '{folder}' does not exist.") + return file_names + + # Iterate over each file in the folder + for filename in os.listdir(folder): + file_path = os.path.join(folder, filename) + + # Check if it is a file + if os.path.isfile(file_path): + # Guardar el nombre de archivo sin extensión + file_name_without_extension = os.path.splitext(filename)[0] + file_names.add(file_name_without_extension) + + return file_names + +def add_werror_property_to_json(input_file, logs_folder, search_line): + # Leer el JSON de entrada desde el archivo + with open(input_file, 'r') as f: + json_data = json.load(f) + + # Obtener nombres de archivo sin extensión de los logs + commit_files = search_line_in_files(logs_folder, search_line) + + # Agregar la propiedad 'werror' al JSON según los archivos de commit encontrados + for item in json_data: + commit = item.get('commit', '') + if commit in commit_files: + item['werror'] = True + else: + item['werror'] = False + + return json_data + +def save_json_to_file(json_data, output_file): + # Escribir el JSON actualizado en un archivo + with open(output_file, 'w') as f: + json.dump(json_data, f, indent=4) + +if __name__ == "__main__": + # Rutas de los archivos y carpetas + input_file = '/Users/frank/Documents/Work/PHD/Explaining/breaking-good/explanationStatistics-data.json' + logs_folder = '/Users/frank/Documents/Work/PHD/chains-project/paper/bump/reproductionLogs/successfulReproductionLogs' + search_line = 'warnings found and -Werror specified' + output_file = 'output.json' + + # Agregar la propiedad 'werror' al JSON de entrada + updated_json = add_werror_property_to_json(input_file, logs_folder, search_line) + + # Guardar el JSON actualizado en un archivo de salida + save_json_to_file(updated_json, output_file) + + print(f"Updated JSON saved to '{output_file}'.") diff --git a/client_java_version_failure.txt b/client_java_version_failure.txt new file mode 100644 index 0000000..b7ed4e3 --- /dev/null +++ b/client_java_version_failure.txt @@ -0,0 +1,78 @@ +11be71ab8713fe987785e9e25e4f3e410e709ab9 +c8da6c3c823d745bb37b072a4a33b6342a86dcd9 +ae17c8e47b93596cffeb2ec9241465cf39c7f8eb +5b90c67ef2d2ebb296534ea2ce8d8955cf6854c7 +e47fd8edc5227b6852ebd2466dd89049c9907b80 +df8452d0d7878f371c8775814e7a60cf6cecbfbb +58d2448fa2d6ec02f428b85eaeef0855508e72b9 +1629113f03956a230738c47397c33f8ba2d11341 +f5a34301592bb62474489de79069d7873ffe070e +1506282e31f5b78fb4395a27f9ad901ef3d98c70 +433fbc0ee1192ca4aa69f337fd3b530ec94906e9 +ab70529b2edf0a0b3f672278e191dc207d1b8711 +4607926d691c986e2e172f636db7c527945c5b45 +e14a9e4a300747a582012aec4d40a6a69f5fd4f4 +fe57fca108ccd8ea9b98666075fbc3237874c314 +0cdcc1f1319311f383676a89808c9b8eb190145c +fe8646eae5d5f81a733be6cbf8f3a308c604e8ec +3d0cc7db9d9c9420fa4f478a72067ef846ba8129 +7d1985cccacafa64e9eaa7fd5fe5c7154e994456 +bdbb81614557858922836294d1d6dd3dd661f10c +c5905f7220e1129a0448715ee5d0e61ee5ac31e1 +e14e4c4fa02468ad27d303785c26539a6b3b8eab +404e4edc99c0ef601ad3a343f168194815db4151 +626631e833256a62137c1e5c35c5c5821ca700d5 +b92fdfdaeea759fb558907ef8f7e3d46c170f886 +70e13f6bdb7de7f8eda9f174a5616284f2157ea7 +8881523e12a0890f72ac9fef69821cefba0c7a09 +08e33c7bbc45ceac64564dadb9abbae0ed481ca5 +4b9fdf1135b704e050cf785d6ea353d24f4c64bb +3b4a91979f0d93ca4cbb79e6cfa5029a6b8eaf01 +d675fa18d22f8ad374f8d6cb7e0dfd9b1f18cc58 +3d2b38ee1c838d885db80326b3cd60e314704e39 +02eedffd33cc1fe94b59372a1c1bfd91b2fc2ced +9da8825fbdb24922b94be9eb82eefc73640d8f6b +67cb9570f6b1d90e2653ab5efd137af3edebc9b5 +59849004763ffd66d14047d51908192ba0551a73 +a1ff30e0bc6a9b48e024a8ab27cefda3ad85b530 +bad55510363bde900a60f13ecc744e0c244397d4 +bcafa6f39116555a4c53882ed2cf2835594d9114 +2c04b9834112eba86fbb8ad1f925128d49449c41 +4861e40d7047a73bdbae1a4856a2b5ee4a79071a +5320d2638b01419a8bac95e0ee939523831a720a +0ddd0efa29634a4783358cba727d0851236aa579 +6e9e6cdda5c5637ce66ba16b8ccfcd5ffce8141d +d7cc1744503dcd393468db7cbc47cec0cea2a2f0 +0c60d0b08c999769313bfe2335fa792efcfb0300 +4259baebb426fefbe9dbee26725d6803170dcb85 +9d51a768dc633ed4895a474f78eaaf84a3c209fd +c4950c79dfe902dae8991ff722216c7ba787bf32 +abe29340c60b0bfe93b13b638838163cf355eb03 +88676d24472254d05976a62e72e1c3799525a616 +7cda77e3b9981dba271f866ec727ad9c6af9c709 +8e1f0f08eef839903067c7c11432117c4897d0cd +79759978f25c94d97f340c80ef0e77c3ee6f8cfc +979780b29cf329579fa703552f9090b23c10e81d +1e1de78344a89be66d2e78f7adb07a479f6677eb +44e6ae1bd9fea04c5c6edeee53c673e7c0310dff +b19ea99f63b85bbe2bcbdb67bd57459a79f4e677 +17778ff224c38fe03999cac8caa1814b68fd0ef2 +90cca141fc95d0510f92e23032c9d03813b074d8 +aa14451c6f218af9c08e846345d83259eb7d46a8 +315060cd2c7a3812a4adf614b042de84e9c39da4 +0ed34fa61c9e31bd4ebb7e4bf12ce792aec96091 +f5dbb3021aa96afc60b38d2b0b01873d3a6f16bd +fe31c5e11259881e9dce66d325d1b8b8ed8afc81 +c1fc16b4fe9dfdfa16ce7248fccad0e7d994094d +11c09e31119c28ea91a9777b2ce8893bca483493 +07ff1a34661db6c7f0ca03156ff5d8936b5123f5 +a698299490d70ce07b7af6e29ebf4627d412f4dd +eb82573b99b6d9688e557d3490fa5d3e9512c99b +9dbbd30590fa87f3e719615e0816c231106e01de +b2b18584e757c44b1468383252d6a9761f8097de +fb71d68c62a6b9263ebc5113d97c91535d3106b2 +2b3054325e9e55e1af6056b604048fc328dbb2dd +c83979c19ca572bfef0fa96d73772fdbeeddd109 +01609f962f32cc2ba04fa574c79429e86b372c6b +5f09581fe834abe1430c0bb894d095071bd1d581 +8f757321e48d7ffb117cbc8fb13d316e23d0f58f \ No newline at end of file diff --git a/explanationStatistics.json b/explanationStatistics-data-old.json similarity index 50% rename from explanationStatistics.json rename to explanationStatistics-data-old.json index 5dec943..4c22fc4 100644 --- a/explanationStatistics.json +++ b/explanationStatistics-data-old.json @@ -1,7 +1,7 @@ [ { "project" : "OCR4all", "commit" : "bd3ce213e2771c6ef7817c80818807a757d4e94a", - "changes" : 0 + "changes" : 1 }, { "project" : "pdb", "commit" : "43b3a858b77ec27fc8946aba292001c3de465012", @@ -9,11 +9,11 @@ }, { "project" : "jadler", "commit" : "d3af06df4613be146bb9f8034e1a8a3098050c82", - "changes" : 4 + "changes" : 5 }, { "project" : "jadler", "commit" : "ae16b526695fe275ab5e6a1992916875d26da860", - "changes" : 4 + "changes" : 5 }, { "project" : "jooq-meta-postgres-flyway", "commit" : "8e1f0f08eef839903067c7c11432117c4897d0cd", @@ -21,15 +21,15 @@ }, { "project" : "jakartaee-mvc-sample", "commit" : "5cf5a482bd430d81257b4ecd85b3d4f7da911621", - "changes" : 0 + "changes" : 14 }, { "project" : "dropwizard-pac4j", "commit" : "115827c6675f532a4d33751d1a0c0ba394bbd304", - "changes" : 0 + "changes" : 4 }, { "project" : "lithium", "commit" : "10d7545c5771b03dd9f6122bd5973a759eb2cd03", - "changes" : 1 + "changes" : 2 }, { "project" : "LPVS", "commit" : "aa14451c6f218af9c08e846345d83259eb7d46a8", @@ -37,11 +37,11 @@ }, { "project" : "myfaces-tobago", "commit" : "6ac25d3a60ea29a41a37ad47b7feb2908ee84fff", - "changes" : 0 + "changes" : 2 }, { "project" : "HAP-Java", "commit" : "6ad104c4fb9263ad1bb29e6b33618b8225efd92d", - "changes" : 0 + "changes" : 1 }, { "project" : "IDS-Messaging-Services", "commit" : "90cca141fc95d0510f92e23032c9d03813b074d8", @@ -53,7 +53,7 @@ }, { "project" : "IDS-Messaging-Services", "commit" : "e14a9e4a300747a582012aec4d40a6a69f5fd4f4", - "changes" : 0 + "changes" : 5 }, { "project" : "camunda-platform-7-mockito", "commit" : "df8452d0d7878f371c8775814e7a60cf6cecbfbb", @@ -61,11 +61,11 @@ }, { "project" : "IDS-Messaging-Services", "commit" : "fe57fca108ccd8ea9b98666075fbc3237874c314", - "changes" : 0 + "changes" : 5 }, { "project" : "WorldwideChat", "commit" : "832e0f184efdad0fcf15d14cb7af5e30239ff454", - "changes" : 0 + "changes" : 1 }, { "project" : "flacoco", "commit" : "b8f92ff37d1aed054d8320283fd6d6a492703a55", @@ -74,6 +74,10 @@ "project" : "log-record", "commit" : "3d2b38ee1c838d885db80326b3cd60e314704e39", "changes" : 0 +}, { + "project" : "code-coverage-api-plugin", + "commit" : "8ab7a7214f9ac1d130b416fae7280cfda533a54f", + "changes" : 0 }, { "project" : "IDS-Messaging-Services", "commit" : "abe29340c60b0bfe93b13b638838163cf355eb03", @@ -125,7 +129,7 @@ }, { "project" : "sorald", "commit" : "3d29f9a6823fa68763d3148bc0353ac557f2a815", - "changes" : 1 + "changes" : 2 }, { "project" : "nem", "commit" : "c44aa1857cdeb811d87303df5671be9431105d3c", @@ -138,14 +142,10 @@ "project" : "docker-adapter", "commit" : "db02c6bcb989a5b0f08861c3344b532769530467", "changes" : 0 -}, { - "project" : "google-cloud-java", - "commit" : "3eb708f53f5f1ce897c3554bb73f5de5698dd171", - "changes" : 0 }, { "project" : "http", "commit" : "4aab2869639226035c999c282f31efba15648ea3", - "changes" : 1 + "changes" : 3 }, { "project" : "nem", "commit" : "14fc5fa696f499cac48401b3a86882b3bf7d9b82", @@ -165,11 +165,11 @@ }, { "project" : "polyglot-maven", "commit" : "1e17e176460ab4283e463e62fece844d341da7f0", - "changes" : 0 + "changes" : 1 }, { "project" : "billy", "commit" : "f6659d758a437f8b676481fe70671a68a6ee1cde", - "changes" : 0 + "changes" : 1 }, { "project" : "LPVS", "commit" : "433fbc0ee1192ca4aa69f337fd3b530ec94906e9", @@ -177,7 +177,7 @@ }, { "project" : "jadler", "commit" : "8fbb6deb112102ef7507a8e68c5215e5f481d03b", - "changes" : 4 + "changes" : 5 }, { "project" : "docker-adapter", "commit" : "497b81f4446c257f693648cad7a64f62b23920a2", @@ -185,7 +185,7 @@ }, { "project" : "IDS-Messaging-Services", "commit" : "4b9fdf1135b704e050cf785d6ea353d24f4c64bb", - "changes" : 0 + "changes" : 5 }, { "project" : "IDS-Messaging-Services", "commit" : "fe31c5e11259881e9dce66d325d1b8b8ed8afc81", @@ -197,7 +197,7 @@ }, { "project" : "nem", "commit" : "c3818c076f0c088d1d11b7812b880be579c19ec2", - "changes" : 0 + "changes" : 1 }, { "project" : "arex-agent-java", "commit" : "dc9a40fde9a9fee5aaec3f60695385ba539406d4", @@ -205,11 +205,11 @@ }, { "project" : "polyglot-maven", "commit" : "a9df7b2235224fcabefa1d62e8956911aa5bb825", - "changes" : 0 + "changes" : 1 }, { "project" : "ChangeSkin", "commit" : "402082609522c66a3b790aedafd0570148a7d53f", - "changes" : 0 + "changes" : 62 }, { "project" : "IDS-Messaging-Services", "commit" : "bcafa6f39116555a4c53882ed2cf2835594d9114", @@ -229,7 +229,7 @@ }, { "project" : "lti-launch", "commit" : "4259baebb426fefbe9dbee26725d6803170dcb85", - "changes" : 0 + "changes" : 5 }, { "project" : "plexus-archiver", "commit" : "3ff575ae202cdf76ddfa8a4228a1711a6fa1e921", @@ -277,7 +277,7 @@ }, { "project" : "jadler", "commit" : "5287fc631fa78e7f11d39983824cdd4215b9a03b", - "changes" : 4 + "changes" : 5 }, { "project" : "IDS-Messaging-Services", "commit" : "979780b29cf329579fa703552f9090b23c10e81d", @@ -285,7 +285,7 @@ }, { "project" : "IDS-Messaging-Services", "commit" : "ae17c8e47b93596cffeb2ec9241465cf39c7f8eb", - "changes" : 0 + "changes" : 5 }, { "project" : "IDS-Messaging-Services", "commit" : "d675fa18d22f8ad374f8d6cb7e0dfd9b1f18cc58", @@ -297,7 +297,7 @@ }, { "project" : "jadler", "commit" : "f26cd85b97b24c07a2e446f43ac8793619fa0724", - "changes" : 4 + "changes" : 5 }, { "project" : "code-coverage-api-plugin", "commit" : "6d68d927b01ceb567f1067a91afbc97b4c5a66ce", @@ -306,10 +306,14 @@ "project" : "jooq-meta-postgres-flyway", "commit" : "626631e833256a62137c1e5c35c5c5821ca700d5", "changes" : 0 +}, { + "project" : "qa-catalogue", + "commit" : "43c824a24b09efd8b4b00449ce31cd121a6b23eb", + "changes" : 2 }, { "project" : "jadler", "commit" : "95b2c15de16fd9fd612ce73672e29b613ce7a909", - "changes" : 4 + "changes" : 5 }, { "project" : "pay-adminusers", "commit" : "a80dac86d1caa3958c45c036d93a7d9231d88fbf", @@ -317,11 +321,11 @@ }, { "project" : "jakartaee-mvc-sample", "commit" : "500d9c021d34b307b1a70d3f29fb7f9b5ab9d1a6", - "changes" : 0 + "changes" : 14 }, { "project" : "sorald", "commit" : "65200df71d5f6ab1c5502f74a5dc7bcbda459563", - "changes" : 1 + "changes" : 2 }, { "project" : "docker-adapter", "commit" : "c131a3dbb5670183944861f23f225fd772370ff4", @@ -337,7 +341,7 @@ }, { "project" : "singer", "commit" : "3572a1ecc0154c61e05505aed56055b9c5e539a6", - "changes" : 0 + "changes" : 2 }, { "project" : "IDS-Messaging-Services", "commit" : "79759978f25c94d97f340c80ef0e77c3ee6f8cfc", @@ -389,7 +393,7 @@ }, { "project" : "java-pubsub-group-kafka-connector", "commit" : "d54b56b91c11f21b97d4903143b04b7c1f10c255", - "changes" : 1 + "changes" : 7 }, { "project" : "docker-adapter", "commit" : "9836e07e553e29f16ee35b5d7e4d0370e1789ecd", @@ -417,7 +421,7 @@ }, { "project" : "singer", "commit" : "867e69e208ff59d1f8baae7ed41d3e163a51bc65", - "changes" : 0 + "changes" : 3 }, { "project" : "guice", "commit" : "acc50dabec6796c091b84c1ada2ae4cbcab8b562", @@ -453,7 +457,7 @@ }, { "project" : "polyglot-maven", "commit" : "249c3b394540fde4fcb72f66172af5e02b9c637e", - "changes" : 0 + "changes" : 1 }, { "project" : "camunda-platform-7-mockito", "commit" : "11c09e31119c28ea91a9777b2ce8893bca483493", @@ -465,11 +469,7 @@ }, { "project" : "wicket-crudifier", "commit" : "9218cc9c8e0018d01e2d7cfe0e77aae7b65b378f", - "changes" : 0 -}, { - "project" : "google-cloud-java", - "commit" : "7d0e38fa9d6a9f96afdc0143fa44b4145e3555d8", - "changes" : 0 + "changes" : 14 }, { "project" : "micronaut-openapi-codegen", "commit" : "88676d24472254d05976a62e72e1c3799525a616", @@ -501,457 +501,5 @@ }, { "project" : "cdi-test", "commit" : "3f30dfff617fd652412260ecf648a25769a27101", - "changes" : 0 -}, { - "project" : "XChange", - "commit" : "f714a41f0ffe9720939d4980da5119d1f45bd770", - "changes" : 0 -}, { - "project" : "LPVS", - "commit" : "1e1de78344a89be66d2e78f7adb07a479f6677eb", - "changes" : 0 -}, { - "project" : "fluxtion", - "commit" : "b1a941400d68445d76056ab8833cd6d2e3455954", - "changes" : 0 -}, { - "project" : "snmpman", - "commit" : "9461431622cf39efe60cf1eb03a94083780c5720", - "changes" : 0 -}, { - "project" : "code-coverage-api-plugin", - "commit" : "07e4b2894bc68cd3bb1892beaa13ec353564dcf1", - "changes" : 0 -}, { - "project" : "allure-maven", - "commit" : "16ae40b1e17e14ee3ae20ac211647e47399a01a9", - "changes" : 0 -}, { - "project" : "micronaut-openapi-codegen", - "commit" : "bdbb81614557858922836294d1d6dd3dd661f10c", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "f5dbb3021aa96afc60b38d2b0b01873d3a6f16bd", - "changes" : 0 -}, { - "project" : "micronaut-openapi-codegen", - "commit" : "b2b18584e757c44b1468383252d6a9761f8097de", - "changes" : 0 -}, { - "project" : "PGS", - "commit" : "ef3f7be3e2755d4a0f9c23bdcbfe3b97198fb31b", - "changes" : 4 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "7cda77e3b9981dba271f866ec727ad9c6af9c709", - "changes" : 0 -}, { - "project" : "snmpman", - "commit" : "7f7de81d28b68b091bef2e6f6ffd1836167be6ea", - "changes" : 0 -}, { - "project" : "code-coverage-api-plugin", - "commit" : "6661429a5a0e998cf17daa45d8c026bdfaf9bc3f", - "changes" : 0 -}, { - "project" : "singer", - "commit" : "61e96bfe3a32d6ef2e5d7912a518c78bd5474e74", - "changes" : 0 -}, { - "project" : "nem", - "commit" : "8502e85f9ee2ff90ce96b47b5904f011e81e8bb8", - "changes" : 6 -}, { - "project" : "docker-adapter", - "commit" : "a0ec50cb297c4202e138627859a89ef032fa78ab", - "changes" : 0 -}, { - "project" : "assertj-vavr", - "commit" : "1cc7071371953a7880c2c2c3a5a32c36af7f88f9", - "changes" : 6 -}, { - "project" : "simplelocalize-cli", - "commit" : "0a11c04038eae517540051dbf51f7f26b7221f20", - "changes" : 0 -}, { - "project" : "guice", - "commit" : "979d6237a50840cd925cc1a33c415ffbbbc42846", - "changes" : 0 -}, { - "project" : "nem", - "commit" : "ad80bdff62b1b0520d3fb9e8d627532a38a7c60c", - "changes" : 6 -}, { - "project" : "jcabi-s3", - "commit" : "24d4a90ec1b375751e71f33d18949405c9529d77", - "changes" : 0 -}, { - "project" : "license-maven-plugin", - "commit" : "1c0972fc3d905b9f2a305a78f8a158a0b3fd8639", - "changes" : 0 -}, { - "project" : "nem", - "commit" : "489aad6060454d0b7b34a144e0b345c5a3a199f5", - "changes" : 6 -}, { - "project" : "files-adapter", - "commit" : "e36118e158965251089da1446777bd699d7473c1", - "changes" : 0 -}, { - "project" : "jcabi-http", - "commit" : "923a6b2027e3ca1762deb6a60fc0a768c284122b", - "changes" : 0 -}, { - "project" : "nem", - "commit" : "2d733a58045b4bf3669aa00d875e77f9db48c29b", - "changes" : 6 -}, { - "project" : "JRedisGraph", - "commit" : "ea03f6488449fcfe8cd0a678b4c64891e1427a32", - "changes" : 3 -}, { - "project" : "flink-faker", - "commit" : "1ef97ea6c5b6e34151fe6167001b69e003449f95", - "changes" : 1 -}, { - "project" : "nem", - "commit" : "a2b0fc53611f8705640773f18c8dd6a47eed3b7f", - "changes" : 6 -}, { - "project" : "gauge-java", - "commit" : "a4c360001134c2e3a9f7fbde88a07a9fd767e78e", - "changes" : 1 -}, { - "project" : "jooq-meta-postgres-flyway", - "commit" : "3d0cc7db9d9c9420fa4f478a72067ef846ba8129", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "b92fdfdaeea759fb558907ef8f7e3d46c170f886", - "changes" : 0 -}, { - "project" : "pay-adminusers", - "commit" : "dcc95f410847ab308db2f2a31ab13e32dc65c670", - "changes" : 0 -}, { - "project" : "camunda-platform-7-mockito", - "commit" : "5f09581fe834abe1430c0bb894d095071bd1d581", - "changes" : 0 -}, { - "project" : "geostore", - "commit" : "9a8b6fc7847a0782ae4c48d0e4f7056507c0397d", - "changes" : 0 -}, { - "project" : "future-converter", - "commit" : "70e13f6bdb7de7f8eda9f174a5616284f2157ea7", - "changes" : 0 -}, { - "project" : "dropwizard-graphql", - "commit" : "c83979c19ca572bfef0fa96d73772fdbeeddd109", - "changes" : 0 -}, { - "project" : "future-converter", - "commit" : "c4950c79dfe902dae8991ff722216c7ba787bf32", - "changes" : 0 -}, { - "project" : "onebusaway-gtfs-modules", - "commit" : "7c62ae7f31ed9c994a9c1e6906fb9de391c1af5b", - "changes" : 0 -}, { - "project" : "jooq-meta-postgres-flyway", - "commit" : "a1ff30e0bc6a9b48e024a8ab27cefda3ad85b530", - "changes" : 0 -}, { - "project" : "wicket-crudifier", - "commit" : "1a2fb9f65e12d6c43a8472b9b035299b29a75ce8", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "9dbbd30590fa87f3e719615e0816c231106e01de", - "changes" : 0 -}, { - "project" : "liquibase-mssql", - "commit" : "feb582661e77de66eadaa7550720a8751b266ee4", - "changes" : 0 -}, { - "project" : "jadler", - "commit" : "7fb959ccb8c9b32bd6cbc9fc95ed70c4d9c85575", - "changes" : 4 -}, { - "project" : "java-pubsub-group-kafka-connector", - "commit" : "88a20ece4db960e35fbfa39fcb40e61daceb15b1", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "01609f962f32cc2ba04fa574c79429e86b372c6b", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "4607926d691c986e2e172f636db7c527945c5b45", - "changes" : 0 -}, { - "project" : "jadler", - "commit" : "0e8625f492854a78c0e1ceff67b2abd7e081d42b", - "changes" : 4 -}, { - "project" : "nem", - "commit" : "a784b326d0821fc03fe6c5c13053424f8c2c358e", - "changes" : 0 -}, { - "project" : "nem", - "commit" : "dc9f7910968cd0aa2090e390045ae053693e839a", - "changes" : 6 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "315060cd2c7a3812a4adf614b042de84e9c39da4", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "c8da6c3c823d745bb37b072a4a33b6342a86dcd9", - "changes" : 0 -}, { - "project" : "biapi", - "commit" : "0abf7148300f40a1da0538ab060552bca4a2f1d8", - "changes" : 1 -}, { - "project" : "camunda-platform-7-mockito", - "commit" : "5320d2638b01419a8bac95e0ee939523831a720a", - "changes" : 0 -}, { - "project" : "license-maven-plugin", - "commit" : "b554e03428f2ba877c33a0fece7f0f00fb38a5fa", - "changes" : 0 -}, { - "project" : "docker-adapter", - "commit" : "13fd75e233a5cb2771a6cb186c0decaed6d6545a", - "changes" : 0 -}, { - "project" : "jadler", - "commit" : "1fc5281e0688c44025fe2b390a7d6e3e3088f385", - "changes" : 4 -}, { - "project" : "pay-adminusers", - "commit" : "1820a966ae02ad8df44d0a0106cba65ceaf3aa95", - "changes" : 0 -}, { - "project" : "billy", - "commit" : "fe15d2a6e52b049f6c9e7cc123a5402047a1f01a", - "changes" : 1 -}, { - "project" : "open-pdf-sign", - "commit" : "4a3efad6e00824e5814b9c8f571c9c98aad40281", - "changes" : 0 -}, { - "project" : "LPVS", - "commit" : "ab70529b2edf0a0b3f672278e191dc207d1b8711", - "changes" : 0 -}, { - "project" : "allure-maven", - "commit" : "54857351e0b0a655970d7e2ccdb67f175cc5d688", - "changes" : 0 -}, { - "project" : "jcabi-github", - "commit" : "9717e34bcda74bd9ad94f6a52ddfd3fd179ea15b", - "changes" : 0 -}, { - "project" : "scheduler", - "commit" : "165381d26b2c3d2278fde88c16f95807506451fe", - "changes" : 1 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "fe8646eae5d5f81a733be6cbf8f3a308c604e8ec", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "4861e40d7047a73bdbae1a4856a2b5ee4a79071a", - "changes" : 0 -}, { - "project" : "billy", - "commit" : "8436e73fa0c913774d9792fc986c74309765ab61", - "changes" : 0 -}, { - "project" : "junit-quickcheck", - "commit" : "ff8b5b61548d50cf60b77784a181e917cb35033b", - "changes" : 0 -}, { - "project" : "bval", - "commit" : "2dfaa41bfb97674d11f09a5885011f19808548a3", - "changes" : 1 -}, { - "project" : "openfire-hazelcast-plugin", - "commit" : "9545eb3a2687afc77b0a7da4d5d621807618d95c", - "changes" : 0 -}, { - "project" : "incrementals-tools", - "commit" : "5769bdad76925da568294cb8a40e7d4469699ac3", - "changes" : 1 -}, { - "project" : "sorald", - "commit" : "5adde4f1309a1078b39d013a30dc392c97ca7543", - "changes" : 1 -}, { - "project" : "sorald", - "commit" : "c0f6ab75784dbc13ae8ff47298704c0756cf3a2c", - "changes" : 1 -}, { - "project" : "http", - "commit" : "72c6b8dd53be12cc675d6c49ca55b18c27e94f1a", - "changes" : 0 -}, { - "project" : "nem", - "commit" : "250cafc7d6ae47d5d4803b5a5e58186eb81fa3b5", - "changes" : 6 -}, { - "project" : "code-coverage-api-plugin", - "commit" : "441f7f07d9265cc1d4c4f369ee6524973d9c6e17", - "changes" : 0 -}, { - "project" : "docker-adapter", - "commit" : "c311ee0a84b72b15ba64da3514181c2347912225", - "changes" : 0 -}, { - "project" : "pay-adminusers", - "commit" : "90ffd2cd31edecf778d14d0015da9ceab7e53081", - "changes" : 0 -}, { - "project" : "docker-adapter", - "commit" : "d38182a8a0fe1ec039aed97e103864fce717a0be", - "changes" : 1 -}, { - "project" : "micronaut-openapi-codegen", - "commit" : "44e6ae1bd9fea04c5c6edeee53c673e7c0310dff", - "changes" : 0 -}, { - "project" : "lithium", - "commit" : "686ea4e18114ac180e35ca1c07e1f2e6dfbffbe0", - "changes" : 0 -}, { - "project" : "simplelocalize-cli", - "commit" : "741f3b5e20a91b0e9305ae79261e3c5e64971c98", - "changes" : 0 -}, { - "project" : "pdb", - "commit" : "0305beafdecb0b28f7c94264ed20cdc4e41ff067", - "changes" : 0 -}, { - "project" : "billy", - "commit" : "36859167815292f279e570d39dd2ddbcf1622dc6", - "changes" : 1 -}, { - "project" : "code-coverage-api-plugin", - "commit" : "18eff0121ded81b30af0924676407bfc663e6557", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "1506282e31f5b78fb4395a27f9ad901ef3d98c70", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "404e4edc99c0ef601ad3a343f168194815db4151", - "changes" : 0 -}, { - "project" : "jtcop", - "commit" : "3b4a91979f0d93ca4cbb79e6cfa5029a6b8eaf01", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "67cb9570f6b1d90e2653ab5efd137af3edebc9b5", - "changes" : 0 -}, { - "project" : "docker-adapter", - "commit" : "ab85440ce7321d895c7a9621224ce8059162a26a", - "changes" : 0 -}, { - "project" : "pgpverify-maven-plugin", - "commit" : "cd5bb39f43e4570b875027073da3d4e43349ead1", - "changes" : 0 -}, { - "project" : "ci-sauce", - "commit" : "dbdc7d2c4a28a8d65edcd0cdece91c0bc357b869", - "changes" : 0 -}, { - "project" : "nldi-services", - "commit" : "8f757321e48d7ffb117cbc8fb13d316e23d0f58f", - "changes" : 0 -}, { - "project" : "jcabi-http", - "commit" : "cb541fd65c7b9bbc3424ea927f1dab223261d156", - "changes" : 0 -}, { - "project" : "openfire-hazelcast-plugin", - "commit" : "2b4d49d68112941b8abb818549389709d8327963", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "9d51a768dc633ed4895a474f78eaaf84a3c209fd", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "0ddd0efa29634a4783358cba727d0851236aa579", - "changes" : 0 -}, { - "project" : "jooq-meta-postgres-flyway", - "commit" : "b19ea99f63b85bbe2bcbdb67bd57459a79f4e677", - "changes" : 0 -}, { - "project" : "jcabi-maven-plugin", - "commit" : "ed7fbdd75abc666d9d5a2794e9392ed33e75de9b", - "changes" : 0 -}, { - "project" : "plexus-archiver", - "commit" : "ee0827d4c9bf80982241e8c3559dceb8b39063e4", - "changes" : 0 -}, { - "project" : "IDS-Messaging-Services", - "commit" : "0c60d0b08c999769313bfe2335fa792efcfb0300", - "changes" : 0 -}, { - "project" : "PGS", - "commit" : "17f2bcaaba4805b218743f575919360c5aec5da4", - "changes" : 0 -}, { - "project" : "wicket-crudifier", - "commit" : "41ec14e7e0ccf28476905eb28b2155b11d8a55f5", - "changes" : 0 -}, { - "project" : "jclouds", - "commit" : "b2edf635da83fd076262a41751c6f773c17f3b76", - "changes" : 0 -}, { - "project" : "google-cloud-java", - "commit" : "471d07e01cd0c79dc9bed5344ed46418f4c078a2", - "changes" : 0 -}, { - "project" : "camunda-platform-7-mockito", - "commit" : "07ff1a34661db6c7f0ca03156ff5d8936b5123f5", - "changes" : 0 -}, { - "project" : "PeyangSuperbAntiCheat", - "commit" : "f78d34b82926216c0f203c0350f646d481c675e3", - "changes" : 0 -}, { - "project" : "pitest-mutation-testing-elements-plugin", - "commit" : "5fcd0c3ad7727850c47602b17530dc355e5bd097", - "changes" : 1 -}, { - "project" : "jcabi-maven-plugin", - "commit" : "1053033eef680f0199bf25ec6e3db52cc13ef3da", - "changes" : 0 -}, { - "project" : "CoursesPortlet", - "commit" : "40feecdd9c649644668d7c84bb87b73a2b2723ca", - "changes" : 0 -}, { - "project" : "java-api", - "commit" : "38c9915f0cfdf0c1a2b17c3c6f283c23a0aac0cf", - "changes" : 0 -}, { - "project" : "billy", - "commit" : "46979207151a43361447d64afd2658df40033419", - "changes" : 1 -}, { - "project" : "PGS", - "commit" : "e70bd198fa1e1d65f86e071b8ebdd021141cfa95", - "changes" : 4 + "changes" : 5 } ] \ No newline at end of file diff --git a/pom.xml b/pom.xml index 8cd4c78..f59605e 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ fr.inria.gforge.spoon spoon-core - 10.4.0 + 10.4.2 com.github.siom79.japicmp @@ -83,6 +83,16 @@ jsoup 1.17.2 + + org.slf4j + slf4j-simple + 2.0.12 + + + org.apache.logging.log4j + log4j-api + 2.23.1 +
\ No newline at end of file diff --git a/src/main/java/se/kth/BreakingGood.java b/src/main/java/se/kth/BreakingGood.java new file mode 100644 index 0000000..3dd74bf --- /dev/null +++ b/src/main/java/se/kth/BreakingGood.java @@ -0,0 +1,77 @@ +package se.kth; + +import se.kth.breaking_changes.ApiMetadata; +import se.kth.log_Analyzer.MavenErrorLog; +import se.kth.log_Analyzer.MavenLogAnalyzer; +import se.kth.spoon_compare.Client; +import spoon.reflect.CtModel; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + + +public class BreakingGood { + + /** + * Parse the maven log and return the error log + * + * @param logPath Path to the maven log + * @return The error log + * @throws IOException If the log could not be read + */ + public static MavenErrorLog parseLog(Path logPath, Path client) throws IOException { + // Parse log + if (!Files.exists(logPath)) { + String log = executeMvnCleanTest(client); + if (log != null) { + logPath = Path.of(log); + } + } + MavenLogAnalyzer mavenLogAnalyzer = new MavenLogAnalyzer( + new File(logPath.toString())); + return mavenLogAnalyzer.analyzeCompilationErrors(); + } + + + public static CtModel spoonAnalyzer(Client client, ApiMetadata v1, Path project) { + // Analyze the project + client.setClasspath(List.of(v1.getFile())); + return client.createModel(); + } + + /** + * Executes the 'mvn clean test' command in a specified directory and saves the output to a temporary file. + * + * @param directory The directory where the 'mvn clean test' command will be executed. This should be the root directory of a Maven project. + * @throws IOException If an I/O error occurs when creating the temporary file or executing the command. + * @throws InterruptedException If the current thread is interrupted while waiting for the command to finish. + */ + private static String executeMvnCleanTest(Path directory) { + ProcessBuilder processBuilder = new ProcessBuilder(); + processBuilder.command("mvn", "clean", "test"); + processBuilder.directory(new File(directory.toString())); + + File tempFile; + try { + tempFile = Files.createTempFile("mvn-clean-test-", ".log").toFile(); + processBuilder.redirectOutput(tempFile); + Process process = processBuilder.start(); + int exitCode = process.waitFor(); + if (exitCode != 0) { + System.out.println("Maven clean test command failed with exit code " + exitCode); + return null; + } else { + System.out.println("Maven clean test command executed successfully. Output saved to " + tempFile.getAbsolutePath()); + return tempFile.getAbsolutePath(); + } + } catch (IOException | InterruptedException e) { + System.out.println("Error executing Maven clean test command: " + e.getMessage()); + return null; + } + } + + +} diff --git a/src/main/java/se/kth/Main.java b/src/main/java/se/kth/Main.java index affbbf6..ba563ab 100644 --- a/src/main/java/se/kth/Main.java +++ b/src/main/java/se/kth/Main.java @@ -3,12 +3,18 @@ import picocli.CommandLine; import se.kth.breaking_changes.ApiChange; +import se.kth.breaking_changes.ApiMetadata; import se.kth.breaking_changes.JApiCmpAnalyze; import se.kth.core.Changes; import se.kth.core.CombineResults; -import se.kth.explaining.CompilationErrorTemplate; -import se.kth.explaining.ExplanationTemplate; -import se.kth.log_Analyzer.MavenLogAnalyzer; +import se.kth.data.JsonUtils; +import se.kth.log_Analyzer.MavenErrorLog; +import se.kth.spoon_compare.Client; +import se.kth.transitive_changes.CompareTransitiveDependency; +import se.kth.transitive_changes.Dependency; +import se.kth.transitive_changes.MavenTree; +import se.kth.transitive_changes.PairTransitiveDependency; +import spoon.reflect.CtModel; import java.io.File; import java.io.IOException; @@ -17,78 +23,97 @@ public class Main { public static void main(String[] args) { - int exitCode = new CommandLine(new Explaining()).execute(args); + int exitCode = new CommandLine(new CLIEntryPoint()).execute(args); System.exit(exitCode); } + @CommandLine.Command(subcommands = {Explaining.class, Compare.class}, mixinStandardHelpOptions = true, version = "1.0") + public static class CLIEntryPoint implements Runnable { + @Override + public void run() { + CommandLine.usage(this, System.out); + } + } + + @CommandLine.Command(name = "explaining", mixinStandardHelpOptions = true, version = "0.1") private static class Explaining implements Runnable { - @CommandLine.Option( - names = {"-c", "--client"}, - paramLabel = "Client project", - description = "A client project to analyze.", - required = true - ) - Path client; - - @CommandLine.Option( - names = {"-o", "--old-dependency"}, - paramLabel = "Old dependency", - description = "The old dependency to analyze.", - required = true - ) + @CommandLine.Option(names = {"-c", "--project"}, paramLabel = "Client project", description = "A client project to analyze.", required = true) + Path project; + + @CommandLine.Option(names = {"-o", "--old-dependency"}, paramLabel = "Old dependency", description = "The old dependency to analyze.", required = true) Path oldDependency; - @CommandLine.Option( - names = {"-n", "--new-dependency"}, - paramLabel = "New dependency", - description = "The new dependency to analyze.", - required = true - ) + @CommandLine.Option(names = {"-n", "--new-dependency"}, paramLabel = "New dependency", description = "The new dependency to analyze.", required = true) Path newDependency; - @CommandLine.Option( - names = {"-l", "--log"}, - paramLabel = "Maven log", - description = "The maven log to analyze.", - required = false - ) + @CommandLine.Option(names = {"-l", "--log"}, paramLabel = "Maven log", description = "The maven log to analyze.") File mavenLog; - @CommandLine.Option( - names = {"-g", "--group-id"}, - paramLabel = "Dependency group ID", - description = "The group ID of the dependency to analyze.", - required = false - ) - String dependencyGroupID; - @Override public void run() { - JApiCmpAnalyze jApiCmpAnalyze = new JApiCmpAnalyze( - oldDependency, - newDependency); - Set apiChanges = jApiCmpAnalyze.useJApiCmp(); + ApiMetadata oldApiMetadata = new ApiMetadata(oldDependency.toFile().getName(), oldDependency); + ApiMetadata newApiMetadata = new ApiMetadata(newDependency.toFile().getName(), newDependency); + Client client = new Client(project); + + JApiCmpAnalyze jApiCmpAnalyze = new JApiCmpAnalyze(oldApiMetadata, newApiMetadata); - CombineResults combineResults = new CombineResults(apiChanges); - combineResults.setDependencyGroupID(dependencyGroupID); - combineResults.setProject(client.toString()); - combineResults.setMavenLog(new MavenLogAnalyzer(mavenLog)); + Set apiChanges = jApiCmpAnalyze.useJApiCmp(); try { + MavenErrorLog errorLog = BreakingGood.parseLog(mavenLog.toPath(), project); + + CtModel model = BreakingGood.spoonAnalyzer(client, oldApiMetadata, project); + + CombineResults combineResults = new CombineResults(apiChanges, oldApiMetadata, newApiMetadata, errorLog, model); + //remove project name folder + combineResults.setProject(project.toString().substring(0, project.toString().lastIndexOf("/"))); Changes changes = combineResults.analyze(); - changes.changes().forEach(change -> { - ExplanationTemplate explanationTemplate = new CompilationErrorTemplate(changes, "Explanation"); - explanationTemplate.generateTemplate(); - } - ); + +// ExplanationTemplate explanationTemplate = new CompilationErrorTemplate(changes, "Explanations/" + project.toFile().getName() + ".md"); +// explanationTemplate.generateTemplate(); + } catch (IOException e) { throw new RuntimeException(e); } } } + @CommandLine.Command(name = "compare", mixinStandardHelpOptions = true, version = "0.1") + private static class Compare implements Runnable { + + @CommandLine.Option(names = {"-o", "--old-dependency"}, paramLabel = "Old dependency", description = "The old dependency to analyze.", required = true) + Path oldDependency; + + @CommandLine.Option(names = {"-n", "--new-dependency"}, paramLabel = "New dependency", description = "The new dependency to analyze.", required = true) + Path newDependency; + + @Override + public void run() { + ApiMetadata oldApiMetadata = new ApiMetadata(oldDependency.toFile().getName(), oldDependency); + ApiMetadata newApiMetadata = new ApiMetadata(newDependency.toFile().getName(), newDependency); + + Set v1 = MavenTree.read(oldApiMetadata); + Set v2 = MavenTree.read(newApiMetadata); + + Set transitiveDependencies = MavenTree.diff(v1, v2); + + for (PairTransitiveDependency pair : transitiveDependencies) { + try { + CompareTransitiveDependency compareTransitiveDependency = new CompareTransitiveDependency(pair.newVersion(), pair.oldVersion()); + compareTransitiveDependency.compareDependency(); + System.out.println("Breaking changes for " + pair.newVersion() + " and " + pair.oldVersion()); + System.out.println("Breaking Changes amount: " + compareTransitiveDependency.getBreakingChanges().size()); + + JsonUtils.writeToFile(Path.of("breaking-changes-%s.json".formatted(pair.oldVersion().getArtifactId())), compareTransitiveDependency); + + } catch (Exception e) { + System.out.println(e); + } + } + } + } } \ No newline at end of file diff --git a/src/main/java/se/kth/breaking_changes/AbstractApiChange.java b/src/main/java/se/kth/breaking_changes/AbstractApiChange.java new file mode 100644 index 0000000..ac306fe --- /dev/null +++ b/src/main/java/se/kth/breaking_changes/AbstractApiChange.java @@ -0,0 +1,8 @@ +package se.kth.breaking_changes; + +public abstract class AbstractApiChange implements IAbstractApiChange { + + public abstract String variantName() ; + + public abstract String getFullQualifiedName(); +} diff --git a/src/main/java/se/kth/breaking_changes/ApiChange.java b/src/main/java/se/kth/breaking_changes/ApiChange.java index d9735de..e9a34f2 100644 --- a/src/main/java/se/kth/breaking_changes/ApiChange.java +++ b/src/main/java/se/kth/breaking_changes/ApiChange.java @@ -2,17 +2,21 @@ import japicmp.model.JApiBehavior; import japicmp.model.JApiChangeStatus; +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtReference; import java.util.Objects; import java.util.Set; +/** + * Represents a method-level breaking change + * Result from the comparison of two versions of an API + */ @lombok.Getter @lombok.Setter public class ApiChange { - private String oldElement; - - private String newElement; + private String Element; private String category; @@ -22,35 +26,26 @@ public class ApiChange { private String newLongName; - private ApiMetadata newVersion; - - private ApiMetadata oldVersion; - private JApiChangeStatus changeType; - private JApiBehavior behavior; + private JApiCompatibilityChangeType compatibilityChange; + + private AbstractApiChange reference; Set newVariants; + String instruction; - public ApiChange(String oldElement, String newElement, String category, String name) { - this.oldElement = oldElement; - this.newElement = newElement; + public ApiChange(String category, String name) { this.category = category; this.name = name; - } - public ApiChange(String oldElement, String newElement, String category, String name, String newLongName, JApiChangeStatus changeType, ApiMetadata newVersion, ApiMetadata oldVersion, JApiBehavior behavior, String instruction) { - this.oldElement = oldElement; - this.newElement = newElement; + public ApiChange(String category, String name, String newLongName, JApiChangeStatus changeType, ApiMetadata newVersion, ApiMetadata oldVersion, JApiBehavior behavior, String instruction) { this.category = category; this.name = name; this.newLongName = newLongName; - this.newVersion = newVersion; - this.oldVersion = oldVersion; this.changeType = changeType; - this.behavior = behavior; this.instruction = instruction; } @@ -59,7 +54,14 @@ public ApiChange() { @Override public String toString() { - return "LibraryChange(oldElement=" + this.getOldElement() + ", newElement=" + this.getNewElement() + ", category=" + this.getCategory() + ", name=" + this.getName() + ")"; + return "ApiChange{" + + "category='" + category.toString() + '\'' + + ", name='" + name + '\'' + + ", newLongName='" + newLongName + '\'' + + ", changeType=" + changeType.toString() + + ", instruction='" + instruction + '\'' + + ", compatibilityChange=" + compatibilityChange + + '}'; } @Override @@ -67,14 +69,12 @@ public boolean equals(Object that) { if (this == that) return true; if (that == null || getClass() != that.getClass()) return false; ApiChange thatLibraryChange = (ApiChange) that; - return this.getOldElement().equals(thatLibraryChange.getOldElement()) - && this.getNewElement().equals(thatLibraryChange.getNewElement()) - && this.getCategory().equals(thatLibraryChange.getCategory()) + return this.getCompatibilityChange().equals(thatLibraryChange.getCompatibilityChange()) && this.getName().equals(thatLibraryChange.getName()); } @Override public int hashCode() { - return Objects.hash(oldElement, newElement, category, name); + return Objects.hash(category, name); } } diff --git a/src/main/java/se/kth/breaking_changes/ApiMetadata.java b/src/main/java/se/kth/breaking_changes/ApiMetadata.java index c481b17..9439634 100644 --- a/src/main/java/se/kth/breaking_changes/ApiMetadata.java +++ b/src/main/java/se/kth/breaking_changes/ApiMetadata.java @@ -1,20 +1,32 @@ package se.kth.breaking_changes; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; +import com.google.common.base.Stopwatch; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import spoon.Launcher; +import spoon.MavenLauncher; +import spoon.reflect.CtModel; +import spoon.support.compiler.SpoonPom; +import util.ParentLastURLClassLoader; -import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.file.Files; import java.nio.file.Path; -import java.util.Map; -import java.util.concurrent.TimeUnit; - - +import java.nio.file.StandardCopyOption; +import java.util.*; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; + +/** + * Represents the metadata of an API + * Contains the name of the API and the path to the file + */ @lombok.Setter +@lombok.Getter public class ApiMetadata { private static final Logger log = LoggerFactory.getLogger(ApiMetadata.class); @@ -28,6 +40,20 @@ public class ApiMetadata { "jenkins", "https://repo.jenkins-ci.org/artifactory/releases/" ); + private static final Path TMP_DIR; + + // I can't seem to find a way to convince the compiler + // that TMP_DIR will be initialized without introducing + // an intermediate variable :( + static { + Path tmp = Path.of("."); + try { + tmp = Files.createTempDirectory("pom-tmp"); + } catch (IOException e) { + System.out.println(e); + } + TMP_DIR = tmp; + } public ApiMetadata(String name, Path file) { this.name = name; @@ -35,56 +61,98 @@ public ApiMetadata(String name, Path file) { } + public ApiMetadata(Path file) { + this.file = file; + this.name = file.getFileName().toString(); + } + public String getName() { return name.contains(".jar") ? name.substring(0, name.indexOf(".jar")) : name; } - /** - * Downloads the version of the dependency from the maven repository - * - * @param artifactId the name of the dependency - * @param groupId the group id of the dependency - * @param version the version of the dependency - * @return true if the download was successful, false otherwise - */ - public static boolean download(String groupId, String artifactId, String version, Path directory) { - /* - * Maven repository link for the previous version of the dependency - */ - final OkHttpClient httpConnector - = new OkHttpClient.Builder().connectTimeout(60, TimeUnit.SECONDS) - .writeTimeout(120, TimeUnit.SECONDS).readTimeout(60, TimeUnit.SECONDS).build(); - - String jarName = artifactId + "-" + version + ".jar"; - - for (String repository : repositoryUrls.values()) { - String artifactUrl = getArtifactUrl(groupId, artifactId, version, repository); - try (Response response = httpConnector.newCall(new Request.Builder().url(artifactUrl).build()).execute()) { - if (response.code() == 200) { - downloadAndConvert(response, directory.toString() + File.separator + jarName); - return true; - } - } catch (IOException e) { - log.error("Maven source links could not be found for the updated dependency {}.", artifactId, e); - return false; + public List getClasspath() { + return buildClasspath(); + + + } + + private List buildClasspath() { + Stopwatch sw = Stopwatch.createStarted(); + Path pom = extractPomFromJar(null); + + List cp = + pom != null + ? buildClasspathFromPom(pom) + : Collections.emptyList(); + + + return cp; + } + + private List buildClasspathFromPom(Path pom) { + System.out.println("Building classpath from " + pom); + try { + if (pom.toFile().exists()) { + SpoonPom spoonPom = new SpoonPom( + pom.toAbsolutePath().toString(), + MavenLauncher.SOURCE_TYPE.ALL_SOURCE, + null + ); + + return Arrays.asList(spoonPom.buildClassPath( + null, MavenLauncher.SOURCE_TYPE.ALL_SOURCE, null, true + )); } + } catch (IOException | XmlPullParserException e) { + System.out.println(e); } - return false; + return Collections.emptyList(); } - private static String getArtifactUrl(String groupId, String artifactId, String version, String repositoryUrl) { - groupId = groupId.replace('.', '/'); - return repositoryUrl + groupId + "/" + artifactId + "/" + version + "/"; + public Path extractPomFromJar(Path toSave) { + try (JarFile jarFile = new JarFile(file.toFile())) { + List poms = jarFile.stream().filter(e -> e.getName().endsWith("pom.xml")).toList(); + + if (poms.size() == 1) { + JarEntry pom = poms.get(0); + InputStream pomStream = jarFile.getInputStream(pom); + + Path out = toSave != null ? toSave : Files.createTempFile(TMP_DIR, "pom", ".xml"); + Files.copy(pomStream, out, StandardCopyOption.REPLACE_EXISTING); + return out; + } else + System.out.printf("Found %s pom.xml files in %s, no classpath inferred%n", poms.size(), name); + } catch (IOException e) { + System.out.println(e); + } + + return null; } - private static void downloadAndConvert(Response response, String fileName) throws IOException { - assert response.body() != null; - byte[] bytes = response.body().bytes(); - try (FileOutputStream fos = new FileOutputStream(fileName)) { - fos.write(bytes); + public CtModel buildModel() { + Stopwatch sw = Stopwatch.createStarted(); + Launcher launcher = new Launcher(); + + // Spoon will prioritize the JVM's classpath over our own + // custom classpath in case of conflict. Not what we want, + // so we use a custom child-first classloader instead. + // cf. https://github.com/INRIA/spoon/issues/3789 + List jarDependenciesUrl = new ArrayList<>(); + try { + jarDependenciesUrl.add(new URL("file:" + file)); + for (String dep : getClasspath()) + jarDependenciesUrl.add(new URL("file:" + dep)); + } catch (MalformedURLException e) { + // Checked exceptions are a blessing, kill me + System.out.println(e); } - } + ClassLoader cl = new ParentLastURLClassLoader(jarDependenciesUrl.toArray(new URL[0])); + launcher.getEnvironment().setInputClassLoader(cl); + CtModel spoonModel = launcher.buildModel(); + System.out.println("Building binary Spoon model for " + this + " took " + sw.elapsed().toMillis() + "ms"); + return spoonModel; + } } diff --git a/src/main/java/se/kth/breaking_changes/BreakingGoodFilter.java b/src/main/java/se/kth/breaking_changes/BreakingGoodFilter.java new file mode 100644 index 0000000..315e959 --- /dev/null +++ b/src/main/java/se/kth/breaking_changes/BreakingGoodFilter.java @@ -0,0 +1,67 @@ +package se.kth.breaking_changes; + +import japicmp.model.*; +import japicmp.output.OutputFilter; + +import java.util.Iterator; +import java.util.List; + +/** + * Extends the default {@link OutputFilter}'s behavior with additional filters: + * - Remove BCs related to anonymous classes, as they're not exposed + * - Remove BCs on NEW types, as they won't affect anyone + * - Remove any BC type that is excluded in Breaking good filter options + */ +public class BreakingGoodFilter extends OutputFilter { + + private final BreakingGoodOptions options; + + public BreakingGoodFilter(BreakingGoodOptions options) { + super(options.getDefaultOptions()); + this.options = options; + } + + @Override + public void filter(List jApiClasses) { + filter(jApiClasses, new FilterVisitor() { + @Override + public void visit(Iterator iterator, JApiClass jApiClass) { + jApiClass.getCompatibilityChanges().removeIf(c -> options.getExclude().contains(c.getType())); +// jApiClass.getCompatibilityChanges().removeAll(options.getExclude()); + } + + @Override + public void visit(Iterator iterator, JApiMethod jApiMethod) { + jApiMethod.getCompatibilityChanges().removeIf(c -> options.getExclude().contains(c.getType())); + } + + @Override + public void visit(Iterator iterator, JApiConstructor jApiConstructor) { + jApiConstructor.getCompatibilityChanges().removeIf(c -> options.getExclude().contains(c.getType())); + } + + @Override + public void visit(Iterator iterator, JApiImplementedInterface jApiImplementedInterface) { + jApiImplementedInterface.getCompatibilityChanges().removeIf(c -> options.getExclude().contains(c.getType())); + } + + @Override + public void visit(Iterator iterator, JApiField jApiField) { + jApiField.getCompatibilityChanges().removeIf(c -> options.getExclude().contains(c.getType())); + } + + @Override + public void visit(Iterator iterator, JApiAnnotation jApiAnnotation) { + jApiAnnotation.getCompatibilityChanges().removeIf(c -> options.getExclude().contains(c.getType())); + } + + @Override + public void visit(JApiSuperclass jApiSuperclass) { + jApiSuperclass.getCompatibilityChanges().removeIf(c -> options.getExclude().contains(c.getType())); + } + }); + + super.filter(jApiClasses); + } + +} diff --git a/src/main/java/se/kth/breaking_changes/BreakingGoodOptions.java b/src/main/java/se/kth/breaking_changes/BreakingGoodOptions.java new file mode 100644 index 0000000..2740ef0 --- /dev/null +++ b/src/main/java/se/kth/breaking_changes/BreakingGoodOptions.java @@ -0,0 +1,68 @@ +package se.kth.breaking_changes; + +import japicmp.cli.JApiCli; +import japicmp.config.Options; +import japicmp.model.AccessModifier; +import japicmp.model.JApiCompatibilityChangeType; +import japicmp.model.JApiCompatibilityChangeType; +import japicmp.util.Optional; + +import java.time.Duration; +import java.util.HashSet; +import java.util.Set; + +@lombok.Setter +@lombok.Getter +public class BreakingGoodOptions { + + private Options options; + + private int maxClassLines = Integer.MAX_VALUE; + private int clientsPerModule = Integer.MAX_VALUE; + private int minStarsPerClient = 0; + private Duration cloneTimeout = Duration.ofSeconds(Integer.MAX_VALUE); + private Duration buildTimeout = Duration.ofSeconds(Integer.MAX_VALUE); + + + // based en study from `Maracas` and `JApiCmp` + private Set exclude = new HashSet<>(); + + public Options getDefaultOptions() { + Options defaultOptions = Options.newDefault(); + defaultOptions.setAccessModifier(AccessModifier.PROTECTED); + defaultOptions.setOutputOnlyModifications(true); + defaultOptions.setClassPathMode(JApiCli.ClassPathMode.ONE_COMMON_CLASSPATH); + defaultOptions.setIgnoreMissingClasses(true); + String[] excl = {"(*.)?tests(.*)?", "(*.)?test(.*)?", + "@org.junit.After", "@org.junit.AfterClass", + "@org.junit.Before", "@org.junit.BeforeClass", + "@org.junit.Ignore", "@org.junit.Test", + "@org.junit.runner.RunWith"}; + + for (String e : excl) { + defaultOptions.addExcludeFromArgument(Optional.of(e), false); + } + + + this.exclude.add(JApiCompatibilityChangeType.CLASS_NO_LONGER_PUBLIC); + + // We don't care about source- and binary-compatible changes (except ADA...) +// this.exclude.add(JApiCompatibilityChangeType.METHOD_ADDED_TO_PUBLIC_CLASS); +// this.exclude.add(JApiCompatibilityChangeType.METHOD_ABSTRACT_ADDED_IN_IMPLEMENTED_INTERFACE); + + // We don't care about super-type changes as they're just redundant + this.exclude.add(JApiCompatibilityChangeType.METHOD_REMOVED_IN_SUPERCLASS); + this.exclude.add(JApiCompatibilityChangeType.FIELD_LESS_ACCESSIBLE_THAN_IN_SUPERCLASS); + this.exclude.add(JApiCompatibilityChangeType.FIELD_REMOVED_IN_SUPERCLASS); +// this.exclude.add(JApiCompatibilityChangeType.METHOD_ABSTRACT_ADDED_IN_SUPERCLASS); + this.exclude.add(JApiCompatibilityChangeType.METHOD_DEFAULT_ADDED_IN_IMPLEMENTED_INTERFACE); + + return defaultOptions; + } + + + public Options getOptions() { + return options == null ? getDefaultOptions() : options; + } + +} diff --git a/src/main/java/se/kth/breaking_changes/Download.java b/src/main/java/se/kth/breaking_changes/Download.java index 5de166d..ca518fa 100644 --- a/src/main/java/se/kth/breaking_changes/Download.java +++ b/src/main/java/se/kth/breaking_changes/Download.java @@ -45,7 +45,7 @@ private static String getArtifactUrl(String groupId, String artifactId, String v private static String getUrlOfRequestedJar(String indexPageContent, String indexPageUrl) { List candidates = Jsoup.parse(indexPageContent).select("a").stream() .map(e -> e.attr("href")) - .collect(Collectors.toList()); + .toList(); Optional artifactJar = candidates.stream() .filter(c -> c.endsWith(".jar")) diff --git a/src/main/java/se/kth/breaking_changes/FieldBreakingChange.java b/src/main/java/se/kth/breaking_changes/FieldBreakingChange.java new file mode 100644 index 0000000..a313b64 --- /dev/null +++ b/src/main/java/se/kth/breaking_changes/FieldBreakingChange.java @@ -0,0 +1,35 @@ +package se.kth.breaking_changes; + +import japicmp.model.JApiField; + +public class FieldBreakingChange extends AbstractApiChange { + + private final JApiField jApiField; + + public FieldBreakingChange(JApiField jApiField) { + this.jApiField = jApiField; + } + + public JApiField getJApiField() { + return jApiField; + } + + @Override + public String toString() { + return "FieldBreakingChange{" + + "jApiField=" + jApiField + + '}'; + } + + + @Override + public String variantName() { + return null; + } + + @Override + public String getFullQualifiedName() { + return jApiField.getjApiClass().getFullyQualifiedName() + "." + jApiField.getName(); + + } +} diff --git a/src/main/java/se/kth/breaking_changes/IAbstractApiChange.java b/src/main/java/se/kth/breaking_changes/IAbstractApiChange.java new file mode 100644 index 0000000..dd9873c --- /dev/null +++ b/src/main/java/se/kth/breaking_changes/IAbstractApiChange.java @@ -0,0 +1,6 @@ +package se.kth.breaking_changes; + +public interface IAbstractApiChange { + + String variantName(); +} diff --git a/src/main/java/se/kth/breaking_changes/JApiCmpAnalyze.java b/src/main/java/se/kth/breaking_changes/JApiCmpAnalyze.java index 6df5413..b02cb1c 100644 --- a/src/main/java/se/kth/breaking_changes/JApiCmpAnalyze.java +++ b/src/main/java/se/kth/breaking_changes/JApiCmpAnalyze.java @@ -1,34 +1,23 @@ package se.kth.breaking_changes; -import japicmp.cli.JApiCli; +import com.google.common.base.Stopwatch; import japicmp.cmp.JApiCmpArchive; import japicmp.cmp.JarArchiveComparator; import japicmp.cmp.JarArchiveComparatorOptions; import japicmp.config.Options; -import japicmp.exception.JApiCmpException; -import japicmp.model.AccessModifier; import japicmp.model.JApiClass; -import japicmp.output.OutputFilter; -import japicmp.output.semver.SemverOut; -import japicmp.output.xml.XmlOutput; -import japicmp.output.xml.XmlOutputGenerator; -import japicmp.output.xml.XmlOutputGeneratorOptions; -import japicmp.util.Optional; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; -import se.kth.core.Instruction; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import java.io.File; -import java.io.IOException; -import java.nio.file.Path; -import java.util.*; +import se.kth.japianalysis.BreakingChange; +import se.kth.japianalysis.JApiCmpDeltaVisitor; +import se.kth.japianalysis.JApiCmpToSpoonVisitor; +import se.kth.sponvisitors.BreakingChangeVisitor; +import spoon.reflect.CtModel; +import spoon.reflect.declaration.CtPackage; + +import java.util.List; +import java.util.Objects; +import java.util.Set; @lombok.Setter @lombok.Getter @@ -36,176 +25,68 @@ public class JApiCmpAnalyze { private static final Logger log = LoggerFactory.getLogger(JApiCmpAnalyze.class); - private final Path oldJar; - private final Path newJar; + private final ApiMetadata oldJar; + private final ApiMetadata newJar; - public JApiCmpAnalyze(Path oldJar, Path newJar) { + public JApiCmpAnalyze(ApiMetadata oldJar, ApiMetadata newJar) { this.oldJar = oldJar; this.newJar = newJar; } - private static Options getDefaultOptions() { - Options defaultOptions = Options.newDefault(); - defaultOptions.setAccessModifier(AccessModifier.PROTECTED); - defaultOptions.setOutputOnlyModifications(true); - defaultOptions.setXmlOutputFile(Optional.of("output.xml")); - defaultOptions.setClassPathMode(JApiCli.ClassPathMode.TWO_SEPARATE_CLASSPATHS); - defaultOptions.setIgnoreMissingClasses(true); - defaultOptions.setReportOnlyFilename(true); - String[] excl = {"(*.)?tests(.*)?", "(*.)?test(.*)?", - "@org.junit.After", "@org.junit.AfterClass", - "@org.junit.Before", "@org.junit.BeforeClass", - "@org.junit.Ignore", "@org.junit.Test", - "@org.junit.runner.RunWith"}; - - for (String e : excl) { - defaultOptions.addExcludeFromArgument(Optional.of(e), false); - } - - return defaultOptions; + public List getVisitors(List breakingChanges) { + return breakingChanges.stream() + .map(BreakingChange::getVisitor) + .filter(Objects::nonNull) + .toList(); } + public Set useJApiCmp() { - Options defaultOptions = getDefaultOptions(); + BreakingGoodOptions options = new BreakingGoodOptions(); + + Options defaultOptions = options.getDefaultOptions(); JarArchiveComparatorOptions comparatorOptions = JarArchiveComparatorOptions.of(defaultOptions); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions); - JApiCmpArchive newF = new JApiCmpArchive(newJar.toFile(), newJar.getFileName().toString()); - JApiCmpArchive old = new JApiCmpArchive(oldJar.toFile(), oldJar.getFileName().toString()); + JApiCmpArchive newF = new JApiCmpArchive(newJar.getFile().toFile(), newJar.getName()); + JApiCmpArchive old = new JApiCmpArchive(oldJar.getFile().toFile(), oldJar.getName()); List jApiClasses = jarArchiveComparator.compare(old, newF); - OutputFilter filter = new OutputFilter(defaultOptions); - filter.filter(jApiClasses); - Set libraryChanges = new HashSet<>(); - - //list of classes - jApiClasses.forEach(jApiClass -> { - - //read incompatible changes - jApiClass.getCompatibilityChanges().forEach(jApiCompatibilityChange -> { - - //go for each change - jApiClasses.iterator().forEachRemaining(jApiClass1 -> { - //get methods - jApiClass1.getMethods().forEach(jApiMethod -> { -// if (jApiMethod.getChangeStatus().equals(JApiChangeStatus.REMOVED)) { - libraryChanges.add(new ApiChange( - jApiMethod.getOldMethod().isPresent() ? jApiMethod.getOldMethod().get().getName() : "null", - jApiMethod.getNewMethod().isPresent() ? jApiMethod.getNewMethod().get().getName() : "null", - jApiMethod.getCompatibilityChanges().toString(), - jApiMethod.getName(), - jApiMethod.getOldMethod().isPresent() ? jApiMethod.getOldMethod().get().getLongName() : jApiMethod.getNewMethod().isPresent() ? jApiMethod.getNewMethod().get().getName() : "null", - jApiMethod.getChangeStatus(), - new ApiMetadata(newJar.toFile().getName(), newJar.getFileName().getFileName()), - new ApiMetadata(oldJar.toFile().getName(), oldJar.getFileName().getFileName()), - jApiMethod, - Instruction.Method.toString() - - )); - }); - }); - }); - }); - return libraryChanges; - } - - public void getChanges() { - - log.info("Comparing {} with {}", this.newJar.getFileName(), this.oldJar.getFileName()); - Options defaultOptions = getDefaultOptions(); - JarArchiveComparatorOptions comparatorOptions = JarArchiveComparatorOptions.of(defaultOptions); - - final var jApiClasses = getjApiClasses(comparatorOptions, defaultOptions); + BreakingGoodFilter filter = new BreakingGoodFilter(options); + filter.filter(jApiClasses); - defaultOptions.setXmlOutputFile(Optional.of("output.xml")); + JApiCmpElements jApiCmpElements = new JApiCmpElements(); + JApiCompareScan.visit(jApiClasses, jApiCmpElements); - SemverOut semverOut = new SemverOut(defaultOptions, jApiClasses); - XmlOutputGeneratorOptions xmlOutputGeneratorOptions = new XmlOutputGeneratorOptions(); - xmlOutputGeneratorOptions.setCreateSchemaFile(true); - xmlOutputGeneratorOptions.setSemanticVersioningInformation(semverOut.generate()); - XmlOutputGenerator xmlGenerator = new XmlOutputGenerator(jApiClasses, defaultOptions, xmlOutputGeneratorOptions); - try (XmlOutput xmlOutput = xmlGenerator.generate()) { - XmlOutputGenerator.writeToFiles(defaultOptions, xmlOutput); - } catch (Exception e) { - throw new JApiCmpException(JApiCmpException.Reason.IoException, "Could not close output streams: " + e.getMessage(), e); - } + return jApiCmpElements.getChanges(); } - private List getjApiClasses(JarArchiveComparatorOptions comparatorOptions, Options defaultOptions) { - JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions); - JApiCmpArchive newF = null; + public List useJApiCmp_v2() { + BreakingGoodOptions options = new BreakingGoodOptions(); - newF = new JApiCmpArchive(newJar.toFile(), newJar.getFileName().toString()); + Options defaultOptions = options.getDefaultOptions(); + JarArchiveComparatorOptions comparatorOptions = JarArchiveComparatorOptions.of(defaultOptions); + comparatorOptions.getClassPathEntries().addAll(oldJar.getClasspath()); - JApiCmpArchive old = new JApiCmpArchive(oldJar.toFile(), oldJar.getFileName().toString()); + JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(comparatorOptions); + JApiCmpArchive newF = new JApiCmpArchive(newJar.getFile().toFile(), newJar.getName()); + JApiCmpArchive old = new JApiCmpArchive(oldJar.getFile().toFile(), oldJar.getName()); List jApiClasses = jarArchiveComparator.compare(old, newF); - OutputFilter filter = new OutputFilter(defaultOptions); - filter.filter(jApiClasses); - return jApiClasses; - } - public Map> extractResult(String jApiCmpXml, Set spoonedElements) { - return readXMLFilesFromSubfolder(jApiCmpXml, spoonedElements); - } + BreakingGoodFilter filter = new BreakingGoodFilter(options); + filter.filter(jApiClasses); - private Map> readXMLFilesFromSubfolder(String subfolderPath, - Set spoonedElements) { - Map> japicmpResult = new HashMap<>(); - File subfolder = new File(subfolderPath); - if (true) { -// File[] xmlFiles = subfolder.listFiles((dir, name) -> name.endsWith(".xml")); -// if (xmlFiles != null && xmlFiles.length == 1) { - File xmlFile = new File(subfolderPath); - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder; - try { - builder = factory.newDocumentBuilder(); - } catch (ParserConfigurationException e) { - e.printStackTrace(); - return japicmpResult; - } - Document document; - try { - document = builder.parse(xmlFile); - } catch (SAXException | IOException e) { - e.printStackTrace(); - return japicmpResult; - } - - Element root = document.getDocumentElement(); - Set uniqueCodeValues = new HashSet<>(); - for (String element : spoonedElements) { - if (element != null) { - uniqueCodeValues.addAll(searchAndExtractXML(root, element)); - japicmpResult.put(element, uniqueCodeValues); - } - } - } -// } - return japicmpResult; + CtModel model = oldJar.buildModel(); + CtPackage root = model.getRootPackage(); - } + // Map the BCs from JApi to Spoon elements + Stopwatch sw = Stopwatch.createStarted(); + JApiCmpToSpoonVisitor visitor = new JApiCmpToSpoonVisitor(root); + JApiCmpDeltaVisitor.visit(jApiClasses, visitor); - private Set searchAndExtractXML(Element root, String searchWord) { - NodeList classNodes = root.getElementsByTagName("*"); - Set compatibilityChanges = new HashSet<>(); - for (int i = 0; i < classNodes.getLength(); i++) { - Element classElement = (Element) classNodes.item(i); - String fullyQualifiedName = classElement.getAttribute("fullyQualifiedName"); - String name = classElement.getAttribute("name"); - - if (fullyQualifiedName.contains(searchWord) || name.contains(searchWord)) { - NodeList compatibilityChangeNodes = classElement.getElementsByTagName("compatibilityChange"); - for (int j = 0; j < compatibilityChangeNodes.getLength(); j++) { - String compatibilityChangeValue = compatibilityChangeNodes.item(j).getTextContent(); - compatibilityChanges.add(compatibilityChangeValue); - } - } - } - return compatibilityChanges; + return visitor.getBreakingChanges(); } - } diff --git a/src/main/java/se/kth/breaking_changes/JApiCmpElements.java b/src/main/java/se/kth/breaking_changes/JApiCmpElements.java new file mode 100644 index 0000000..9403f4f --- /dev/null +++ b/src/main/java/se/kth/breaking_changes/JApiCmpElements.java @@ -0,0 +1,131 @@ +package se.kth.breaking_changes; + +import japicmp.model.*; +import lombok.Getter; +import se.kth.core.Instruction; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + + +@Getter +public class JApiCmpElements implements JApiCompareScan { + private final Set changes = new HashSet<>(); + + public Set getAllChanges() { + return changes; + } + + public void visit(JApiClass cls) { + + Collection bcs = cls.getCompatibilityChanges(); + bcs.forEach(c -> { + ApiChange apiChange = new ApiChange(); + apiChange.setCategory(cls.getChangeStatus().toString()); + apiChange.setName(cls.getFullyQualifiedName()); + apiChange.setChangeType(cls.getChangeStatus()); + apiChange.setCompatibilityChange(c.getType()); + apiChange.setInstruction(Instruction.Class.toString()); + apiChange.setReference(new TypeBreakingChange(cls)); + changes.add(apiChange); + }); + + //handle interfaces + cls.getInterfaces().forEach(i -> + visit(cls, i) + ); + } + + @Override + public void visit(JApiMethod jApiMethod) { + changes.addAll(jApiMethod.getCompatibilityChanges().stream().map(c -> { + ApiChange apiChange = new ApiChange(); + apiChange.setCategory(jApiMethod.getChangeStatus().toString()); + apiChange.setName(jApiMethod.getName()); + apiChange.setChangeType(jApiMethod.getChangeStatus()); + apiChange.setNewLongName(jApiMethod.getOldMethod().isPresent() ? jApiMethod.getOldMethod().get().getLongName() : jApiMethod.getNewMethod().isPresent() ? jApiMethod.getNewMethod().get().getName() : "null"); + apiChange.setCompatibilityChange(c.getType()); + apiChange.setInstruction(Instruction.Method.toString()); + apiChange.setReference(new MethodBreakingChange(jApiMethod)); + return apiChange; + }).toList()); + } + + @Override + public void visit(JApiField f) { + Collection bcs = f.getCompatibilityChanges(); + changes.addAll(bcs.stream().map(c -> { + ApiChange apiChange = new ApiChange(); + apiChange.setCategory(f.getChangeStatus().toString()); + apiChange.setName(f.getName()); + apiChange.setChangeType(f.getChangeStatus()); + apiChange.setCompatibilityChange(c.getType()); + apiChange.setNewLongName(f.getName()); + apiChange.setInstruction(Instruction.Field.toString()); + apiChange.setReference(new FieldBreakingChange(f)); + return apiChange; + }).toList()); + + } + + @Override + public void visit(JApiConstructor cons) { + Collection bcs = cons.getCompatibilityChanges(); + changes.addAll(bcs.stream().map(c -> { + ApiChange apiChange = new ApiChange(); + apiChange.setCategory(cons.getChangeStatus().toString()); + apiChange.setName(cons.getName()); + apiChange.setChangeType(cons.getChangeStatus()); + apiChange.setCompatibilityChange(c.getType()); + apiChange.setInstruction(Instruction.Constructor.toString()); + apiChange.setReference(new MethodBreakingChange(cons)); + return apiChange; + }).toList()); + } + + @Override + public void visit(JApiImplementedInterface intf) { + // Using visit(JApiClass jApiClass, JApiImplementedInterface jApiImplementedInterface) +// System.out.println("JApiImplementedInterface " + intf.getFullyQualifiedName() + " : " + (!intf.getCompatibilityChanges().isEmpty() ? intf.getCompatibilityChanges().get(0).getType() : "null")); + + } + + @Override + public void visit(JApiAnnotation ann) { + } + + @Override + public void visit(JApiSuperclass superCls) { + Collection bcs = superCls.getCompatibilityChanges(); + changes.addAll(bcs.stream().map(c -> { + ApiChange apiChange = new ApiChange(); + apiChange.setCategory(superCls.getChangeStatus().toString()); + apiChange.setName(superCls.getJApiClassOwning().getFullyQualifiedName()); + apiChange.setChangeType(superCls.getChangeStatus()); + apiChange.setCompatibilityChange(c.getType()); + apiChange.setInstruction(Instruction.Class.toString()); + apiChange.setReference(new TypeBreakingChange(superCls.getJApiClassOwning())); + return apiChange; + }).toList()); + + + } + + public void visit(JApiClass cls, JApiImplementedInterface intf) { + Collection bcs = intf.getCompatibilityChanges(); + changes.addAll(bcs.stream().map(c -> { + ApiChange apiChange = new ApiChange(); + apiChange.setCategory(cls.getChangeStatus().toString()); + apiChange.setName(cls.getFullyQualifiedName()); + apiChange.setChangeType(cls.getChangeStatus()); + apiChange.setCompatibilityChange(c.getType()); + apiChange.setInstruction(Instruction.Class.toString()); + apiChange.setReference(new TypeBreakingChange(cls)); + return apiChange; + }).toList()); + + } + + +} diff --git a/src/main/java/se/kth/breaking_changes/JApiCompareScan.java b/src/main/java/se/kth/breaking_changes/JApiCompareScan.java new file mode 100644 index 0000000..33a03bf --- /dev/null +++ b/src/main/java/se/kth/breaking_changes/JApiCompareScan.java @@ -0,0 +1,69 @@ +package se.kth.breaking_changes; + +import japicmp.model.*; +import japicmp.output.Filter; + +import java.util.Iterator; +import java.util.List; + +/** + * Based on the JApiCmpVisitor from japicmp. + * Also is based on Maracas' JApiCmpDeltaVisitor. + * + */ +public interface JApiCompareScan { + + void visit(JApiClass jApiClass); + + void visit(JApiMethod jApiMethod); + + void visit(JApiConstructor jApiCons); + + void visit(JApiImplementedInterface jApiImpl); + + void visit(JApiField jApiField); + + void visit(JApiAnnotation jApiAnnotation); + + void visit(JApiSuperclass jApiSuper); + + static void visit(List classes, JApiCompareScan visitor) { + Filter.filter(classes, new Filter.FilterVisitor() { + @Override + public void visit(Iterator iterator, JApiClass jApiClass) { + visitor.visit(jApiClass); + } + + @Override + public void visit(Iterator iterator, JApiMethod jApiMethod) { + visitor.visit(jApiMethod); + } + + @Override + public void visit(Iterator iterator, JApiConstructor jApiConstructor) { + visitor.visit(jApiConstructor); + } + + @Override + public void visit(Iterator iterator, + JApiImplementedInterface jApiImplementedInterface) { + visitor.visit(jApiImplementedInterface); + } + + @Override + public void visit(Iterator iterator, JApiField jApiField) { + visitor.visit(jApiField); + } + + @Override + public void visit(Iterator iterator, JApiAnnotation jApiAnnotation) { + visitor.visit(jApiAnnotation); + } + + @Override + public void visit(JApiSuperclass jApiSuperclass) { + visitor.visit(jApiSuperclass); + } + }); + } +} diff --git a/src/main/java/se/kth/breaking_changes/Main.java b/src/main/java/se/kth/breaking_changes/Main.java index c63e3d5..940a654 100644 --- a/src/main/java/se/kth/breaking_changes/Main.java +++ b/src/main/java/se/kth/breaking_changes/Main.java @@ -1,27 +1,36 @@ package se.kth.breaking_changes; -import se.kth.data.BreakingUpdateMetadata; +import se.kth.japianalysis.BreakingChange; import java.nio.file.Path; import java.util.List; import java.util.Set; -import static se.kth.data.Main.getBreakingCommit; - public class Main { public static void main(String[] args) { + ApiMetadata apiMetadata = new ApiMetadata(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/0abf7148300f40a1da0538ab060552bca4a2f1d8/jasperreports-6.18.1.jar")); + ApiMetadata apiMetadata1 = new ApiMetadata(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/0abf7148300f40a1da0538ab060552bca4a2f1d8/jasperreports-6.19.1.jar")); + + JApiCmpAnalyze jApiCmpAnalyze = new JApiCmpAnalyze( - Path.of("/Users/frank/Documents/Work/PHD/Tools/bump_experiments/jars/0abf7148300f40a1da0538ab060552bca4a2f1d8/jasperreports-6.18.1.jar"), - Path.of("/Users/frank/Documents/Work/PHD/Tools/bump_experiments/jars/0abf7148300f40a1da0538ab060552bca4a2f1d8/jasperreports-6.19.1.jar") + apiMetadata, + apiMetadata1 ); - Set apiChanges = jApiCmpAnalyze.useJApiCmp(); - for (ApiChange apiChange : apiChanges) { - System.out.println(apiChange); - } +// Set apiChanges = jApiCmpAnalyze.useJApiCmp(); + + List apiChanges = jApiCmpAnalyze.useJApiCmp_v2(); + + + + System.out.println("Number of changes: " + apiChanges.size()); + +// for (ApiChange apiChange : apiChanges) { +// System.out.println(apiChange); +// } // List list = diff --git a/src/main/java/se/kth/breaking_changes/MethodBreakingChange.java b/src/main/java/se/kth/breaking_changes/MethodBreakingChange.java new file mode 100644 index 0000000..eebaf6a --- /dev/null +++ b/src/main/java/se/kth/breaking_changes/MethodBreakingChange.java @@ -0,0 +1,56 @@ +package se.kth.breaking_changes; + +import japicmp.model.JApiBehavior; +import japicmp.model.JApiMethod; + +import static java.util.stream.Collectors.joining; + +/** + * Represents a method-level breaking change + * Result from the comparison of two versions of an API + */ +@lombok.Getter +public class MethodBreakingChange extends AbstractApiChange { + + private final JApiBehavior jApiMethod; + + public MethodBreakingChange(JApiBehavior jApiMethod) { + this.jApiMethod = jApiMethod; + } + + /** + * This method returns the method name in the format of returnType methodName(params) + * + * @return String representing the method name + */ + @Override + public String variantName() { + JApiMethod method = ((JApiMethod) jApiMethod); + + String[] fullReturnTypeName = method.getReturnType().getNewReturnType().split("\\."); + String returnTypeClass = fullReturnTypeName[fullReturnTypeName.length - 1].equals("n.a.") ? "void" : fullReturnTypeName[fullReturnTypeName.length - 1]; + + String params = method.getParameters().stream().map(jApiParameter -> { + String[] fullParameterTypeName = jApiParameter.getType().split("\\."); + return fullParameterTypeName[fullParameterTypeName.length - 1]; + }).collect(joining(",")); + + return "%s %s(%s)".formatted(returnTypeClass, method.getName(), params); + } + + public String getFullQualifiedName() { + + String className = jApiMethod.getjApiClass().getFullyQualifiedName(); + String name = jApiMethod.getName(); + + return "%s.%s".formatted(className, name); + + } + + @Override + public String toString() { + return "MethodBreakingChange{" + + "jApiMethod=" + jApiMethod + + '}'; + } +} diff --git a/src/main/java/se/kth/breaking_changes/TypeBreakingChange.java b/src/main/java/se/kth/breaking_changes/TypeBreakingChange.java new file mode 100644 index 0000000..6850cb1 --- /dev/null +++ b/src/main/java/se/kth/breaking_changes/TypeBreakingChange.java @@ -0,0 +1,22 @@ +package se.kth.breaking_changes; + +import japicmp.model.JApiClass; + +public class TypeBreakingChange extends AbstractApiChange{ + + private final JApiClass jApiClass; + + public TypeBreakingChange(JApiClass jApiClass) { + this.jApiClass = jApiClass; + } + + @Override + public String variantName() { + return null; + } + + @Override + public String getFullQualifiedName() { + return jApiClass.getFullyQualifiedName(); + } +} diff --git a/src/main/java/se/kth/core/BreakingChange.java b/src/main/java/se/kth/core/BreakingChange.java index 0f49ee3..83ac90a 100644 --- a/src/main/java/se/kth/core/BreakingChange.java +++ b/src/main/java/se/kth/core/BreakingChange.java @@ -21,6 +21,19 @@ public BreakingChange(ApiChange apiChanges) { public BreakingChange() { } + public void addErrorInfo(SpoonResults spoonResults) { + errorInfo.stream().findFirst().ifPresentOrElse( + s -> { + if (s.getCtElement().getPosition().getLine() == spoonResults.getCtElement().getPosition().getLine() + && s.getCtElement().getPosition().toString().equals(spoonResults.getCtElement().getPosition().toString()) + ) { + return; + } + }, + () -> errorInfo.add(spoonResults) + ); + } + public String toString() { return "BreakingChange{" + "apiChanges=" + apiChanges.toString() + ", errorInfo=" + errorInfo.toString() + '}'; } diff --git a/src/main/java/se/kth/core/Changes.java b/src/main/java/se/kth/core/Changes.java index 7ff3520..b259684 100644 --- a/src/main/java/se/kth/core/Changes.java +++ b/src/main/java/se/kth/core/Changes.java @@ -1,10 +1,14 @@ package se.kth.core; +import se.kth.breaking_changes.ApiMetadata; +import se.kth.sponvisitors.BrokenUse; + import java.util.HashSet; import java.util.Set; -public record Changes(String newApiVersion, String oldApiVersion, Set changes) { - public Changes(String newApiVersion, String oldApiVersion) { +public record Changes(ApiMetadata oldApiVersion, ApiMetadata newApiVersion, Set changes ) { + public Changes(ApiMetadata oldApiVersion, ApiMetadata newApiVersion) { this(newApiVersion, oldApiVersion, new HashSet<>()); } } + diff --git a/src/main/java/se/kth/core/Changes_V2.java b/src/main/java/se/kth/core/Changes_V2.java new file mode 100644 index 0000000..3a56e3b --- /dev/null +++ b/src/main/java/se/kth/core/Changes_V2.java @@ -0,0 +1,13 @@ +package se.kth.core; + +import se.kth.breaking_changes.ApiMetadata; +import se.kth.sponvisitors.BrokenChanges; + +import java.util.HashSet; +import java.util.Set; + +public record Changes_V2(ApiMetadata oldApiVersion, ApiMetadata newApiVersion, Set brokenChanges) { + public Changes_V2(ApiMetadata oldApiVersion, ApiMetadata newApiVersion) { + this(oldApiVersion, newApiVersion, new HashSet<>()); + } +} diff --git a/src/main/java/se/kth/core/CombineResults.java b/src/main/java/se/kth/core/CombineResults.java index 90e1727..68b7982 100644 --- a/src/main/java/se/kth/core/CombineResults.java +++ b/src/main/java/se/kth/core/CombineResults.java @@ -2,14 +2,20 @@ import japicmp.model.JApiChangeStatus; import se.kth.breaking_changes.ApiChange; +import se.kth.breaking_changes.ApiMetadata; +import se.kth.breaking_changes.BreakingGoodOptions; import se.kth.log_Analyzer.MavenErrorLog; -import se.kth.log_Analyzer.MavenLogAnalyzer; +import se.kth.sponvisitors.BreakingChangeVisitor; +import se.kth.sponvisitors.BrokenChanges; +import se.kth.sponvisitors.BrokenUse; import se.kth.spoon_compare.SpoonAnalyzer; import se.kth.spoon_compare.SpoonResults; +import spoon.reflect.CtModel; import java.io.IOException; import java.util.HashSet; import java.util.List; +import java.util.Objects; import java.util.Set; @lombok.Getter @@ -18,7 +24,7 @@ public class CombineResults { private Set apiChanges; - MavenLogAnalyzer mavenLog; + MavenErrorLog mavenLog; String dependencyGroupID; @@ -26,40 +32,119 @@ public class CombineResults { Set breakingChanges; + ApiMetadata oldVersion; + + ApiMetadata newVersion; + + CtModel model; + + public CombineResults(Set apiChanges, ApiMetadata oldVersion, ApiMetadata newVersion, MavenErrorLog mavenLog, CtModel model) { + Objects.requireNonNull(apiChanges); + Objects.requireNonNull(oldVersion); + Objects.requireNonNull(newVersion); + Objects.requireNonNull(mavenLog); + Objects.requireNonNull(model); + - public CombineResults(Set apiChanges) { this.apiChanges = apiChanges; + this.oldVersion = oldVersion; + this.newVersion = newVersion; + this.mavenLog = mavenLog; + this.model = model; } public Changes analyze() throws IOException { - MavenErrorLog log = mavenLog.analyzeCompilationErrors(); + Set change = new HashSet<>(); + try { + // client.setClasspath(List.of(oldVersion.getFile())); + + mavenLog.getErrorInfo().forEach((k, v) -> { + SpoonAnalyzer spoonAnalyzer = new SpoonAnalyzer(v, apiChanges, model); + List results = spoonAnalyzer.applySpoon(project + k); +// System.out.printf("Amount of instructions %d%n", results.size()); + findBreakingChanges(results, change); + }); + } catch (Exception e) { + System.out.println("Error identifying breaking changes in client " + e.toString()); + throw new RuntimeException(e); + } - log.getErrorInfo().forEach((k, v) -> { - SpoonAnalyzer spoonAnalyzer = new SpoonAnalyzer(dependencyGroupID, v); - List results = spoonAnalyzer.applySpoon(project + k); + return new Changes(oldVersion, newVersion, change); + } + + public Changes_V2 analyze_v2(List breakingChangeVisitors, BreakingGoodOptions opts) throws IOException { + + Set results = new HashSet<>(); + + try { + // client.setClasspath(List.of(oldVersion.getFile())); + mavenLog.getErrorInfo().forEach((k, v) -> { + SpoonAnalyzer spoonAnalyzer = new SpoonAnalyzer(v, apiChanges, model); + results.addAll(spoonAnalyzer.applySpoonV2(breakingChangeVisitors, opts, project + k)); // System.out.printf("Amount of instructions %d%n", results.size()); - findBreakingChanges(results, change); + + }); + + Set changes = addErrorInfo(results); + return new Changes_V2(oldVersion, newVersion, changes); + + } catch (Exception e) { + System.out.println("Error identifying breaking changes in client " + e.toString()); + throw new RuntimeException(e); + } + + } + + + public Set addErrorInfo(Set results) { + Set brokenChanges = new HashSet<>(); + + results.forEach(brokenUse -> { + BrokenChanges brokenChange = new BrokenChanges(brokenUse); + mavenLog.getErrorInfo().forEach((k, v) -> { + v.forEach(errorInfo -> { + if (brokenUse.element().getPosition().getLine() == Integer.parseInt(errorInfo.getClientLinePosition())) { + brokenChange.addErrorInfo(errorInfo); + } + }); + }); + brokenChanges.add(brokenChange); }); - return new Changes("1.0.0", "1.0.1", change); + + return brokenChanges; + } + + private void addBrokenUse(Set results, BrokenChanges brokenChange) { + for (BrokenChanges b : results) { + if (b.getBrokenUse().usedApiElement().toString().equals(brokenChange.getBrokenUse().usedApiElement().toString())) { + b.getErrorInfo().addAll(brokenChange.getErrorInfo()); + return; + } + } + results.add(brokenChange); } + public void findBreakingChanges(List spoonResults, Set change) { + spoonResults.forEach(spoonResult -> { apiChanges.forEach(apiChange -> { - if (apiChange.getChangeType().equals(JApiChangeStatus.REMOVED) && apiChange.getName().equals(spoonResult.getName())) { + if ((apiChange.getChangeType().equals(JApiChangeStatus.REMOVED) || + apiChange.getChangeType().equals(JApiChangeStatus.MODIFIED) + ) && apiChange.getName().equals(spoonResult.getName())) { for (BreakingChange breakingChange : change) { if (breakingChange.getApiChanges().getName().equals(apiChange.getName())) { - breakingChange.getErrorInfo().add(spoonResult); + breakingChange.addErrorInfo(spoonResult); return; } } BreakingChange breakingChange = new BreakingChange(apiChange); - breakingChange.getErrorInfo().add(spoonResult); + breakingChange.addErrorInfo(spoonResult); change.add(breakingChange); // find new variants - Set newVariants = findNewVariant(apiChange); + Set newVariants = findNewVariant(apiChange); apiChange.setNewVariants(newVariants); } @@ -71,12 +156,7 @@ public Set findNewVariant(ApiChange apiChange) { Set newVariants = new HashSet<>(); apiChanges.forEach(apiChange1 -> { - if (apiChange1.getName().contains("between")) { -// System.out.println("between"); - } if (apiChange1.getName().equals(apiChange.getName()) && !apiChange1.getChangeType().equals(JApiChangeStatus.REMOVED)) { -// System.out.println("New Element " + apiChange1.getName()); -// System.out.println("Old element " + apiChange.getName()); newVariants.add(apiChange1); } }); diff --git a/src/main/java/se/kth/core/Instruction.java b/src/main/java/se/kth/core/Instruction.java index 93471c0..5a95c66 100644 --- a/src/main/java/se/kth/core/Instruction.java +++ b/src/main/java/se/kth/core/Instruction.java @@ -5,4 +5,5 @@ public enum Instruction { Class, Import, Field, + Constructor } diff --git a/src/main/java/se/kth/core/Main.java b/src/main/java/se/kth/core/Main.java index 33253e7..5c5fc86 100644 --- a/src/main/java/se/kth/core/Main.java +++ b/src/main/java/se/kth/core/Main.java @@ -1,9 +1,11 @@ package se.kth.core; import se.kth.breaking_changes.ApiChange; +import se.kth.breaking_changes.ApiMetadata; import se.kth.breaking_changes.JApiCmpAnalyze; import se.kth.explaining.CompilationErrorTemplate; import se.kth.explaining.ExplanationTemplate; +import se.kth.log_Analyzer.MavenErrorLog; import se.kth.log_Analyzer.MavenLogAnalyzer; import java.io.File; @@ -14,34 +16,36 @@ public class Main { + public static void main(String[] args) { + Path oldDependency = Path.of("/Users/frank/Downloads/Test_Failures/log4j-api-2.16.0.jar"); + Path newDependency = Path.of("/Users/frank/Downloads/Test_Failures/log4j-api-2.18.0.jar"); - - public static void main(String[] args) { + ApiMetadata apiMetadata = new ApiMetadata(oldDependency); + ApiMetadata apiMetadata1 = new ApiMetadata(newDependency); JApiCmpAnalyze jApiCmpAnalyze = new JApiCmpAnalyze( - Path.of("/Users/frank/Downloads/Test_Failures/log4j-api-2.16.0.jar"), - Path.of("/Users/frank/Downloads/Test_Failures/log4j-api-2.18.0.jar") + apiMetadata, + apiMetadata1 ); Set apiChanges = jApiCmpAnalyze.useJApiCmp(); + try { + MavenErrorLog errorLog = new MavenLogAnalyzer(new File("/Users/frank/Downloads/Test_Failures/webapp/1eb6d9d5b2a07720a0839457cee81e066dd932f2.log")).analyzeCompilationErrors(); - CombineResults combineResults = new CombineResults(apiChanges); + ApiMetadata newApiVersion = new ApiMetadata(newDependency.toFile().getName(), newDependency); + ApiMetadata oldApiVersion = new ApiMetadata(oldDependency.toFile().getName(), oldDependency); - combineResults.setDependencyGroupID("org.apache.logging.log4j"); + CombineResults combineResults = new CombineResults(apiChanges, newApiVersion, oldApiVersion, errorLog,null); - combineResults.setProject("/Users/frank/Downloads/Test_Failures"); + combineResults.setDependencyGroupID("org.apache.logging.log4j"); - combineResults.setMavenLog(new MavenLogAnalyzer(new File("/Users/frank/Downloads/Test_Failures/webapp/1eb6d9d5b2a07720a0839457cee81e066dd932f2.log"))); + combineResults.setProject("/Users/frank/Downloads/Test_Failures"); - try { Changes changes = combineResults.analyze(); - - - changes.changes().forEach(change -> { - ExplanationTemplate explanationTemplate = new CompilationErrorTemplate(changes, "change"); - explanationTemplate.generateTemplate(); +// ExplanationTemplate explanationTemplate = new CompilationErrorTemplate(changes, "change"); +// explanationTemplate.generateTemplate(); } ); diff --git a/src/main/java/se/kth/core/Util.java b/src/main/java/se/kth/core/Util.java index ce4c8f8..df4e4a7 100644 --- a/src/main/java/se/kth/core/Util.java +++ b/src/main/java/se/kth/core/Util.java @@ -1,13 +1,37 @@ package se.kth.core; +import spoon.reflect.reference.CtExecutableReference; +import spoon.reflect.reference.CtFieldReference; +import spoon.reflect.reference.CtReference; +import spoon.reflect.reference.CtTypeReference; + import java.nio.file.Files; import java.nio.file.Paths; -public class Util { +public final class Util { public boolean isFolder(String path) { - return Files.isDirectory(Paths.get(path)); + return Files.isDirectory(Paths.get(path)); } + + public static String fullyQualifiedName(CtReference ref) { + String fqn = ""; + + if (ref instanceof CtTypeReference tRef) + fqn = tRef.getQualifiedName(); + else if (ref instanceof CtExecutableReference eRef) { + if (eRef.getDeclaringType() != null) { + fqn = eRef.getDeclaringType().getQualifiedName().concat(".").concat(eRef.getSimpleName()); + } else { + fqn = eRef.getSimpleName(); + } + } else if (ref instanceof CtFieldReference fRef) + fqn = fRef.getDeclaringType().getQualifiedName().concat(".").concat(fRef.getSimpleName()); + + return fqn; + } + + } diff --git a/src/main/java/se/kth/data/BreakingGoodInfo.java b/src/main/java/se/kth/data/BreakingGoodInfo.java new file mode 100644 index 0000000..4303705 --- /dev/null +++ b/src/main/java/se/kth/data/BreakingGoodInfo.java @@ -0,0 +1,63 @@ +package se.kth.data; + +import java.util.Objects; + +@lombok.Getter +@lombok.Setter +public class BreakingGoodInfo { + String breakingCommit; + String failureCategory; + boolean hasExplanation; + int errorsFromLog; + int jApiCmpChanges; + int totalErrorsInExplanation; + + + + @Override + public String toString() { + return "BreakingGoodInfo{" + + "breakingCommit='" + breakingCommit + '\'' + + ", failureCategory='" + failureCategory + '\'' + + ", hasExplanation=" + hasExplanation + + ", errorsFromLog=" + errorsFromLog + + ", jApiCmpChanges=" + jApiCmpChanges + + ", totalErrorsInExplanation=" + totalErrorsInExplanation + + '}'; + } + + public BreakingGoodInfo(String breakingCommit, String failureCategory, boolean hasExplanation, int errorsFromLog, int jApiCmpChanges, int totalErrorsInExplanation) { + this.breakingCommit = breakingCommit; + this.failureCategory = failureCategory; + this.hasExplanation = hasExplanation; + this.errorsFromLog = errorsFromLog; + this.jApiCmpChanges = jApiCmpChanges; + this.totalErrorsInExplanation = totalErrorsInExplanation; + } + + public BreakingGoodInfo() { + } + + @Override + public int hashCode() { + return Objects.hash(breakingCommit, failureCategory, hasExplanation, errorsFromLog, jApiCmpChanges, totalErrorsInExplanation); + + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + BreakingGoodInfo other = (BreakingGoodInfo) obj; + return breakingCommit.equals(other.breakingCommit) + && failureCategory.equals(other.failureCategory) + && hasExplanation == other.hasExplanation + && errorsFromLog == other.errorsFromLog + && jApiCmpChanges == other.jApiCmpChanges + && totalErrorsInExplanation == other.totalErrorsInExplanation; + } +} diff --git a/src/main/java/se/kth/data/BuildHelp.java b/src/main/java/se/kth/data/BuildHelp.java new file mode 100644 index 0000000..4f49f95 --- /dev/null +++ b/src/main/java/se/kth/data/BuildHelp.java @@ -0,0 +1,90 @@ +package se.kth.data; + +import com.fasterxml.jackson.databind.type.MapType; +import se.kth.core.Changes_V2; +import se.kth.log_Analyzer.MavenErrorLog; +import se.kth.log_Analyzer.MavenLogAnalyzer; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; + +public class BuildHelp { + public static void main(String[] args) { + System.out.println("Hello World!"); + } + + public static List getBreakingCommit(Path benchmarkDir) { + File[] breakingUpdates = null; + + if (Files.isDirectory(benchmarkDir)) { + breakingUpdates = benchmarkDir.toFile().listFiles(); + } else { + breakingUpdates = new File[]{benchmarkDir.toFile()}; + } + + MapType buJsonType = JsonUtils.getTypeFactory().constructMapType(Map.class, String.class, Object.class); + List breakingUpdateList = new ArrayList<>(); + + if (breakingUpdates != null) { + for (File breakingUpdate : breakingUpdates) { + // read each breaking update json file + BreakingUpdateMetadata bu = JsonUtils.readFromFile(breakingUpdate.toPath(), BreakingUpdateMetadata.class); + // convert to BreakingUpdate object + breakingUpdateList.add(bu); + } + } else { + System.out.println("No breaking update found in " + benchmarkDir); + } + return breakingUpdateList; + } + + + public static void metadata() { + final var path = Path.of("breaking_good_stats.json"); + if (!Files.exists(path)) { + try { + Files.createFile(path); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + public static void changesCount(Changes_V2 changes, BreakingGoodInfo bg) { + int breakingChanges = 0; + for (var change : changes.brokenChanges()) { + breakingChanges += change.getErrorInfo().size(); + } + bg.setTotalErrorsInExplanation(breakingChanges); + } + + public static MavenErrorLog mavenLogParser(BreakingUpdateMetadata breakingUpdate, BreakingGoodInfo bg) throws IOException { + MavenLogAnalyzer mavenLogAnalyzer = new MavenLogAnalyzer( + new File("projects/%s/%s/%s.log".formatted(breakingUpdate.breakingCommit(), breakingUpdate.project(), breakingUpdate.breakingCommit()))); + + MavenErrorLog errorLog = mavenLogAnalyzer.analyzeCompilationErrors(); + AtomicInteger errorsCount = new AtomicInteger(); + errorLog.getErrorInfo().forEach((k, v) -> { + System.out.println("Path: " + k); + errorsCount.addAndGet(v.size()); + v.forEach(errorInfo -> { + System.out.println("Line: " + errorInfo.getClientLinePosition()); + System.out.println("Error: " + errorInfo.getErrorMessage()); + }); + }); + + bg.setErrorsFromLog(errorsCount.get()); + return errorLog; + } + + + + + +} diff --git a/src/main/java/se/kth/data/Main.java b/src/main/java/se/kth/data/Main.java index 5969dfd..7f5e359 100644 --- a/src/main/java/se/kth/data/Main.java +++ b/src/main/java/se/kth/data/Main.java @@ -1,52 +1,52 @@ package se.kth.data; -import com.fasterxml.jackson.databind.type.MapType; import se.kth.breaking_changes.ApiChange; +import se.kth.breaking_changes.ApiMetadata; +import se.kth.breaking_changes.BreakingGoodOptions; import se.kth.breaking_changes.JApiCmpAnalyze; -import se.kth.core.Changes; +import se.kth.core.Changes_V2; import se.kth.core.CombineResults; import se.kth.explaining.CompilationErrorTemplate; import se.kth.explaining.ExplanationTemplate; -import se.kth.log_Analyzer.MavenLogAnalyzer; - +import se.kth.explaining.JavaVersionIncompatibilityTemplate; +import se.kth.japianalysis.BreakingChange; +import se.kth.java_version.JavaIncompatibilityAnalyzer; +import se.kth.java_version.JavaVersionFailure; +import se.kth.java_version.JavaVersionIncompatibility; +import se.kth.java_version.VersionFinder; +import se.kth.log_Analyzer.MavenErrorLog; +import se.kth.sponvisitors.BreakingChangeVisitor; +import se.kth.spoon_compare.Client; +import spoon.reflect.CtModel; + +import java.io.BufferedReader; import java.io.File; +import java.io.FileReader; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; -public class Main { +import static se.kth.data.BuildHelp.*; +import static se.kth.java_version.JavaVersion.generateVersionExplanation; - public static void main(String[] args) { - List list = getBreakingCommit(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/benchmark/data/benchmark")); -// List list = getBreakingCommit(Path.of("examples/Benchmark")); -// - List compilationErrors = list.stream().filter(b -> b.failureCategory().equals("TEST_FAILURE")).toList(); +public class Main { + static List list = new ArrayList<>(); + static Set breakingGoodInfoList = new HashSet<>(); - generateTemplate(compilationErrors); - } + public static void main(String[] args) { + String fileName = "0cdcc1f1319311f383676a89808c9b8eb190145c"; - public static List getBreakingCommit(Path benchmarkDir) { + list = getBreakingCommit(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/benchmark/data/benchmark")); +// list = getBreakingCommit(Path.of("examples/Benchmark")); +// list = getBreakingCommit(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/benchmark/data/benchmark/%s.json".formatted(fileName))); +// + List compilationErrors = list.stream().filter(b -> b.failureCategory().equals("COMPILATION_FAILURE")).toList(); - File[] breakingUpdates = benchmarkDir.toFile().listFiles(); - MapType buJsonType = JsonUtils.getTypeFactory().constructMapType(Map.class, String.class, Object.class); - List breakingUpdateList = new ArrayList<>(); - if (breakingUpdates != null) { - for (File breakingUpdate : breakingUpdates) { - // read each breaking update json file - BreakingUpdateMetadata bu = JsonUtils.readFromFile(breakingUpdate.toPath(), BreakingUpdateMetadata.class); - // convert to BreakingUpdate object - breakingUpdateList.add(bu); - } - } else { - System.out.println("No breaking update found in " + benchmarkDir); - } - return breakingUpdateList; +// compilationErrors = read(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/explanationStatistics-data-old.json"), compilationErrors); + generateTemplate(compilationErrors); } @@ -54,15 +54,24 @@ public static void generateTemplate(List breakingUpdateL String githubURL = "https://github.com/knaufk/flink-faker/blob/1ef97ea6c5b6e34151fe6167001b69e003449f95/src/main/java/com/github/knaufk/flink/faker/DateTime.java#L44"; - Path jars = Path.of("/Users/frank/Documents/Work/PHD/Tools/bump_experiments/jars"); - DockerImages dockerImages = new DockerImages(); List explanationStatistics = new ArrayList<>(); + Path info = Path.of("breaking_good_stats.json"); + for (BreakingUpdateMetadata breakingUpdate : breakingUpdateList) { - Path jarsFile = Path.of("projects/"); + if (breakingUpdate.project().equals("google-cloud-java")) { + continue; + } + +// Path explaining = Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/Explanations/%s.md".formatted(breakingUpdate.breakingCommit())); +// if (Files.exists(explaining)) { +// continue; +// } + + Path jarsFile = Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/"); System.out.println("Processing breaking update " + breakingUpdate.breakingCommit()); try { @@ -71,61 +80,167 @@ public static void generateTemplate(List breakingUpdateL System.out.println("Error downloading breaking update " + breakingUpdate.breakingCommit()); } -// processingBreakingUpdate(breakingUpdate, jarsFile, explanationStatistics); + try { + processingBreakingUpdate(breakingUpdate, jarsFile, explanationStatistics); + + } catch (Exception e) { + System.out.println("Error processing breaking update " + breakingUpdate.breakingCommit()); + System.out.println(e.toString()); + continue; + } } } - private static void processingBreakingUpdate(BreakingUpdateMetadata breakingUpdate, Path jarsFile, List explanationStatistics) { + private static void processingBreakingUpdate(BreakingUpdateMetadata breakingUpdate, Path + jarsFile, List explanationStatistics) { try { - JApiCmpAnalyze jApiCmpAnalyze = new JApiCmpAnalyze( - jarsFile.resolve("%s/%s-%s.jar".formatted(breakingUpdate.breakingCommit(), breakingUpdate.updatedDependency().dependencyArtifactID(), breakingUpdate.updatedDependency().previousVersion())), - jarsFile.resolve("%s/%s-%s.jar".formatted(breakingUpdate.breakingCommit(), breakingUpdate.updatedDependency().dependencyArtifactID(), breakingUpdate.updatedDependency().newVersion())) - ); + //Metadata + BreakingGoodInfo bg = new BreakingGoodInfo(); + bg.setBreakingCommit(breakingUpdate.breakingCommit()); + bg.setFailureCategory(breakingUpdate.failureCategory()); + MavenErrorLog mavenLogAnalyzer = mavenLogParser(breakingUpdate, bg); - Set apiChanges = jApiCmpAnalyze.useJApiCmp(); - CombineResults combineResults = new CombineResults(apiChanges); + Path oldDependency = jarsFile.resolve("%s/%s-%s.jar".formatted(breakingUpdate.breakingCommit(), breakingUpdate.updatedDependency().dependencyArtifactID(), breakingUpdate.updatedDependency().previousVersion())); + Path newDependency = jarsFile.resolve("%s/%s-%s.jar".formatted(breakingUpdate.breakingCommit(), breakingUpdate.updatedDependency().dependencyArtifactID(), breakingUpdate.updatedDependency().newVersion())); - combineResults.setDependencyGroupID(breakingUpdate.updatedDependency().dependencyGroupID()); + ApiMetadata newApiVersion = new ApiMetadata(newDependency.toFile().getName(), newDependency); + ApiMetadata oldApiVersion = new ApiMetadata(oldDependency.toFile().getName(), oldDependency); - combineResults.setProject("projects/%s".formatted(breakingUpdate.breakingCommit())); - combineResults.setMavenLog(new MavenLogAnalyzer( - new File("projects/%s/%s/%s.log".formatted(breakingUpdate.breakingCommit(), breakingUpdate.project(), breakingUpdate.breakingCommit())))); + generateJavaVersionIncompatibilityTemplate(breakingUpdate, oldApiVersion, newApiVersion); - try { - Changes changes = combineResults.analyze(); - - System.out.println("Project: " + breakingUpdate.project()); - System.out.println("Breaking Commit: " + breakingUpdate.breakingCommit()); - System.out.println("Changes: " + changes.changes().size()); - explanationStatistics.add(new ExplanationStatistics(breakingUpdate.project(), breakingUpdate.breakingCommit(), changes.changes().size())); - ExplanationTemplate explanationTemplate = new CompilationErrorTemplate(changes, "Explanations/" + breakingUpdate.breakingCommit() + ".md"); - explanationTemplate.generateTemplate(); - System.out.println("**********************************************************"); - System.out.println(); - } catch (IOException e) { - System.out.println("Error analyzing breaking update " + breakingUpdate.breakingCommit()); - System.out.println(e); - throw new RuntimeException(e); - } - try { - Path file = Path.of("explanationStatistics.json"); - Files.deleteIfExists(file); - Files.createFile(file); - JsonUtils.writeToFile(file, explanationStatistics); - } catch (IOException e) { - throw new RuntimeException(e); - } +// generateCompilationExplanations(breakingUpdate, explanationStatistics, oldApiVersion, newApiVersion, bg, mavenLogAnalyzer); } catch (Exception e) { System.out.println("Error processing breaking update " + breakingUpdate.breakingCommit()); + System.out.println(e.toString()); + throw new RuntimeException(e); + } + } + + private static void generateJavaVersionIncompatibilityTemplate(BreakingUpdateMetadata breakingUpdate, ApiMetadata oldApiVersion, ApiMetadata newApiVersion) throws IOException { + + List projects = readJavaIncompatibilityFile("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/client_java_version_failure.txt"); + + if (!projects.contains(breakingUpdate.breakingCommit())) { + return; + } + + Changes_V2 changes = new Changes_V2(oldApiVersion, newApiVersion); + Client client = new Client(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/%s/%s".formatted(breakingUpdate.breakingCommit(), breakingUpdate.project()))); + + VersionFinder versionFinder = new VersionFinder(); + +// generateVersionExplanation(changes, client.getSourcePath().toString(), client.getSourcePath().toString() + "/%s.log".formatted(breakingUpdate.breakingCommit())); + + Map> javaVersions = versionFinder.findJavaVersions(client.getSourcePath().toString()); + JavaIncompatibilityAnalyzer javaIncompatibilityAnalyzer = new JavaIncompatibilityAnalyzer(); + Set errorList = javaIncompatibilityAnalyzer.parseErrors(client.getSourcePath().toString() + "/%s.log".formatted(breakingUpdate.breakingCommit())); + Map> versionFailures = JavaIncompatibilityAnalyzer.extractVersionErrors(errorList); + + + + JavaVersionFailure javaVersionFailure = new JavaVersionFailure(); + javaVersionFailure.setJavaInWorkflowFiles(javaVersions); + javaVersionFailure.setDiffVersionErrors(versionFailures); + javaVersionFailure.setErrorMessages(errorList); + javaVersionFailure.setIncompatibilityVersion(); + + + ExplanationTemplate explanationTemplate = new JavaVersionIncompatibilityTemplate( + changes, + "Explanations/JavaVersionIncompatibility/%s.md".formatted(breakingUpdate.breakingCommit()), + javaVersionFailure + ); + + explanationTemplate.generateTemplate(); + } + + private static void generateCompilationExplanations(BreakingUpdateMetadata breakingUpdate, List explanationStatistics, ApiMetadata oldApiVersion, ApiMetadata newApiVersion, BreakingGoodInfo bg, MavenErrorLog mavenLogAnalyzer) { + JApiCmpAnalyze jApiCmpAnalyze = new JApiCmpAnalyze( + oldApiVersion, + newApiVersion + ); + + Set apiChanges = jApiCmpAnalyze.useJApiCmp(); + + List breakingChanges = jApiCmpAnalyze.useJApiCmp_v2(); + + bg.setJApiCmpChanges(apiChanges.size()); + System.out.println("Number of changes: " + apiChanges.size()); + + Client client = new Client(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/%s/%s".formatted(breakingUpdate.breakingCommit(), breakingUpdate.project()))); + client.setClasspath(List.of(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/%s/%s-%s.jar".formatted(breakingUpdate.breakingCommit(), breakingUpdate.updatedDependency().dependencyArtifactID(), breakingUpdate.updatedDependency().previousVersion())))); + + CtModel model = client.createModel(); + CombineResults combineResults = new CombineResults(apiChanges, oldApiVersion, newApiVersion, mavenLogAnalyzer, model); + combineResults.setProject("projects/%s".formatted(breakingUpdate.breakingCommit())); + + try { + + List visitors = jApiCmpAnalyze.getVisitors(breakingChanges); + BreakingGoodOptions options = new BreakingGoodOptions(); + + Changes_V2 changesV2 = combineResults.analyze_v2(visitors, options); + +// Changes changes = combineResults.analyze(); + changesCount(changesV2, bg); + System.out.println("Project: " + breakingUpdate.project()); + System.out.println("Breaking Commit: " + breakingUpdate.breakingCommit()); + System.out.println("Changes: " + changesV2.brokenChanges().size()); + + String explanationFolder = list.size() > 1 ? "Explanations/" : "Explanations_tmp/"; + final var dir = Path.of(explanationFolder); + if (Files.notExists(dir)) { + Files.createDirectory(dir); + } + + explanationStatistics.add(new ExplanationStatistics(breakingUpdate.project(), breakingUpdate.breakingCommit(), changesV2.brokenChanges().size())); + ExplanationTemplate explanationTemplate = new CompilationErrorTemplate(changesV2, explanationFolder + "/" + breakingUpdate.breakingCommit() + ".md"); + explanationTemplate.generateTemplate(); + System.out.println("**********************************************************"); + if (Files.exists(Path.of(explanationFolder + "/" + breakingUpdate.breakingCommit() + ".md"))) { + bg.setHasExplanation(true); + } else { + System.out.println("Error generating explanation template for breaking update " + breakingUpdate.breakingCommit()); + } + breakingGoodInfoList.add(bg); + } catch (IOException e) { + System.out.println("Error analyzing breaking update " + breakingUpdate.breakingCommit()); System.out.println(e); + throw new RuntimeException(e); + } + try { + Path file = (list.size() > 1) ? Path.of("explanationStatistics-last.json") : Path.of("tmpStatistics.json"); + Files.deleteIfExists(file); + Files.createFile(file); + JsonUtils.writeToFile(file, explanationStatistics); + JsonUtils.writeToFile(Path.of("breaking_good_stats.json"), breakingGoodInfoList); + } catch (IOException e) { + throw new RuntimeException(e); } } - public record ExplanationStatistics(String project, String commit, int changes) { + public static record ExplanationStatistics(String project, String commit, int changes) { + } + + public static List readJavaIncompatibilityFile(String filePath) { + + File file = new File(filePath); + List lines = new ArrayList<>(); + try (BufferedReader br = new BufferedReader(new FileReader(file))) { + String line; + while ((line = br.readLine()) != null) { + lines.add(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + return lines; } + + } diff --git a/src/main/java/se/kth/explaining/CompilationErrorTemplate.java b/src/main/java/se/kth/explaining/CompilationErrorTemplate.java index 7a788a4..402daa7 100644 --- a/src/main/java/se/kth/explaining/CompilationErrorTemplate.java +++ b/src/main/java/se/kth/explaining/CompilationErrorTemplate.java @@ -1,33 +1,29 @@ package se.kth.explaining; -import japicmp.model.JApiMethod; -import se.kth.core.BreakingChange; -import se.kth.core.Changes; -import se.kth.spoon_compare.SpoonResults; - -import static java.util.stream.Collectors.joining; +import se.kth.core.Changes_V2; +import se.kth.log_Analyzer.ErrorInfo; +import se.kth.sponvisitors.BrokenChanges; +import spoon.reflect.declaration.CtElement; +import spoon.reflect.declaration.CtNamedElement; public class CompilationErrorTemplate extends ExplanationTemplate { - public CompilationErrorTemplate(Changes changes, String fileName) { + public CompilationErrorTemplate(Changes_V2 changes, String fileName) { super(changes, fileName); } @Override public String getHead() { - BreakingChange breakingChange = !changes.changes().isEmpty() ?changes.changes().iterator().next() : null; - - return "CI detected that the dependency upgrade from version **%s** to **%s** has failed. Here are details to help you understand and fix the problem:" - .formatted(breakingChange.getApiChanges().getOldVersion().getName(), breakingChange.getApiChanges().getNewVersion().getName()); + .formatted(changes.oldApiVersion().getName(), changes.newApiVersion().getName()); } - public String clientErrorLine(SpoonResults spoonResults) { - return " * An error was detected in line %s which is making use of an outdated API.\n".formatted(spoonResults.getErrorInfo().getClientLinePosition()) + + public String clientErrorLine(ErrorInfo errorInfo, BrokenChanges brokenChange) { + return " * An error was detected in line %s which is making use of an outdated API.\n".formatted(errorInfo.getClientLinePosition()) + " ``` java\n" + - " %s %s;\n".formatted(spoonResults.getErrorInfo().getClientLinePosition(), spoonResults.getClientLine()) + + " %s %s;\n".formatted(errorInfo.getClientLinePosition(), brokenChange.getBrokenUse().element().toString()) + " ```\n"; } @@ -37,39 +33,49 @@ public String logLine() { } - public String logLineErrorMessage(SpoonResults spoonResults) { - return " * >[%s](%s)\n".formatted(spoonResults.getErrorInfo().getErrorMessage(), spoonResults.getErrorInfo().getErrorLogGithubLink()); + public String logLineErrorMessage(ErrorInfo errorInfo) { + try { + return " * >[%s](%s)\n".formatted(errorInfo.getErrorMessage().concat("
    " + errorInfo.getAdditionalInfo()), errorInfo.getErrorLogGithubLink()); + } catch ( + Exception e) { + return ""; + } } - public String errorSection(BreakingChange breakingChange, int instructions) { + public String errorSection(BrokenChanges brokenChange, int instructions) { StringBuilder message = new StringBuilder(); - for (SpoonResults spoonResults : breakingChange.getErrorInfo()) { - message.append(logLineErrorMessage(spoonResults)).append(clientErrorLine(spoonResults)); - } + for (ErrorInfo errorInfo : brokenChange.getErrorInfo()) { + try { + message.append(logLineErrorMessage(errorInfo)).append(clientErrorLine(errorInfo, brokenChange)); + } catch (Exception e) { + return ""; + } + } return message.toString(); } /** * This method generates the broken element section of the markdown file - * @return + * + * @return String broken element section */ @Override public String brokenElement() { String message = ""; // if there are more than one changes - if (!changes.changes().isEmpty()) { - String instructions = changes.changes().size() > 1 ? "instructions" : "instruction"; + if (!changes.brokenChanges().isEmpty()) { + String instructions = changes.brokenChanges().size() > 1 ? "constructs" : "construct"; String firstLine = "1. Your client utilizes **%d** %s which has been modified in the new version of the dependency." - .formatted(changes.changes().size(), instructions); + .formatted(changes.brokenChanges().size(), instructions); String text = ""; - for (BreakingChange changes : changes.changes()) { - String category = translateCategory(changes.getApiChanges().getChangeType().toString()); - final var singleChange = generateElementExplanation(changes, category, this.changes.changes().size()); + for (BrokenChanges changes : changes.brokenChanges()) { + String category = translateCategory(changes.getBrokenUse().change().toString()); + final var singleChange = generateElementExplanation(changes, category, this.changes.brokenChanges().size()); text = text.concat(singleChange); } message = firstLine + "\n" + text; @@ -77,10 +83,10 @@ public String brokenElement() { return message; } - private String generateElementExplanation(BreakingChange changes, String category, int instructions) { + private String generateElementExplanation(BrokenChanges changes, String category, int instructions) { if (instructions > 1) { return " *
\n" + - " %s %s which has been %s in the new version of the dependency\n".formatted(changes.getApiChanges().getInstruction(), changes.getErrorInfo().get(0).getElement(), category) + + " %s %s which has been %s in the new version of the dependency\n".formatted(getConstruct(changes.getBrokenUse().change()), changes.getBrokenUse().source(), category) + " \n" + " *
\n" + " The failure is identified from the logs generated in the build process. \n" + @@ -92,7 +98,7 @@ private String generateElementExplanation(BreakingChange changes, String categor newCandidates(changes) + "
\n"; } else { - return " * %s %s which has been %s in the new version of the dependency\n".formatted(changes.getApiChanges().getInstruction(), changes.getErrorInfo().get(0).getElement(), category) + + return " * %s %s which has been %s in the new version of the dependency\n".formatted(getConstruct(changes.getBrokenUse().change()), changes.getBrokenUse().source(), category) + " \n" + " * The failure is identified from the logs generated in the build process. \n" + " \n" + @@ -103,6 +109,10 @@ private String generateElementExplanation(BreakingChange changes, String categor } } + private String getName(CtElement bc) { + return bc instanceof CtNamedElement ne ? ne.getSimpleName() : bc.getShortRepresentation(); + } + /** * This method translates the category of the change to a human-readable format @@ -112,57 +122,43 @@ private String generateElementExplanation(BreakingChange changes, String categor * net.datafaker.DateAndTime.between(java.sql.Timestamp,java.sql.Timestamp); *

``` * - * @param breakingChange BreakingChange * @return Number of new candidates and their method signature */ - public String newCandidates(BreakingChange breakingChange) { - if (breakingChange.getApiChanges().getNewVariants().isEmpty()) { + public String newCandidates(BrokenChanges brokenChange) { + if (brokenChange.getNewVariants().isEmpty()) { return ""; } - int amountVariants = breakingChange.getApiChanges().getNewVariants().size(); - StringBuilder message = new StringBuilder(); - if (amountVariants > 1) { - message.append(" To address this incompatibility, there are ") - .append(amountVariants) - .append(" alternative options available in the new version of the dependency that can replace the incompatible %s currently used in the client. You can consider substituting the existing %s with one of the following options provided by the new version of the dependency:\n".formatted(breakingChange.getApiChanges().getInstruction().toLowerCase(), breakingChange.getApiChanges().getInstruction().toLowerCase())); - - breakingChange.getApiChanges().getNewVariants().forEach(apiChange -> { - JApiMethod method = ((JApiMethod) apiChange.getBehavior()); - message.append(" ``` java\n") - .append(" ").append(methodName(method)).append(";\n") - .append(" ```\n") - ; - }); - } else { - message.append( - " To resolve this issue, there are alternative options available in the new version of the dependency that can replace the incompatible %s currently used in the client. You can consider substituting the existing %s with one of the following options provided by the new version of the dependency\n".formatted(breakingChange.getApiChanges().getInstruction().toLowerCase(), breakingChange.getApiChanges().getInstruction().toLowerCase())); - breakingChange.getApiChanges().getNewVariants().forEach(apiChange -> { - JApiMethod method = ((JApiMethod) apiChange.getBehavior()); - message.append(" ``` java\n") - .append(" ").append(methodName(method)).append(";\n") - .append(" ```\n"); - }); - } - return message.toString(); - } +// int amountVariants = breakingChange.getApiChanges().getNewVariants().size(); +// StringBuilder message = new StringBuilder(); +// +// if (amountVariants > 1) { +// message.append(" To address this incompatibility, there are ") +// .append(amountVariants) +// .append(" alternative options available in the new version of the dependency that can replace the incompatible %s currently used in the client. You can consider substituting the existing %s with one of the following options provided by the new version of the dependency:\n".formatted(breakingChange.getApiChanges().getInstruction().toLowerCase(), breakingChange.getApiChanges().getInstruction().toLowerCase())); +// +// breakingChange.getApiChanges().getNewVariants().forEach(v -> { +// message.append(" ``` java\n") +// .append(" ").append(v.getReference().variantName()).append(";\n") +// .append(" ```\n") +// ; +// }); +// } else { +// message.append( +// " To resolve this issue, there are alternative options available in the new version of the dependency that can replace the incompatible %s currently used in the client. You can consider substituting the existing %s with one of the following options provided by the new version of the dependency\n".formatted(breakingChange.getApiChanges().getInstruction().toLowerCase(), breakingChange.getApiChanges().getInstruction().toLowerCase())); +// breakingChange.getApiChanges().getNewVariants().forEach(v -> { +// if (v.getReference() != null) +// try { +// message.append(" ``` java\n") +// .append(" ").append(v.getReference().variantName()).append(";\n") +// .append(" ```\n"); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// }); +// } +// return message.toString(); - /** - * This method returns the method name in the format of returnType methodName(params) - * - * @param method JApiMethod - * @return String - */ - private String methodName(JApiMethod method) { - - String[] fullReturnTypeName = method.getReturnType().getNewReturnType().split("\\."); - String returnTypeClass = fullReturnTypeName[fullReturnTypeName.length - 1].equals("n.a.") ? "void" : fullReturnTypeName[fullReturnTypeName.length - 1]; - - String params = method.getParameters().stream().map(jApiParameter -> { - String[] fullParameterTypeName = jApiParameter.getType().split("\\."); - return fullParameterTypeName[fullParameterTypeName.length - 1]; - }).collect(joining(",")); - - return "%s %s(%s)".formatted(returnTypeClass, method.getName(), params); + return ""; } diff --git a/src/main/java/se/kth/explaining/ExplanationTemplate.java b/src/main/java/se/kth/explaining/ExplanationTemplate.java index e162635..dbc1e53 100644 --- a/src/main/java/se/kth/explaining/ExplanationTemplate.java +++ b/src/main/java/se/kth/explaining/ExplanationTemplate.java @@ -1,6 +1,7 @@ package se.kth.explaining; -import se.kth.core.Changes; +import japicmp.model.JApiCompatibilityChangeType; +import se.kth.core.Changes_V2; import java.io.FileWriter; import java.io.IOException; @@ -9,14 +10,17 @@ public abstract class ExplanationTemplate { - protected Changes changes; + protected Changes_V2 changes; protected String fileName; - public ExplanationTemplate(Changes changes, String fileName) { + public ExplanationTemplate(Changes_V2 changes, String fileName) { this.changes = changes; this.fileName = fileName; + } + public ExplanationTemplate(String fileName) { + this.fileName = fileName; } public abstract String getHead(); @@ -27,7 +31,7 @@ public ExplanationTemplate(Changes changes, String fileName) { public String translateCategory(String category) { return switch (category) { - case "[METHOD_REMOVED]": + case "METHOD_REMOVED": case "REMOVED": yield "removed"; case "[METHOD_ADDED]": @@ -37,9 +41,53 @@ public String translateCategory(String category) { }; } + public String getConstruct(JApiCompatibilityChangeType apiUse) { + return switch (apiUse) { + case METHOD_ADDED_TO_INTERFACE, + METHOD_REMOVED, + METHOD_NOW_FINAL, + METHOD_NOW_ABSTRACT, + METHOD_RETURN_TYPE_CHANGED, + METHOD_REMOVED_IN_SUPERCLASS: + yield "Method"; + case FIELD_REMOVED, + FIELD_NOW_FINAL, + FIELD_NO_LONGER_STATIC, + FIELD_NOW_STATIC, + FIELD_LESS_ACCESSIBLE, + ANNOTATION_DEPRECATED_ADDED, + FIELD_TYPE_CHANGED, + FIELD_STATIC_AND_OVERRIDES_STATIC, + FIELD_GENERICS_CHANGED: + yield "Field"; + case CLASS_LESS_ACCESSIBLE, + CLASS_NOW_ABSTRACT, + CLASS_NOW_FINAL, + CLASS_NOW_CHECKED_EXCEPTION, + CLASS_REMOVED, + SUPERCLASS_ADDED, + SUPERCLASS_REMOVED, + CLASS_TYPE_CHANGED, + CLASS_GENERIC_TEMPLATE_CHANGED, + CLASS_GENERIC_TEMPLATE_GENERICS_CHANGED: + yield "Class"; + + case INTERFACE_REMOVED, + INTERFACE_ADDED, + METHOD_ABSTRACT_ADDED_TO_CLASS, + METHOD_NEW_DEFAULT: + yield "Interface"; + case CONSTRUCTOR_REMOVED: + yield "Constructor"; // Constructor + + default: + yield ""; + }; + } + public void generateTemplate() { - if(changes.changes().isEmpty()){ + if (changes.brokenChanges().isEmpty()) { return; } diff --git a/src/main/java/se/kth/explaining/JavaVersionIncompatibilityTemplate.java b/src/main/java/se/kth/explaining/JavaVersionIncompatibilityTemplate.java new file mode 100644 index 0000000..f5ab841 --- /dev/null +++ b/src/main/java/se/kth/explaining/JavaVersionIncompatibilityTemplate.java @@ -0,0 +1,95 @@ +package se.kth.explaining; + +import se.kth.core.Changes_V2; +import se.kth.java_version.JavaVersionFailure; +import se.kth.java_version.JavaVersionIncompatibility; + +import java.io.FileWriter; +import java.io.IOException; +import java.util.Set; + +import static java.lang.Thread.sleep; + +public class JavaVersionIncompatibilityTemplate extends ExplanationTemplate { + + private final JavaVersionFailure javaVersionFailure; + + public JavaVersionIncompatibilityTemplate(Changes_V2 changes, String fileName, JavaVersionFailure javaVersionFailure) { + super(changes, fileName); + this.javaVersionFailure = javaVersionFailure; + } + + @Override + public String getHead() { + return "CI detected that the dependency upgrade from version **%s** to **%s** has failed.". + formatted(changes.oldApiVersion().getName(), changes.newApiVersion().getName()) + + " \nThe new version of the dependency require a different version of Java. \n"; + } + + @Override + public String logLine() { + Set errorMessages = javaVersionFailure.getErrorMessages(); + + String message = "

\n" + + "Here you can find a list of failures identified from the logs generated in the build process\n" + + "\n"; + + StringBuilder listFiles = new StringBuilder(); + + errorMessages.forEach(error -> { + listFiles.append("* > %s \n".formatted(error.replace(System.lineSeparator(), "
"))); + listFiles.append("\n"); + }); + listFiles.append("
\n"); + + return message + listFiles; + } + + @Override + public String brokenElement() { + // Get the incompatibility version + + JavaVersionIncompatibility incompatibility = javaVersionFailure.getIncompatibility(); + + + // Create a string with the incompatibility version + String CI = "CI uses **%s** (class version **%s**). The new version of the dependency requires **%s** (class version **%s**). \n" + .formatted( + incompatibility.mapVersions(incompatibility.shouldBeVersion()), + incompatibility.shouldBeVersion(), + incompatibility.mapVersions(incompatibility.wrongVersion()) + , incompatibility.wrongVersion() + ); + + String files = "To resolve this issue, you need to update the Java version to **%s** in the following files:".formatted(incompatibility.mapVersions(incompatibility.wrongVersion())) + + " \n"; + + StringBuilder listFiles = new StringBuilder(); + + javaVersionFailure.getJavaInWorkflowFiles().forEach((file, versions) -> { + listFiles.append("- `%s`".formatted(file)); + listFiles.append("\n"); + }); + + return CI + "\n" + files + listFiles.toString(); + + } + + @Override + public void generateTemplate() { + + FileWriter markdownFile = null; + try { + markdownFile = new FileWriter(fileName); + markdownFile.write(getHead()); + markdownFile.write("\n"); + markdownFile.write(brokenElement()); + markdownFile.write("\n"); + markdownFile.write(logLine()); + markdownFile.close(); // + sleep(3000); + } catch (IOException | InterruptedException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/se/kth/japianalysis/AbstractBreakingChange.java b/src/main/java/se/kth/japianalysis/AbstractBreakingChange.java new file mode 100644 index 0000000..f2c3b61 --- /dev/null +++ b/src/main/java/se/kth/japianalysis/AbstractBreakingChange.java @@ -0,0 +1,45 @@ +package se.kth.japianalysis; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.declaration.CtElement; +import spoon.reflect.declaration.CtNamedElement; + +import java.util.Objects; + +public abstract class AbstractBreakingChange implements BreakingChange { + protected final JApiCompatibilityChangeType change; + protected CtElement sourceElement; + + protected AbstractBreakingChange(JApiCompatibilityChangeType change) { + this.change = Objects.requireNonNull(change); + } + + @Override + public JApiCompatibilityChangeType getChange() { + return change; + } + + @Override + public CtElement getSourceElement() { + return this.sourceElement; + } + + @Override + public void setSourceElement(CtElement element) { + this.sourceElement = Objects.requireNonNull(element); + } + + + @Override + public String toString() { + return """ + [%s] + Reference: %s + Source: %s %s + """.formatted( + getChange(), + getReference(), + getSourceElement() instanceof CtNamedElement ne ? ne.getSimpleName() : getSourceElement(), + getSourceElement() != null ? getSourceElement().getPosition() : ""); + } +} diff --git a/src/main/java/se/kth/japianalysis/BreakingChange.java b/src/main/java/se/kth/japianalysis/BreakingChange.java new file mode 100644 index 0000000..edf31e4 --- /dev/null +++ b/src/main/java/se/kth/japianalysis/BreakingChange.java @@ -0,0 +1,46 @@ +package se.kth.japianalysis; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import japicmp.model.JApiCompatibilityChangeType; +import se.kth.sponvisitors.BreakingChangeVisitor; +import spoon.reflect.declaration.CtElement; +import spoon.reflect.reference.CtReference; + +/** + * A breaking change is a change in a library's declaration that potentially + * breaks client code. + */ +public interface BreakingChange { + /** + * Returns a {@link CtReference} pointer to the impacted declaration + */ + @JsonSerialize(using = ToStringSerializer.class) + CtReference getReference(); + + /** + * Returns the kind of breaking change, as specified in {@link JApiCompatibilityChangeType} + */ + JApiCompatibilityChangeType getChange(); + + /** + * Returns the {@link BreakingChangeVisitor} responsible for detecting the + * impact this breaking change has on client code + */ + @JsonIgnore + BreakingChangeVisitor getVisitor(); + + /** + * Returns the {@link CtElement} in the library's source code corresponding + * to the breaking change's {@link #getReference()}, if any. + */ + CtElement getSourceElement(); + + /** + * Sets the {@link CtElement} in the library's source code associated with + * the declaration's {@link #getReference()} + */ + void setSourceElement(CtElement element); + +} diff --git a/src/main/java/se/kth/japianalysis/FieldBreakingChange.java b/src/main/java/se/kth/japianalysis/FieldBreakingChange.java new file mode 100644 index 0000000..d917661 --- /dev/null +++ b/src/main/java/se/kth/japianalysis/FieldBreakingChange.java @@ -0,0 +1,58 @@ +package se.kth.japianalysis; + + +import japicmp.model.JApiCompatibilityChangeType; +import japicmp.model.JApiField; +import javassist.NotFoundException; +import se.kth.sponvisitors.*; +import spoon.reflect.reference.CtFieldReference; +import spoon.reflect.reference.CtReference; +import spoon.reflect.reference.CtTypeReference; + +import java.util.Objects; + +/** + * Represents a field-level breaking change + */ +public class FieldBreakingChange extends AbstractBreakingChange { + private final JApiField jApiField; + private final CtFieldReference fRef; + + public FieldBreakingChange(JApiField field, CtFieldReference fRef, JApiCompatibilityChangeType change) { + super(change); + this.jApiField = Objects.requireNonNull(field); + this.fRef = Objects.requireNonNull(fRef); + } + + @Override + public CtReference getReference() { + return fRef; + } + + @Override + public BreakingChangeVisitor getVisitor() { + return + switch (change) { + case FIELD_REMOVED -> new FieldRemovedVisitor(fRef); + case FIELD_NOW_FINAL -> new FieldNowFinalVisitor(fRef); + case FIELD_NO_LONGER_STATIC -> new FieldNoLongerStaticVisitor(fRef); + case FIELD_NOW_STATIC -> new FieldNowStaticVisitor(fRef); + case FIELD_LESS_ACCESSIBLE -> new FieldLessAccessibleVisitor(fRef, jApiField.getAccessModifier().getNewModifier().get()); + case ANNOTATION_DEPRECATED_ADDED -> new AnnotationDeprecatedAddedToFieldVisitor(fRef); + case FIELD_TYPE_CHANGED -> { + try { + // Thanks for the checked exception japi <3 + String newTypeName = jApiField.getNewFieldOptional().get().getType().getName(); + CtTypeReference newType = fRef.getFactory().Type().createReference(newTypeName); + yield new FieldTypeChangedVisitor(fRef, newType); + } catch (NotFoundException e) { + throw new IllegalStateException("japicmp gave us a FIELD_TYPE_CHANGED without the new type of the field"); + } + } + // TODO: To be implemented + case FIELD_STATIC_AND_OVERRIDES_STATIC, FIELD_GENERICS_CHANGED -> null; + default -> + null; + }; + } +} diff --git a/src/main/java/se/kth/japianalysis/JApiCmpDeltaVisitor.java b/src/main/java/se/kth/japianalysis/JApiCmpDeltaVisitor.java new file mode 100644 index 0000000..039ee97 --- /dev/null +++ b/src/main/java/se/kth/japianalysis/JApiCmpDeltaVisitor.java @@ -0,0 +1,65 @@ +package se.kth.japianalysis; + +import japicmp.model.*; +import japicmp.output.Filter; +import japicmp.output.Filter.FilterVisitor; + +import java.util.Iterator; +import java.util.List; + +/** + * japicmp's visitors are awkwardly named and structured. + * JApiCmpDeltaVisitor is just a facade for japicmp's {@link Filter} visitors + * getting rid of the {@literal Iterator<>}s and "filter" names. + * + * @see FilterVisitor + */ +public interface JApiCmpDeltaVisitor { + void visit(JApiClass jApiClass); + void visit(JApiMethod jApiMethod); + void visit(JApiConstructor jApiCons); + void visit(JApiImplementedInterface jApiImpl); + void visit(JApiField jApiField); + void visit(JApiAnnotation jApiAnnotation); + void visit(JApiSuperclass jApiSuper); + + static void visit(List classes, JApiCmpDeltaVisitor visitor) { + Filter.filter(classes, new FilterVisitor() { + @Override + public void visit(Iterator iterator, JApiClass jApiClass) { + visitor.visit(jApiClass); + } + + @Override + public void visit(Iterator iterator, JApiMethod jApiMethod) { + visitor.visit(jApiMethod); + } + + @Override + public void visit(Iterator iterator, JApiConstructor jApiConstructor) { + visitor.visit(jApiConstructor); + } + + @Override + public void visit(Iterator iterator, + JApiImplementedInterface jApiImplementedInterface) { + visitor.visit(jApiImplementedInterface); + } + + @Override + public void visit(Iterator iterator, JApiField jApiField) { + visitor.visit(jApiField); + } + + @Override + public void visit(Iterator iterator, JApiAnnotation jApiAnnotation) { + visitor.visit(jApiAnnotation); + } + + @Override + public void visit(JApiSuperclass jApiSuperclass) { + visitor.visit(jApiSuperclass); + } + }); + } +} diff --git a/src/main/java/se/kth/japianalysis/JApiCmpToSpoonVisitor.java b/src/main/java/se/kth/japianalysis/JApiCmpToSpoonVisitor.java new file mode 100644 index 0000000..2ca0d65 --- /dev/null +++ b/src/main/java/se/kth/japianalysis/JApiCmpToSpoonVisitor.java @@ -0,0 +1,210 @@ +package se.kth.japianalysis; + + +import japicmp.model.*; +import javassist.CtConstructor; +import javassist.CtField; +import javassist.CtMethod; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import spoon.reflect.declaration.CtPackage; +import spoon.reflect.reference.CtExecutableReference; +import spoon.reflect.reference.CtFieldReference; +import spoon.reflect.reference.CtTypeReference; +import util.SpoonHelpers; + +import java.util.*; + +public class JApiCmpToSpoonVisitor implements JApiCmpDeltaVisitor { + private final CtPackage root; + private final List breakingChanges = new ArrayList<>(); + private static final Logger logger = LogManager.getLogger(JApiCmpToSpoonVisitor.class); + + public JApiCmpToSpoonVisitor(CtPackage root) { + this.root = Objects.requireNonNull(root); + } + + public List getBreakingChanges() { + return breakingChanges; + } + + @Override + public void visit(JApiClass cls) { + Collection bcs = cls.getCompatibilityChanges(); + + try { + if (!bcs.isEmpty()) { + CtTypeReference clsRef = root.getFactory().Type().createReference(cls.getFullyQualifiedName()); + + if (clsRef != null && clsRef.getTypeDeclaration() != null) + breakingChanges.addAll( + bcs.stream().map(c -> new TypeBreakingChange(cls, clsRef, c.getType())).toList() + ); + else + logger.warn("Couldn't find Spoon node for class {}", cls); + } + + cls.getInterfaces().forEach(i -> + visit(cls, i) + ); + } catch (NoClassDefFoundError e) { + logger.error(e); + } + } + + @Override + public void visit(JApiMethod m) { + Collection bcs = m.getCompatibilityChanges(); + + if(m.getName().contains("setPort")){ + System.out.println("Method: " + m.getName()); + } + try { + if (!bcs.isEmpty()) { + var oldMethodOpt = m.getOldMethod(); + var newMethodOpt = m.getNewMethod(); + + if (oldMethodOpt.isPresent()) { + String sign = SpoonHelpers.buildSpoonSignature(m); + CtExecutableReference mRef = root.getFactory().Method().createReference(sign); + + if (mRef != null && mRef.getExecutableDeclaration() != null) + breakingChanges.addAll( + bcs.stream().map(c -> new MethodBreakingChange(m, mRef, c.getType())).toList() + ); + else + logger.warn("Couldn't find Spoon node for old method {}", m); + } else if (newMethodOpt.isPresent()) { + // Added method introducing a breaking change => we attach it to its containing class + CtMethod newMethod = newMethodOpt.get(); + + // Unless this is one of these auto-generated Enum methods + if (!newMethod.getName().equals("values") && !newMethod.getName().equals("valueOf")) { + CtTypeReference clsRef = root.getFactory().Type().createReference(m.getjApiClass().getFullyQualifiedName()); + + breakingChanges.addAll( + + bcs.stream().map(c -> new TypeBreakingChange(m.getjApiClass(), clsRef, c.getType())).toList() + ); + } + } + } + } catch (NoClassDefFoundError e) { + logger.error(e); + } + } + + @Override + public void visit(JApiField f) { + Collection bcs = f.getCompatibilityChanges(); + + try { + if (!bcs.isEmpty()) { + CtTypeReference clsRef = root.getFactory().Type().createReference(f.getjApiClass().getFullyQualifiedName()); + + if (clsRef != null && clsRef.getTypeDeclaration() != null) { + var oldFieldOpt = f.getOldFieldOptional(); + if (oldFieldOpt.isPresent()) { + CtField oldField = oldFieldOpt.get(); + CtFieldReference fRef = clsRef.getDeclaredField(oldField.getName()); + + if (fRef != null && fRef.getFieldDeclaration() != null) + breakingChanges.addAll( + bcs.stream().map(c -> new FieldBreakingChange(f, fRef, c.getType())).toList() + ); + else + logger.warn("Couldn't find Spoon node for old field {}", f); + } // else => no oldField + } else + logger.warn("Couldn't find Spoon node for type {}", f.getjApiClass()); + } + } catch (NoClassDefFoundError e) { + logger.error(e); + } + } + + @Override + public void visit(JApiConstructor cons) { + Collection bcs = cons.getCompatibilityChanges(); + + try { + if (!bcs.isEmpty()) { + CtTypeReference clsRef = root.getFactory().Type().createReference(cons.getjApiClass().getFullyQualifiedName()); + var oldConsOpt = cons.getOldConstructor(); + + if (clsRef != null && clsRef.getTypeDeclaration() != null) { + // FIXME: Creating a reference out from a constructor signature + // returns an ExecutableReference with no position. This code + // needs to go at some point. + if (oldConsOpt.isPresent()) { + CtConstructor oldCons = oldConsOpt.get(); + Optional> cRefOpt = + clsRef.getDeclaredExecutables() + .stream() + .filter(c -> SpoonHelpers.matchingSignatures(c, oldCons)) + .findFirst(); + + if (cRefOpt.isPresent()) + breakingChanges.addAll( + bcs.stream().map(c -> new MethodBreakingChange(cons, cRefOpt.get(), c.getType())).toList() + ); + else + logger.warn("Couldn't find constructor {}", cons); + } + } else + logger.warn("Couldn't find Spoon node for type {}", cons.getjApiClass()); + } + } catch (NoClassDefFoundError e) { + logger.error(e); + } + } + + @Override + public void visit(JApiImplementedInterface intf) { + // Using visit(JApiClass jApiClass, JApiImplementedInterface jApiImplementedInterface) + } + + @Override + public void visit(JApiAnnotation ann) { + } + + @Override + public void visit(JApiSuperclass superCls) { + Collection bcs = superCls.getCompatibilityChanges(); + + try { + if (!bcs.isEmpty()) { + JApiClass jApiClass = superCls.getJApiClassOwning(); + CtTypeReference clsRef = root.getFactory().Type().createReference(jApiClass.getFullyQualifiedName()); + + if (clsRef != null && clsRef.getTypeDeclaration() != null) + breakingChanges.addAll( + bcs.stream().map(c -> new TypeBreakingChange(jApiClass, clsRef, c.getType())).toList() + ); + else + logger.warn("Couldn't find Spoon node for type {}", jApiClass); + } + } catch (NoClassDefFoundError e) { + logger.error(e); + } + } + + public void visit(JApiClass cls, JApiImplementedInterface intf) { + Collection bcs = intf.getCompatibilityChanges(); + + try { + if (!bcs.isEmpty()) { + CtTypeReference clsRef = root.getFactory().Type().createReference(cls.getFullyQualifiedName()); + + if (clsRef != null && clsRef.getTypeDeclaration() != null) + breakingChanges.addAll( + bcs.stream().map(c -> new TypeBreakingChange(cls, clsRef, c.getType())).toList() + ); + else + logger.warn("Couldn't find Spoon node for type {}", cls); + } + } catch (NoClassDefFoundError e) { + logger.error(e); + } + } +} diff --git a/src/main/java/se/kth/japianalysis/MethodBreakingChange.java b/src/main/java/se/kth/japianalysis/MethodBreakingChange.java new file mode 100644 index 0000000..ef7f8d4 --- /dev/null +++ b/src/main/java/se/kth/japianalysis/MethodBreakingChange.java @@ -0,0 +1,66 @@ +package se.kth.japianalysis; + +import se.kth.sponvisitors.*; +import japicmp.model.JApiBehavior; +import japicmp.model.JApiCompatibilityChangeType; +import japicmp.model.JApiMethod; +import spoon.reflect.reference.CtExecutableReference; +import spoon.reflect.reference.CtReference; +import spoon.reflect.reference.CtTypeReference; + +import java.util.Objects; + +/** + * Represents a method-level breaking change + */ +public class MethodBreakingChange extends AbstractBreakingChange { + private final JApiBehavior jApiMethod; + private final CtExecutableReference mRef; + + public MethodBreakingChange(JApiBehavior method, CtExecutableReference mRef, JApiCompatibilityChangeType change) { + super(change); + this.jApiMethod = Objects.requireNonNull(method); + this.mRef = Objects.requireNonNull(mRef); + } + + @Override + public CtReference getReference() { + return mRef; + } + + @Override + public BreakingChangeVisitor getVisitor() { + return + switch (change) { + case CONSTRUCTOR_REMOVED -> new ConstructorRemovedVisitor(mRef); + case METHOD_REMOVED -> new MethodRemovedVisitor(mRef); + case METHOD_NOW_FINAL -> new MethodNowFinalVisitor(mRef); + case METHOD_NOW_ABSTRACT -> new MethodNowAbstractVisitor(mRef); + case ANNOTATION_DEPRECATED_ADDED -> new AnnotationDeprecatedAddedToMethodVisitor(mRef); + case METHOD_RETURN_TYPE_CHANGED -> { + String newTypeName = ((JApiMethod) jApiMethod).getReturnType().getNewReturnType(); + CtTypeReference newType = mRef.getFactory().Type().createReference(newTypeName); + yield new MethodReturnTypeChangedVisitor(mRef, newType); + } + // TODO: to be implemented + case METHOD_LESS_ACCESSIBLE, + METHOD_IS_STATIC_AND_OVERRIDES_NOT_STATIC, + METHOD_NOW_STATIC, + METHOD_NO_LONGER_STATIC, + METHOD_ADDED_TO_INTERFACE, + METHOD_NOW_THROWS_CHECKED_EXCEPTION, + METHOD_NO_LONGER_THROWS_CHECKED_EXCEPTION, + METHOD_ABSTRACT_NOW_DEFAULT, + CONSTRUCTOR_LESS_ACCESSIBLE, + METHOD_NOW_VARARGS, + METHOD_NO_LONGER_VARARGS, + METHOD_MOVED_TO_SUPERCLASS, + METHOD_PARAMETER_GENERICS_CHANGED, + METHOD_RETURN_TYPE_GENERICS_CHANGED, + CLASS_GENERIC_TEMPLATE_CHANGED, + CLASS_GENERIC_TEMPLATE_GENERICS_CHANGED -> null; + default -> + null; + }; + } +} diff --git a/src/main/java/se/kth/japianalysis/TypeBreakingChange.java b/src/main/java/se/kth/japianalysis/TypeBreakingChange.java new file mode 100644 index 0000000..65cd584 --- /dev/null +++ b/src/main/java/se/kth/japianalysis/TypeBreakingChange.java @@ -0,0 +1,81 @@ +package se.kth.japianalysis; + + +import japicmp.model.JApiChangeStatus; +import japicmp.model.JApiClass; +import japicmp.model.JApiCompatibilityChangeType; +import japicmp.model.JApiSuperclass; +import se.kth.sponvisitors.*; +import spoon.reflect.reference.CtReference; +import spoon.reflect.reference.CtTypeReference; + +import java.util.Objects; +import java.util.Set; + +import static java.util.stream.Collectors.toSet; + +/** + * Represents a type-level breaking change (class, interface, enum) + */ +public class TypeBreakingChange extends AbstractBreakingChange { + private final JApiClass jApiCls; + private final CtTypeReference clsRef; + + public TypeBreakingChange(JApiClass cls, CtTypeReference clsRef, JApiCompatibilityChangeType change) { + super(change); + this.jApiCls = Objects.requireNonNull(cls); + this.clsRef = Objects.requireNonNull(clsRef); + } + + @Override + public CtReference getReference() { + return clsRef; + } + + @Override + public BreakingChangeVisitor getVisitor() { + return + switch (change) { + case CLASS_LESS_ACCESSIBLE -> + new ClassLessAccessibleVisitor(clsRef, jApiCls.getAccessModifier().getNewModifier().get()); + case CLASS_NOW_ABSTRACT -> new ClassNowAbstractVisitor(clsRef); + case CLASS_NOW_FINAL -> new ClassNowFinalVisitor(clsRef); + case CLASS_NOW_CHECKED_EXCEPTION -> new ClassNowCheckedExceptionVisitor(clsRef); + case ANNOTATION_DEPRECATED_ADDED -> new AnnotationDeprecatedAddedToClassVisitor(clsRef); + case CLASS_REMOVED -> new ClassRemovedVisitor(clsRef); + case METHOD_ADDED_TO_INTERFACE -> new MethodAddedToInterfaceVisitor(clsRef); + case INTERFACE_ADDED -> { + Set> newInterfaces = jApiCls.getInterfaces().stream() + .filter(i -> i.getChangeStatus().equals(JApiChangeStatus.NEW)) + .map(i -> clsRef.getFactory().Type().createReference(i.getFullyQualifiedName())) + .collect(toSet()); + yield new InterfaceAddedVisitor(clsRef, newInterfaces); + } + case INTERFACE_REMOVED -> { + Set> oldInterfaces = jApiCls.getInterfaces().stream() + .filter(i -> i.getChangeStatus().equals(JApiChangeStatus.REMOVED)) + .map(i -> clsRef.getFactory().Type().createReference(i.getFullyQualifiedName())) + .collect(toSet()); + yield new InterfaceRemovedVisitor(clsRef, oldInterfaces); + } + case SUPERCLASS_ADDED -> { + JApiSuperclass superClass = jApiCls.getSuperclass(); + CtTypeReference newSuper = clsRef.getFactory().Type().createReference(superClass.getSuperclassNew()); + yield new SuperclassAddedVisitor(clsRef, newSuper); + } + case SUPERCLASS_REMOVED -> { + JApiSuperclass superClass = jApiCls.getSuperclass(); + CtTypeReference oldSuper = clsRef.getFactory().Type().createReference(superClass.getSuperclassOld()); + yield new SuperclassRemovedVisitor(clsRef, oldSuper); + } + // TODO: To be implemented + case METHOD_ABSTRACT_ADDED_TO_CLASS, + METHOD_NEW_DEFAULT, + CLASS_TYPE_CHANGED, + CLASS_GENERIC_TEMPLATE_CHANGED, + CLASS_GENERIC_TEMPLATE_GENERICS_CHANGED -> null; + default -> + null; + }; + } +} diff --git a/src/main/java/se/kth/java_version/JavaIncompatibilityAnalyzer.java b/src/main/java/se/kth/java_version/JavaIncompatibilityAnalyzer.java new file mode 100644 index 0000000..9a6b4fb --- /dev/null +++ b/src/main/java/se/kth/java_version/JavaIncompatibilityAnalyzer.java @@ -0,0 +1,99 @@ +package se.kth.java_version; + + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class JavaIncompatibilityAnalyzer { + + static String errorPattern = "class file has wrong version (\\d+\\.\\d+), should be (\\d+\\.\\d+)"; + String startLine = "[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin"; + String endLine = "[ERROR] -> [Help 1]"; + + /** + * Parse the log file and extract the error messages + * + * @param logFilePath The path to the log file + * @return A set of error messages + * @throws IOException + */ + public Set parseErrors(String logFilePath) throws IOException { + Set errors = new HashSet<>(); + BufferedReader reader = new BufferedReader(new FileReader(logFilePath)); + StringBuilder currentError = null; + String line; + + // Define the regular expression pattern to find error lines + Pattern errorPattern = Pattern.compile("\\[ERROR\\] /[\\w\\-/]+\\.java"); + boolean parseStart = false; + while ((line = reader.readLine()) != null) { + if (line.startsWith(endLine)) { + break; + } + if (line.startsWith(startLine)) { + parseStart = true; + } + if (parseStart) { + + + Matcher matcher = errorPattern.matcher(line); + if (line.startsWith("[ERROR]") && matcher.find()) { + if (currentError != null) { + errors.add(currentError.toString().trim()); + } + currentError = new StringBuilder(); + currentError.append(line); + } else if (currentError != null && !line.trim().isEmpty() && line.contains(" ")) { + // Line with more than one space + currentError.append(System.lineSeparator()).append(line); + } else { + // Line that doesn't follow the pattern + if (currentError != null) { + errors.add(currentError.toString().trim()); + currentError = null; + } + } + } + + } + + if (currentError != null) { + errors.add(currentError.toString().trim()); + } + + reader.close(); + return errors; + } + + public static Map> extractVersionErrors(Set errors) { + Map> versionErrors = new HashMap<>(); + + Pattern versionPattern = Pattern.compile("class file has wrong version (\\d+\\.\\d+), should be (\\d+\\.\\d+)"); + + for (String error : errors) { + Matcher versionMatcher = versionPattern.matcher(error); + while (versionMatcher.find()) { + JavaVersionIncompatibility j = new JavaVersionIncompatibility(versionMatcher.group(1), versionMatcher.group(2), error); + + if (versionErrors.containsKey(j)) { + versionErrors.get(j).add(error); + } else { + Set errorSet = new HashSet<>(); + errorSet.add(error); + versionErrors.put(j, errorSet); + } + } + } + return versionErrors; + } +} + + + diff --git a/src/main/java/se/kth/java_version/JavaVersion.java b/src/main/java/se/kth/java_version/JavaVersion.java new file mode 100644 index 0000000..c6f1c87 --- /dev/null +++ b/src/main/java/se/kth/java_version/JavaVersion.java @@ -0,0 +1,49 @@ +package se.kth.java_version; + +import se.kth.core.Changes_V2; +import se.kth.explaining.ExplanationTemplate; +import se.kth.explaining.JavaVersionIncompatibilityTemplate; + +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class JavaVersion { + + + public static void generateVersionExplanation(Changes_V2 changes, String projectPath, String logFile) throws IOException { + VersionFinder versionFinder = new VersionFinder(); + Map> javaVersions = versionFinder.findJavaVersions(projectPath); + + JavaIncompatibilityAnalyzer javaIncompatibilityAnalyzer = new JavaIncompatibilityAnalyzer(); + Set errorList = javaIncompatibilityAnalyzer.parseErrors(logFile); + Map> versionFailures = JavaIncompatibilityAnalyzer.extractVersionErrors(errorList); + + + errorList.forEach( + error -> { + System.out.println("Error:"); + System.out.println(error.contains(System.lineSeparator())); + System.out.println(error.replace(System.lineSeparator(), "\n")); + System.out.println("----"); + } + ); + + JavaVersionFailure javaVersionFailure = new JavaVersionFailure(); + javaVersionFailure.setDiffVersionErrors(versionFailures); + javaVersionFailure.setErrorMessages(errorList); + javaVersionFailure.setJavaInWorkflowFiles(javaVersions); + + javaVersionFailure.setIncompatibilityVersion(); + + + ExplanationTemplate explanationTemplate = new JavaVersionIncompatibilityTemplate( + changes, + "Explanations/JavaVersionIncompatibility/JavaVersionIncompatibility.md", + javaVersionFailure + ); + + explanationTemplate.generateTemplate(); + } +} diff --git a/src/main/java/se/kth/java_version/JavaVersionFailure.java b/src/main/java/se/kth/java_version/JavaVersionFailure.java new file mode 100644 index 0000000..655ec79 --- /dev/null +++ b/src/main/java/se/kth/java_version/JavaVersionFailure.java @@ -0,0 +1,40 @@ +package se.kth.java_version; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +@lombok.Getter +@lombok.Setter +public class JavaVersionFailure { + + // Both Java version incompatibility + private JavaVersionIncompatibility incompatibility; + //list of error messages for each java version incompatibility + Map> diffVersionErrors; + //list of java versions in the workflow files + private Map> javaInWorkflowFiles; + + private Set errorMessages; + + public JavaVersionFailure() { + } + + public JavaVersionFailure(JavaVersionIncompatibility incompatibility, Map> javaInWorkflowFiles) { + this.incompatibility = incompatibility; + this.javaInWorkflowFiles = javaInWorkflowFiles; + } + + + public void setIncompatibilityVersion() { + diffVersionErrors.forEach((incompatibility, errors) -> { + if (incompatibility == null) { + return; + } + this.incompatibility = incompatibility; + return; + }); + + + } +} diff --git a/src/main/java/se/kth/java_version/JavaVersionIncompatibility.java b/src/main/java/se/kth/java_version/JavaVersionIncompatibility.java new file mode 100644 index 0000000..04ef4ce --- /dev/null +++ b/src/main/java/se/kth/java_version/JavaVersionIncompatibility.java @@ -0,0 +1,66 @@ +package se.kth.java_version; + +public record JavaVersionIncompatibility( + String wrongVersion, + String shouldBeVersion, + String errorMessage +) { + + public JavaVersionIncompatibility { + if (wrongVersion == null || shouldBeVersion == null) { + throw new IllegalArgumentException("Version cannot be null"); + } + } + + public String toString() { + return "Expected version: " + wrongVersion + ", Actual version: " + shouldBeVersion; + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null || getClass() != obj.getClass()) { + return false; + } + JavaVersionIncompatibility other = (JavaVersionIncompatibility) obj; + return wrongVersion.equals(other.wrongVersion) && shouldBeVersion.equals(other.shouldBeVersion); + } + + public int hashCode() { + return wrongVersion.hashCode() + shouldBeVersion.hashCode(); + } + + + public String mapVersions(String classVersion) { + return switch (classVersion) { + case "45.0" -> "Java 1.0"; + case "45.3" -> "Java 1.1"; + case "46.0" -> "Java 1.2"; + case "47.0" -> "Java 1.3"; + case "48.0" -> "Java 1.4"; + case "49.0" -> "Java 5"; + case "50.0" -> "Java 6"; + case "51.0" -> "Java 7"; + case "52.0" -> "Java 8"; + case "53.0" -> "Java 9"; + case "54.0" -> "Java 10"; + case "55.0" -> "Java 11"; + case "56.0" -> "Java 12"; + case "57.0" -> "Java 13"; + case "58.0" -> "Java 14"; + case "59.0" -> "Java 15"; + case "60.0" -> "Java 16"; + case "61.0" -> "Java 17"; + case "62.0" -> "Java 18"; + case "63.0" -> "Java 19"; + case "64.0" -> "Java 20"; + case "65.0" -> "Java 21"; + case "66.0" -> "Java 22"; + case "67.0" -> "Java 23"; + default -> "Unknown version"; + }; + } +} + + diff --git a/src/main/java/se/kth/java_version/LogFileAnalyzer.java b/src/main/java/se/kth/java_version/LogFileAnalyzer.java new file mode 100644 index 0000000..65b2c9d --- /dev/null +++ b/src/main/java/se/kth/java_version/LogFileAnalyzer.java @@ -0,0 +1,153 @@ +package se.kth.java_version; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static se.kth.java_version.JavaIncompatibilityAnalyzer.extractVersionErrors; + +public class LogFileAnalyzer { + + public static void main(String[] args) throws IOException { + String logFilePath = "/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/11be71ab8713fe987785e9e25e4f3e410e709ab9/camunda-platform-7-mockito/11be71ab8713fe987785e9e25e4f3e410e709ab9.log"; + + JavaIncompatibilityAnalyzer analyzer = new JavaIncompatibilityAnalyzer(); + Set errorList = analyzer.parseErrors(logFilePath); + + for (String error : errorList) { + System.out.println("Error:"); + System.out.println(error); + System.out.println("----"); + } + + Set errorsSet = new HashSet<>(); + Map> versionErrors = extractVersionErrors(errorList); + for (Map.Entry> entry : versionErrors.entrySet()) { + System.out.println("Java version incompatibility:"); + System.out.println(entry.getKey()); + System.out.println("Errors:"); + for (String error : entry.getValue()) { + System.out.println(error); + } + System.out.println("----"); + } + +// extracted(logFilePath); +// +// Set errors = extractErrors(logFilePath); +// System.out.println(errors.size() + " errors found in the log file."); + +// Map> javaVersions = VersionFinder.findJavaVersions("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/11be71ab8713fe987785e9e25e4f3e410e709ab9/camunda-platform-7-mockito"); +// +// for (Map.Entry> entry : javaVersions.entrySet()) { +// System.out.println("File: " + entry.getKey()); +// System.out.println("Java versions: " + entry.getValue()); +// } + + } + + + public static Set extractErrors(String logFilePath) { + Set errorMessages = new HashSet<>(); + StringBuilder logContent = new StringBuilder(); + + try (BufferedReader br = new BufferedReader(new FileReader(logFilePath))) { + String line; + while ((line = br.readLine()) != null) { + logContent.append(line).append(System.lineSeparator()); + } + } catch (IOException e) { + e.printStackTrace(); + } + + // Expresión regular para capturar bloques de error completos + Pattern errorPattern = Pattern.compile("(?s)(\\[ERROR\\].*?)(?=(\\[ERROR\\]|\\z))"); + Matcher matcher = errorPattern.matcher(logContent.toString()); + + while (matcher.find()) { + errorMessages.add(matcher.group(1).trim()); + } + + return errorMessages; + } + + + private static void extracted(String logFilePath) { + String errorPattern = "class file has wrong version (\\d+\\.\\d+), should be (\\d+\\.\\d+)"; + Pattern pattern = Pattern.compile(errorPattern); + + // Patrón para identificar el inicio de una nueva entrada de log + String newEntryPattern = "^\\[ERROR\\]"; // Ajusta este patrón según el formato de tu archivo de log + Pattern newEntry = Pattern.compile(newEntryPattern); + + Set errors = new HashSet<>(); + + // Leer el archivo de log y buscar el patrón + try (BufferedReader br = new BufferedReader(new FileReader(logFilePath))) { + String line; + boolean errorFound = false; + StringBuilder errorInfo = new StringBuilder(); + Queue errorLines = new LinkedList<>(); + + while ((line = br.readLine()) != null) { + if (newEntry.matcher(line).find()) { + // Si encontramos una nueva entrada de error, reiniciamos la cola + errorLines.clear(); + if (errorFound) { + // Si ya se encontró un error y se encuentra una nueva entrada, se guarda el error y se reinicia el proceso + errors.add(errorInfo.toString()); + errorInfo.setLength(0); // Limpiar errorInfo para el próximo error + errorFound = false; + } + } + + if (!errorFound) { + Matcher matcher = pattern.matcher(line); + if (matcher.find()) { + errorFound = true; + // Extraer los números de las versiones + String wrongVersion = matcher.group(1); + String expectedVersion = matcher.group(2); + System.out.println("La línea de error se encontró en el archivo de log."); + System.out.println("Versión incorrecta: " + wrongVersion); + System.out.println("Versión esperada: " + expectedVersion); + // Agregar las líneas anteriores al errorInfo + for (String errorLine : errorLines) { + errorInfo.append(errorLine).append(System.lineSeparator()); + } + errorInfo.append(line).append(System.lineSeparator()); + } else { + // Agregar la línea actual a la cola + errorLines.add(line); + } + } else { + errorInfo.append(line).append(System.lineSeparator()); + } + } + + // Agregar el último error encontrado si existe + if (errorFound) { + errors.add(errorInfo.toString()); + } + + if (!errors.isEmpty()) { + System.out.println("Se encontraron las siguientes incompatibilidades de versión de Java en el archivo de log:"); + for (String error : errors) { + System.out.println("Información completa del error:"); + System.out.println(error); + } + } else { + System.out.println("No se encontraron incompatibilidades de versión de Java en el archivo de log."); + } + + } catch (IOException e) { + e.printStackTrace(); + } + } + + +} + diff --git a/src/main/java/se/kth/java_version/Main.java b/src/main/java/se/kth/java_version/Main.java new file mode 100644 index 0000000..a746ebe --- /dev/null +++ b/src/main/java/se/kth/java_version/Main.java @@ -0,0 +1,28 @@ +package se.kth.java_version; + +import se.kth.breaking_changes.ApiMetadata; +import se.kth.core.Changes_V2; + +import java.io.IOException; +import java.nio.file.Path; + +import static se.kth.java_version.JavaVersion.generateVersionExplanation; + + +public class Main { + + public static void main(String[] args) throws IOException { + + String projectPath = "/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/11be71ab8713fe987785e9e25e4f3e410e709ab9/camunda-platform-7-mockito"; + String logFile = "/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/bad55510363bde900a60f13ecc744e0c244397d4/micronaut-openapi-codegen/bad55510363bde900a60f13ecc744e0c244397d4.log"; + Changes_V2 changes = new Changes_V2( + new ApiMetadata("1.0.0", Path.of("path/to/old/Oldapi.jar")), + new ApiMetadata("1.0.1", Path.of("path/to/new/Newapi.jar") + )); + generateVersionExplanation(changes, projectPath, logFile); + + + } + + +} diff --git a/src/main/java/se/kth/java_version/VersionFinder.java b/src/main/java/se/kth/java_version/VersionFinder.java new file mode 100644 index 0000000..47abd9a --- /dev/null +++ b/src/main/java/se/kth/java_version/VersionFinder.java @@ -0,0 +1,129 @@ +package se.kth.java_version; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class VersionFinder { + + + public Map> findJavaVersions(String projectPath) { + Map> javaVersions = new HashMap<>(); + File projectFolder = new File(projectPath); + if (!projectFolder.exists() || !projectFolder.isDirectory()) { + // + System.out.println("Folder not exist " + projectPath + " or is not a directory."); + return null; + } + searchJavaVersionsInFolder(projectFolder, javaVersions); + return javaVersions; + } + + private void searchJavaVersionsInFolder(File folder, Map> javaVersions) { + File[] files = folder.listFiles(); + if (files == null) { + return; + } + + for (File file : files) { + if (file.isDirectory()) { + searchJavaVersionsInFolder(file, javaVersions); + } else if (file.getName().endsWith(".yml") || file.getName().contains((".yaml"))) { + List versions = getJavaVersionsFromFile(file); + if (!versions.isEmpty()) { + javaVersions.put(file.getName(), versions); + } + } + } + } + + + private List getJavaVersionsFromFile(File file) { + List versions = new ArrayList<>(); + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + String line; + while ((line = reader.readLine()) != null) { + // Patter to search example "java: [ '8', '17', '18' ]" + Pattern pattern = Pattern.compile("java:\\s*\\[\\s*'(\\d+)'(?:\\s*,\\s*'\\d+')*\\s*]"); + Matcher matcher = pattern.matcher(line); + while (matcher.find()) { + String match = matcher.group(0); // Get the complete string of the pattern + Pattern numberPattern = Pattern.compile("'(\\d+)'"); // Pattern to extract the numbers + Matcher numberMatcher = numberPattern.matcher(match); + while (numberMatcher.find()) { + int number = Integer.parseInt(numberMatcher.group(1)); // Get the number + if (!versions.contains(number)) { + versions.add(number); + } + } + } + + pattern = Pattern.compile("java:\\s*\\[\\s*(\\d+)(?:\\s*,\\s*(\\d+))*\\s*]"); + matcher = pattern.matcher(line); + while (matcher.find()) { + String match = matcher.group(0); // Get the complete string of the pattern + Pattern numberPattern = Pattern.compile("(\\d+)"); // Pattern to extract the numbers + Matcher numberMatcher = numberPattern.matcher(match); + while (numberMatcher.find()) { + int number = Integer.parseInt(numberMatcher.group(1)); // Get the number + if (!versions.contains(number)) { + versions.add(number); + } + } + } + + pattern = Pattern.compile("java_version:\\s*\\[\\s*(\\d+)(?:\\s*,\\s*(\\d+))*\\s*]"); + + matcher = pattern.matcher(line); + while (matcher.find()) { + String match = matcher.group(0); // Get the complete string of the pattern + Pattern numberPattern = Pattern.compile("(\\d+)"); // Pattern to extract the numbers + Matcher numberMatcher = numberPattern.matcher(match); + + while (numberMatcher.find()) { + int number = Integer.parseInt(numberMatcher.group(1)); // Get the number + + if (!versions.contains(number)) { + versions.add(number); + } + } + } + + // Pattern to search example "java-version: 8" + Pattern pattern2 = Pattern.compile("java-version:\\s*(\\d+)"); + Matcher matcher2 = pattern2.matcher(line); + while (matcher2.find()) { + if (!versions.contains(Integer.parseInt(matcher2.group(1)))) { + versions.add(Integer.parseInt(matcher2.group(1))); + } + } + + Pattern pattern3 = Pattern.compile("java-version:\\s*'?(\\d+)'?"); + Matcher matcher3 = pattern3.matcher(line); + while (matcher3.find()) { + if (!versions.contains(Integer.parseInt(matcher3.group(1)))) { + versions.add(Integer.parseInt(matcher3.group(1))); + } + } + Pattern pattern4 = Pattern.compile("java:\\s*\\[\\s*'?(\\d+)'?\\s*,?\\s*'?\\s*]"); + Matcher matcher4 = pattern4.matcher(line); + while (matcher4.find()) { + if (!versions.contains(Integer.parseInt(matcher4.group(1)))) { + versions.add(Integer.parseInt(matcher4.group(1))); + } + } + + } + } catch (IOException e) { + System.out.println("Fail to read file " + file.getAbsolutePath() + ": " + e.getMessage()); + } + return versions; + } +} diff --git a/src/main/java/se/kth/log_Analyzer/ErrorInfo.java b/src/main/java/se/kth/log_Analyzer/ErrorInfo.java new file mode 100644 index 0000000..1bd53f3 --- /dev/null +++ b/src/main/java/se/kth/log_Analyzer/ErrorInfo.java @@ -0,0 +1,57 @@ +package se.kth.log_Analyzer; + +import java.util.Objects; + +@lombok.Getter +@lombok.Setter +public class ErrorInfo { + + String clientLinePosition; + String clientFilePath; + String errorMessage; + String additionalInfo; + String clientLineContent; + String clientGithubLink; + int errorLinePositionInFile; + String errorLogGithubLink; + + public ErrorInfo(String clientLinePosition, String clientFilePath, String errorMessage, int errorLinePositionInFile,String additionalInfo) { + this.clientLinePosition = clientLinePosition; + this.clientFilePath = clientFilePath; + this.errorMessage = errorMessage; + this.clientLineContent = ""; + this.additionalInfo = additionalInfo; + this.errorLinePositionInFile = errorLinePositionInFile; + + } + + public ErrorInfo(String clientLinePosition, String clientFilePath, String errorMessage, String clientLineContent) { + this.clientLinePosition = clientLinePosition; + this.clientFilePath = clientFilePath; + this.errorMessage = errorMessage; + this.clientLineContent = clientLineContent; + } + + public ErrorInfo(String clientLinePosition, String clientFilePath, String errorMessage, String clientLineContent, String clientGithubLink, int errorLinePositionInFile) { + this.clientLinePosition = clientLinePosition; + this.clientFilePath = clientFilePath; + this.errorMessage = errorMessage; + this.clientLineContent = clientLineContent; + this.clientGithubLink = clientGithubLink; + this.errorLinePositionInFile = errorLinePositionInFile; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + ErrorInfo errorInfo = (ErrorInfo) o; + + if (!Objects.equals(clientLinePosition, errorInfo.clientLinePosition)) + return false; + if (!Objects.equals(clientFilePath, errorInfo.clientFilePath)) + return false; + return Objects.equals(errorMessage, errorInfo.errorMessage); + } +} diff --git a/src/main/java/se/kth/log_Analyzer/FailureCategory.java b/src/main/java/se/kth/log_Analyzer/FailureCategory.java new file mode 100644 index 0000000..a9b6e3e --- /dev/null +++ b/src/main/java/se/kth/log_Analyzer/FailureCategory.java @@ -0,0 +1,31 @@ +package se.kth.log_Analyzer; + +public enum FailureCategory { + + + /** + * There were unknown failures after updating the dependency, but none in the previous commit. + */ + UNKNOWN_FAILURE, + /** + * There were failures when wError options is enabled. + */ + WERROR_FAILURE, + /** + * There were test failures after updating the dependency. + */ + TEST_FAILURE, + /** + * The compilation failed after updating the dependency, the new version of the dependency new different java version. + */ + JAVA_VERSION_FAILURE, + /** + * The compilation failed after updating the dependency, for code used from indirect dependency . + */ + TRANSITIVE_DEPENDENCY_FAILURE, + /** + * The compilation failed after updating the dependency + */ + COMPILATION_FAILURE, +} + diff --git a/src/main/java/se/kth/log_Analyzer/Main.java b/src/main/java/se/kth/log_Analyzer/Main.java index cec1e21..9f1c076 100644 --- a/src/main/java/se/kth/log_Analyzer/Main.java +++ b/src/main/java/se/kth/log_Analyzer/Main.java @@ -5,13 +5,21 @@ public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); - - MavenLogAnalyzer mavenLog = new MavenLogAnalyzer(new File("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/0abf7148300f40a1da0538ab060552bca4a2f1d8.log")); + MavenLogAnalyzer mavenLog = new MavenLogAnalyzer(new File("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/10d7545c5771b03dd9f6122bd5973a759eb2cd03/lithium/10d7545c5771b03dd9f6122bd5973a759eb2cd03.log")); try { - mavenLog.analyzeCompilationErrors(); + MavenErrorLog mavenErrorLog = mavenLog.analyzeCompilationErrors(); + + mavenErrorLog.getErrorInfo().forEach((k, v) -> { + v.forEach(errorInfo -> { + System.out.println("Line: " + errorInfo.getClientLinePosition()); + System.out.println("Error: " + errorInfo.getErrorMessage()); + System.out.println(errorInfo.getAdditionalInfo()); + System.out.println("***"); + }); + }); + } catch (IOException e) { throw new RuntimeException(e); } diff --git a/src/main/java/se/kth/log_Analyzer/MavenErrorLog.java b/src/main/java/se/kth/log_Analyzer/MavenErrorLog.java index b503528..33309a8 100644 --- a/src/main/java/se/kth/log_Analyzer/MavenErrorLog.java +++ b/src/main/java/se/kth/log_Analyzer/MavenErrorLog.java @@ -29,55 +29,4 @@ public void addErrorInfo(String currentPath, ErrorInfo errorInfo) { } } - @lombok.Getter - @lombok.Setter - public static class ErrorInfo { - - String clientLinePosition; - String clientFilePath; - String errorMessage; - String clientLineContent; - String clientGithubLink; - int errorLinePositionInFile; - String errorLogGithubLink; - - public ErrorInfo(String clientLinePosition, String clientFilePath, String errorMessage, int errorLinePositionInFile) { - this.clientLinePosition = clientLinePosition; - this.clientFilePath = clientFilePath; - this.errorMessage = errorMessage; - this.clientLineContent = ""; - this.errorLinePositionInFile = errorLinePositionInFile; - - } - - public ErrorInfo(String clientLinePosition, String clientFilePath, String errorMessage, String clientLineContent) { - this.clientLinePosition = clientLinePosition; - this.clientFilePath = clientFilePath; - this.errorMessage = errorMessage; - this.clientLineContent = clientLineContent; - } - - public ErrorInfo(String clientLinePosition, String clientFilePath, String errorMessage, String clientLineContent, String clientGithubLink, int errorLinePositionInFile) { - this.clientLinePosition = clientLinePosition; - this.clientFilePath = clientFilePath; - this.errorMessage = errorMessage; - this.clientLineContent = clientLineContent; - this.clientGithubLink = clientGithubLink; - this.errorLinePositionInFile = errorLinePositionInFile; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - ErrorInfo errorInfo = (ErrorInfo) o; - - if (!Objects.equals(clientLinePosition, errorInfo.clientLinePosition)) - return false; - if (!Objects.equals(clientFilePath, errorInfo.clientFilePath)) - return false; - return Objects.equals(errorMessage, errorInfo.errorMessage); - } - } } \ No newline at end of file diff --git a/src/main/java/se/kth/log_Analyzer/MavenLogAnalyzer.java b/src/main/java/se/kth/log_Analyzer/MavenLogAnalyzer.java index 7c7ac96..bdc0d1b 100644 --- a/src/main/java/se/kth/log_Analyzer/MavenLogAnalyzer.java +++ b/src/main/java/se/kth/log_Analyzer/MavenLogAnalyzer.java @@ -10,8 +10,25 @@ public class MavenLogAnalyzer { - private final File logFile; + public static final Map FAILURE_PATTERNS = new HashMap<>(); + + + static { + FAILURE_PATTERNS.put(Pattern.compile("(?i)(COMPILATION ERROR|Failed to execute goal io\\.takari\\.maven\\.plugins:takari-lifecycle-plugin.*?:compile)"), + FailureCategory.COMPILATION_FAILURE); + FAILURE_PATTERNS.put(Pattern.compile("(?i)(\\[ERROR] Tests run:|There are test failures|There were test failures|" + + "Failed to execute goal org\\.apache\\.maven\\.plugins:maven-surefire-plugin)"), + FailureCategory.TEST_FAILURE); + FAILURE_PATTERNS.put(Pattern.compile("(?i)(warnings found and -Werror specified)"), + FailureCategory.WERROR_FAILURE); + FAILURE_PATTERNS.put(Pattern.compile("(?i)(class file has wrong version (\\d+\\.\\d+), should be (\\d+\\.\\d+))"), + FailureCategory.JAVA_VERSION_FAILURE); + } + + // Path to the log file + private final File logFile; + // URL of the project private String projectURL; public MavenLogAnalyzer(File logFile) { @@ -56,7 +73,7 @@ private MavenErrorLog extractLineNumbersWithPaths(String logFilePath) throws IOE } if (currentPath != null) { - MavenErrorLog.ErrorInfo errorInfo = new MavenErrorLog.ErrorInfo(String.valueOf(lineNumber), currentPath, line, lineNumberInFile); + ErrorInfo errorInfo = new ErrorInfo(String.valueOf(lineNumber), currentPath, line, lineNumberInFile,extractAdditionalInfo(reader)); errorInfo.setErrorLogGithubLink(generateLogsLink(projectURL, 4, lineNumberInFile)); mavenErrorLogs.addErrorInfo(currentPath, errorInfo); } @@ -69,6 +86,38 @@ private MavenErrorLog extractLineNumbersWithPaths(String logFilePath) throws IOE return mavenErrorLogs; } + /** + * Extracts additional information from the log file + * Reused from @bumper + * @param fromReader BufferedReader object + * @return Additional information + */ + public static String extractAdditionalInfo(BufferedReader fromReader) { + String line = null; + int charRead = -1; + + try { + // Read first char of new line and reset the buffer + fromReader.mark(1); + charRead = fromReader.read(); + fromReader.reset(); + + if (((char) charRead) == ' ') { + line = fromReader.readLine(); + if (line == null) { + return ""; + } else { + return line + "\n" + extractAdditionalInfo(fromReader); + } + } else { + return ""; + } + } catch (IOException e) { + e.printStackTrace(); + return ""; + } + } + private String generateLogsLink(String projectURL, int step, int lineNumber) { return "https://github.com/chains-project/breaking-good/actions/runs/8110103454/job/22166641300#step:%d:%d".formatted(step, lineNumber); } diff --git a/src/main/java/se/kth/sponvisitors/APIUse.java b/src/main/java/se/kth/sponvisitors/APIUse.java new file mode 100644 index 0000000..1cedf55 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/APIUse.java @@ -0,0 +1,22 @@ +package se.kth.sponvisitors; + +/** + * Represents how a particular element in client code brokenChanges a declaration impacted by a breaking change, e.g.: + *
    + *
  • {@code obj.removedMethod()} brokenChanges {@code removedMethod()} through {@code METHOD_INVOCATION}
  • + *
  • {@code throw new RemovedException()} brokenChanges {@code RemovedException} through {@code THROWS}
  • + *
  • etc.
  • + *
+ */ +public enum APIUse { + ANNOTATION, + EXTENDS, + FIELD_ACCESS, + IMPLEMENTS, + IMPORT, + INSTANTIATION, + METHOD_INVOCATION, + METHOD_OVERRIDE, + THROWS, + TYPE_DEPENDENCY +} diff --git a/src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToClassVisitor.java b/src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToClassVisitor.java new file mode 100644 index 0000000..3f02701 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToClassVisitor.java @@ -0,0 +1,13 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtTypeReference; + +/** + * FIXME: the current implementation only targets @Deprecated types + */ +public class AnnotationDeprecatedAddedToClassVisitor extends TypeReferenceVisitor { + public AnnotationDeprecatedAddedToClassVisitor(CtTypeReference clsRef) { + super(clsRef, JApiCompatibilityChangeType.ANNOTATION_DEPRECATED_ADDED); + } +} diff --git a/src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToFieldVisitor.java b/src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToFieldVisitor.java new file mode 100644 index 0000000..012b085 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToFieldVisitor.java @@ -0,0 +1,27 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtFieldReference; + +/** + * Visitor in charge of gathering field deprecated issues in client code. + *

+ * The visitor detects the following cases: + *

    + *
  • Any reference to the now-deprecated field. Example: + *
    + *      var a = field;
    + *      self.field = 10;
    + *      
    + *
+ */ +public class AnnotationDeprecatedAddedToFieldVisitor extends FieldReferenceVisitor { + /** + * Creates a {@link AnnotationDeprecatedAddedToFieldVisitor} instance. + * + * @param fRef the now-deprecated field + */ + public AnnotationDeprecatedAddedToFieldVisitor(CtFieldReference fRef) { + super(fRef, JApiCompatibilityChangeType.ANNOTATION_DEPRECATED_ADDED); + } +} diff --git a/src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToMethodVisitor.java b/src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToMethodVisitor.java new file mode 100644 index 0000000..e987173 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/AnnotationDeprecatedAddedToMethodVisitor.java @@ -0,0 +1,31 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtExecutableReference; + +/** + * Visitor in charge of gathering method deprecated issues in client code. + *

+ * The visitor detects the following cases: + *

    + *
  • Invocations to the now-deprecated method. Example: + *
    + *      var a = method();
    + *      
    + *
  • Methods overriding the now-deprecated method. Example: + *
    + *      @Override
    + *      public void method() { return; }
    + *      
    + *
+ */ +public class AnnotationDeprecatedAddedToMethodVisitor extends MethodReferenceVisitor { + /** + * Creates a {@link AnnotationDeprecatedAddedToMethodVisitor} instance. + * + * @param mRef the now-deprecated method + */ + public AnnotationDeprecatedAddedToMethodVisitor(CtExecutableReference mRef) { + super(mRef, JApiCompatibilityChangeType.ANNOTATION_DEPRECATED_ADDED); + } +} diff --git a/src/main/java/se/kth/sponvisitors/BreakingChangeVisitor.java b/src/main/java/se/kth/sponvisitors/BreakingChangeVisitor.java new file mode 100644 index 0000000..81e3619 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/BreakingChangeVisitor.java @@ -0,0 +1,102 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.cu.position.NoSourcePosition; +import spoon.reflect.declaration.CtElement; +import spoon.reflect.path.CtRole; +import spoon.reflect.reference.CtReference; +import spoon.reflect.visitor.CtAbstractVisitor; +import util.SpoonHelpers; + +import java.util.HashSet; +import java.util.Set; + +/** + * Abstract visitor in charge of gathering broken brokenChanges in client code. + */ +public abstract class BreakingChangeVisitor extends CtAbstractVisitor { + /** + * Kind of breaking change as defined by JApiCmp. + */ + protected final JApiCompatibilityChangeType change; + + /** + * Set of detected broken brokenChanges. + */ + protected final Set brokenUses = new HashSet<>(); + + /** + * Creates a BreakingChangeVisitor instance. + *

+ * The constructor first invokes the constructor of the superclass. + * + * @param change kind of breaking change as defined by JApiCmp + * @see + * spoon.reflect.visitor.CtAbstractVisitor + */ + protected BreakingChangeVisitor(JApiCompatibilityChangeType change) { + super(); + this.change = change; + } + + /** + * Returns the set of detected broken brokenChanges. + * + * @return set of broken brokenChanges + */ + public Set getBrokenUses() { + return brokenUses; + } + + /** + * Add a new broken use to the set of detected broken brokenChanges. + * + * @param element client code impacted by the breaking change + * @param usedApiElement API declaration used by the impacted client code + * @param source API declaration that introduced the breaking change + * @param use type of use of the API declaration + */ + protected void brokenUse(CtElement element, CtElement usedApiElement, CtReference source, APIUse use) { + // In case we don't get a source code position for the element, we default + // to the first parent that can be located + CtElement locatableElement = + element.getPosition() instanceof NoSourcePosition ? + SpoonHelpers.firstLocatableParent(element) : + element; + + BrokenUse d = new BrokenUse( + locatableElement, + usedApiElement, + source, + use, + change + ); + + brokenUses.add(d); + } + + /** + * Identifies the type of use of the API declaration given a Spoon element. + * + * @param element Spoon element whose use type needs to be identified + * @return type of use of the API element + * @see + * CtElement + */ + public APIUse getAPIUseByRole(CtElement element) { + CtRole role = element.getRoleInParent(); + return switch (role) { + // FIXME: try to distinguish between regular access to a type, + // and access to a type by instantiation (new) + case ACCESSED_TYPE, ARGUMENT_TYPE, BOUNDING_TYPE, CAST, DECLARING_TYPE, + MULTI_TYPE, THROWN, TYPE, TYPE_ARGUMENT, TYPE_REF, DECLARED_TYPE_REF -> APIUse.TYPE_DEPENDENCY; + case SUPER_TYPE -> APIUse.EXTENDS; + case INTERFACE -> APIUse.IMPLEMENTS; + case ANNOTATION_TYPE -> APIUse.ANNOTATION; + case IMPORT_REFERENCE -> APIUse.IMPORT; + default -> + throw new RuntimeException("Unmanaged role " + role + " for " + element + " in " + element.getParent()); + }; + } +} diff --git a/src/main/java/se/kth/sponvisitors/BrokenChanges.java b/src/main/java/se/kth/sponvisitors/BrokenChanges.java new file mode 100644 index 0000000..03ca7ca --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/BrokenChanges.java @@ -0,0 +1,53 @@ +package se.kth.sponvisitors; + +import se.kth.log_Analyzer.ErrorInfo; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@lombok.Getter +@lombok.Setter +public class BrokenChanges { + + BrokenUse brokenUse; + + Set errorInfo; + + List newVariants; + + + @Override + public String toString() { + return "BrokenChanges{" + + "brokenUse=" + brokenUse + + ", errorInfo=" + errorInfo + + '}'; + } + + public BrokenChanges(BrokenUse brokenUse) { + this.brokenUse = brokenUse; + this.errorInfo = new HashSet<>(); + newVariants = new ArrayList<>(); + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof BrokenChanges)) return false; + BrokenChanges that = (BrokenChanges) o; + return that.getBrokenUse().usedApiElement().equals(this.getBrokenUse().usedApiElement()); + + } + + @Override + public int hashCode() { + int result = brokenUse != null ? brokenUse.hashCode() : 0; + result = 31 * result + (errorInfo != null ? errorInfo.hashCode() : 0); + return result; + } + + public void addErrorInfo(ErrorInfo errorInfo) { + this.errorInfo.add(errorInfo); + } +} diff --git a/src/main/java/se/kth/sponvisitors/BrokenUse.java b/src/main/java/se/kth/sponvisitors/BrokenUse.java new file mode 100644 index 0000000..eb2bf6c --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/BrokenUse.java @@ -0,0 +1,95 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.cu.position.NoSourcePosition; +import spoon.reflect.declaration.CtElement; +import spoon.reflect.declaration.CtNamedElement; +import spoon.reflect.reference.CtReference; + +import java.util.Objects; + +/** + * A broken use is a source code location in client code that is impacted by a breaking change. + * + * @param element the impacted {@link CtElement} in the client's AST + * @param usedApiElement the {@link CtElement} in the library's code that is directly used by the {@link #element} + * @param source the original declaration affected by a breaking change in the library's code + * (often times the same as {@link #usedApiElement}) + * @param use the kind of use relationship between the {@link #element} and {@link #usedApiElement} + * @param change the kind of breaking change affecting {@link #source} + */ +public record BrokenUse( + CtElement element, + CtElement usedApiElement, + CtReference source, + APIUse use, + JApiCompatibilityChangeType change +) { + public BrokenUse { + Objects.requireNonNull(element); + Objects.requireNonNull(usedApiElement); + Objects.requireNonNull(source); + Objects.requireNonNull(use); + } + + @Override + public String toString() { + return """ + [%s] + Element: %s (%s:%d) + Used: %s + Source: %s + Use: %s + """.formatted( + change, + element instanceof CtNamedElement namedElement ? namedElement.getSimpleName() : element.toString(), + element.getPosition() instanceof NoSourcePosition ? "unknown" : element.getPosition().getFile().getName(), + element.getPosition() instanceof NoSourcePosition ? -1 : element.getPosition().getLine(), + usedApiElement instanceof CtNamedElement namedUsed ? namedUsed.getSimpleName() : usedApiElement.toString(), + source, + use + ); + } + + @Override + public int hashCode() { + // CtElement::equals/hashCode() do not check the position + return Objects.hash( + element.getPosition().toString(), + element.getShortRepresentation(), + usedApiElement.getPosition().toString(), + source.getPosition().toString(), + use, + change); + } + + @Override + public boolean equals(Object that) { + if (this == that) + return true; + if (that == null) + return false; + if (getClass() != that.getClass()) + return false; + BrokenUse other = (BrokenUse) that; + return comparePositions(element, other.element) + && comparePositions(usedApiElement, other.usedApiElement) + && comparePositions(source, other.source) + && use == other.use + && change == other.change; + } + + /** + * Compares two Spoon positions based on their string representation. + * + * @param elem1 first Spoon element to compare + * @param elem2 second Spoon element to compare + * @return true if the positions of the elements are the same, false + * otherwise + */ + private boolean comparePositions(CtElement elem1, CtElement elem2) { + return Objects.equals(elem1.getPosition().toString(), + elem2.getPosition().toString()); + } +} diff --git a/src/main/java/se/kth/sponvisitors/ClassLessAccessibleVisitor.java b/src/main/java/se/kth/sponvisitors/ClassLessAccessibleVisitor.java new file mode 100644 index 0000000..be536c5 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/ClassLessAccessibleVisitor.java @@ -0,0 +1,72 @@ +package se.kth.sponvisitors; + + +import japicmp.model.AccessModifier; +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.declaration.CtType; +import spoon.reflect.reference.CtTypeReference; +import util.SpoonHelpers; + +import java.util.Set; + +public class ClassLessAccessibleVisitor extends BreakingChangeVisitor { + private final CtTypeReference clsRef; + private final AccessModifier newAccessModifier; + + public ClassLessAccessibleVisitor(CtTypeReference clsRef, AccessModifier newAccessModifier) { + super(JApiCompatibilityChangeType.CLASS_LESS_ACCESSIBLE); + this.clsRef = clsRef; + this.newAccessModifier = newAccessModifier; + } + + @Override + public void visitCtTypeReference(CtTypeReference reference) { + if (clsRef.equals(reference)) { + APIUse use = getAPIUseByRole(reference); + String enclosingPkg = SpoonHelpers.getEnclosingPkgName(reference); + String expectedPkg = SpoonHelpers.getEnclosingPkgName(clsRef.getTypeDeclaration()); + + switch (newAccessModifier) { + // Private always breaks + case PRIVATE -> brokenUse(reference.getParent(), reference, clsRef, use); + // Package-private breaks if packages do not match + case PACKAGE_PROTECTED -> { + if (!enclosingPkg.equals(expectedPkg)) + brokenUse(reference.getParent(), reference, clsRef, use); + } + // Protected fails if not a subtype and packages do not match + case PROTECTED -> { + CtType parent = reference.getParent(CtType.class); + boolean refersToClassTopLevel = parent != null + && parent.isTopLevel() + && parent.isSubtypeOf(clsRef) + && Set.of(APIUse.IMPLEMENTS, APIUse.EXTENDS, APIUse.TYPE_DEPENDENCY).contains(use); + boolean importsClass = parent == null && use.equals(APIUse.IMPORT); + boolean usesClassInBreakingManner = parent != null + && !parent.isSubtypeOf(clsRef) + && !parent.isSubtypeOf(clsRef.getTopLevelType()) + && !enclosingPkg.equals(expectedPkg); + if (importsClass || refersToClassTopLevel || usesClassInBreakingManner) + brokenUse(reference.getParent(), reference, clsRef, use); + } + case PUBLIC -> throw new IllegalStateException("Can't happen"); + } + } + } + + /* + Uncomment if we want to include broken brokenChanges for every access to a field or + invocation of a method that is declared by the no-more-visible class. + + @Override public void visitCtFieldReference(CtFieldReference + * reference) { if (clsRef.equals(reference.getDeclaringType())) + * brokenUse(reference.getParent(), reference.getFieldDeclaration(), + * clsRef, APIUse.FIELD_ACCESS); } + * + * @Override public void visitCtExecutableReference(CtExecutableReference + * reference) { if (clsRef.equals(reference.getDeclaringType())) + * brokenUse(reference.getParent(), + * reference.getExecutableDeclaration(), clsRef, + * APIUse.METHOD_INVOCATION); } + */ +} diff --git a/src/main/java/se/kth/sponvisitors/ClassNowAbstractVisitor.java b/src/main/java/se/kth/sponvisitors/ClassNowAbstractVisitor.java new file mode 100644 index 0000000..ac149eb --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/ClassNowAbstractVisitor.java @@ -0,0 +1,28 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtConstructorCall; +import spoon.reflect.reference.CtTypeReference; + +/** + * Broken brokenChanges of CLASS_NOW_ABSTRACT are: + * - Instantiations of the now-abstract class + *

+ * Note: In JApiCmp, types that go from {@code class} to {@code interface} are impacted + * by CLASS_NOW_ABSTRACT the same way types that go from {@code class} to + * {@code abstract class} are. + */ +public class ClassNowAbstractVisitor extends BreakingChangeVisitor { + private final CtTypeReference clsRef; + + public ClassNowAbstractVisitor(CtTypeReference clsRef) { + super(JApiCompatibilityChangeType.CLASS_NOW_ABSTRACT); + this.clsRef = clsRef; + } + + @Override + public void visitCtConstructorCall(CtConstructorCall ctConstructorCall) { + if (clsRef.equals(ctConstructorCall.getType())) + brokenUse(ctConstructorCall, ctConstructorCall.getType(), clsRef, APIUse.INSTANTIATION); + } +} diff --git a/src/main/java/se/kth/sponvisitors/ClassNowCheckedExceptionVisitor.java b/src/main/java/se/kth/sponvisitors/ClassNowCheckedExceptionVisitor.java new file mode 100644 index 0000000..355208d --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/ClassNowCheckedExceptionVisitor.java @@ -0,0 +1,65 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtCatch; +import spoon.reflect.code.CtThrow; +import spoon.reflect.code.CtTry; +import spoon.reflect.declaration.CtMethod; +import spoon.reflect.reference.CtTypeReference; + +import java.util.Optional; +import java.util.Set; + +/** + * Broken brokenChanges of CLASS_NOW_CHECKED_EXCEPTION are: + * - All expression throwing the now-checked-exception or one of its subtypes unless: + * - It is caught locally + * - The enclosing method declares the exception + */ +public class ClassNowCheckedExceptionVisitor extends BreakingChangeVisitor { + private final CtTypeReference clsRef; + + public ClassNowCheckedExceptionVisitor(CtTypeReference clsRef) { + super(JApiCompatibilityChangeType.CLASS_NOW_CHECKED_EXCEPTION); + this.clsRef = clsRef; + } + + @Override + public void visitCtThrow(CtThrow throwStatement) { + CtTypeReference thrownType = throwStatement.getThrownExpression().getType(); + if (thrownType != null && thrownType.isSubtypeOf(clsRef)) { + boolean isCaught = false; + boolean isDeclared = false; + + CtTry enclosingTry = throwStatement.getParent(CtTry.class); + if (enclosingTry != null) { + Optional excCatcher = + enclosingTry.getCatchers() + .stream() + .filter(c -> thrownType.isSubtypeOf(c.getParameter().getType())) + .findAny(); + + if (excCatcher.isPresent()) + isCaught = true; + } + + @SuppressWarnings("unchecked") + Set> thrownTypes = + throwStatement.getParent(CtMethod.class) + .getThrownTypes(); + + Optional> compatibleThrows = + thrownTypes + .stream() + .filter(thrownType::isSubtypeOf) + .findAny(); + + if (compatibleThrows.isPresent()) + isDeclared = true; + + if (!isCaught && !isDeclared) + brokenUse(throwStatement, throwStatement.getThrownExpression().getType(), clsRef, APIUse.THROWS); + } + } +} diff --git a/src/main/java/se/kth/sponvisitors/ClassNowFinalVisitor.java b/src/main/java/se/kth/sponvisitors/ClassNowFinalVisitor.java new file mode 100644 index 0000000..1699c80 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/ClassNowFinalVisitor.java @@ -0,0 +1,35 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtNewClass; +import spoon.reflect.declaration.CtClass; +import spoon.reflect.reference.CtTypeReference; + +/** + * Broken brokenChanges of CLASS_NOW_FINAL are: + * - Classes (regular and anonymous) extending the now-final class + *

+ * Note that JApiCmp reports a CLASS_NOW_FINAL on types that go from {@code class} + * to {@code enum}. + */ +public class ClassNowFinalVisitor extends BreakingChangeVisitor { + private final CtTypeReference clsRef; + + public ClassNowFinalVisitor(CtTypeReference clsRef) { + super(JApiCompatibilityChangeType.CLASS_NOW_FINAL); + this.clsRef = clsRef; + } + + @Override + public void visitCtClass(CtClass ctClass) { + if (clsRef.equals(ctClass.getSuperclass())) + brokenUse(ctClass, ctClass.getSuperclass(), clsRef, APIUse.EXTENDS); + } + + @Override + public void visitCtNewClass(CtNewClass newClass) { + // Anonymous classes (CtNewClass) also go through (CtClass) + // -> don't count twice + } +} diff --git a/src/main/java/se/kth/sponvisitors/ClassRemovedVisitor.java b/src/main/java/se/kth/sponvisitors/ClassRemovedVisitor.java new file mode 100644 index 0000000..1a4d138 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/ClassRemovedVisitor.java @@ -0,0 +1,18 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtTypeReference; + +/** + * Visitor in charge of gathering class removed issues in client code. + */ +public class ClassRemovedVisitor extends TypeReferenceVisitor { + /** + * Creates a ClassRemovedVisitor instance. + * + * @param clsRef the now-removed class + */ + public ClassRemovedVisitor(CtTypeReference clsRef) { + super(clsRef, JApiCompatibilityChangeType.CLASS_REMOVED); + } +} diff --git a/src/main/java/se/kth/sponvisitors/CombinedVisitor.java b/src/main/java/se/kth/sponvisitors/CombinedVisitor.java new file mode 100644 index 0000000..c24a065 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/CombinedVisitor.java @@ -0,0 +1,567 @@ +package se.kth.sponvisitors; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import se.kth.breaking_changes.BreakingGoodOptions; +import spoon.reflect.code.*; +import spoon.reflect.cu.SourcePosition; +import spoon.reflect.declaration.*; +import spoon.reflect.reference.*; +import spoon.reflect.visitor.CtScanner; + +import java.lang.annotation.Annotation; +import java.util.Collection; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Traverses the AST once and delegates to the registered + * visitors when visiting each node. + */ +public class CombinedVisitor extends CtScanner { + private final Collection visitors; + private final BreakingGoodOptions options; + + private static final Logger logger = LogManager.getLogger(CombinedVisitor.class); + + public CombinedVisitor(Collection visitors, BreakingGoodOptions options) { + this.visitors = Objects.requireNonNull(visitors); + this.options = Objects.requireNonNull(options); + } + + public Set getBrokenUses() { + return + visitors.stream() + .map(BreakingChangeVisitor::getBrokenUses) + .flatMap(Collection::stream) + .collect(Collectors.toSet()); + } + + @Override + public void visitCtAnnotation(CtAnnotation annotation) { + visitors.forEach(v -> v.visitCtAnnotation(annotation)); + super.visitCtAnnotation(annotation); + } + + @Override + public void visitCtCodeSnippetExpression(CtCodeSnippetExpression expression) { + visitors.forEach(v -> v.visitCtCodeSnippetExpression(expression)); + super.visitCtCodeSnippetExpression(expression); + } + + @Override + public void visitCtCodeSnippetStatement(CtCodeSnippetStatement statement) { + visitors.forEach(v -> v.visitCtCodeSnippetStatement(statement)); + super.visitCtCodeSnippetStatement(statement); + } + + @Override + public void visitCtAnnotationType(CtAnnotationType annotationType) { + visitors.forEach(v -> v.visitCtAnnotationType(annotationType)); + super.visitCtAnnotationType(annotationType); + } + + @Override + public void visitCtAnonymousExecutable(CtAnonymousExecutable anonymousExec) { + visitors.forEach(v -> v.visitCtAnonymousExecutable(anonymousExec)); + super.visitCtAnonymousExecutable(anonymousExec); + } + + @Override + public void visitCtArrayRead(CtArrayRead arrayRead) { + visitors.forEach(v -> v.visitCtArrayRead(arrayRead)); + super.visitCtArrayRead(arrayRead); + } + + @Override + public void visitCtArrayWrite(CtArrayWrite arrayWrite) { + visitors.forEach(v -> v.visitCtArrayWrite(arrayWrite)); + super.visitCtArrayWrite(arrayWrite); + } + + @Override + public void visitCtArrayTypeReference(CtArrayTypeReference reference) { + visitors.forEach(v -> v.visitCtArrayTypeReference(reference)); + super.visitCtArrayTypeReference(reference); + } + + @Override + public void visitCtAssert(CtAssert asserted) { + visitors.forEach(v -> v.visitCtAssert(asserted)); + super.visitCtAssert(asserted); + } + + @Override + public void visitCtAssignment(CtAssignment assignement) { + visitors.forEach(v -> v.visitCtAssignment(assignement)); + super.visitCtAssignment(assignement); + } + + @Override + public void visitCtBinaryOperator(CtBinaryOperator operator) { + visitors.forEach(v -> v.visitCtBinaryOperator(operator)); + super.visitCtBinaryOperator(operator); + } + + @Override + public void visitCtBlock(CtBlock block) { + visitors.forEach(v -> v.visitCtBlock(block)); + super.visitCtBlock(block); + } + + @Override + public void visitCtBreak(CtBreak breakStatement) { + visitors.forEach(v -> v.visitCtBreak(breakStatement)); + super.visitCtBreak(breakStatement); + } + + @Override + public void visitCtCase(CtCase caseStatement) { + visitors.forEach(v -> v.visitCtCase(caseStatement)); + super.visitCtCase(caseStatement); + } + + @Override + public void visitCtCatch(CtCatch catchBlock) { + visitors.forEach(v -> v.visitCtCatch(catchBlock)); + super.visitCtCatch(catchBlock); + } + + @Override + public void visitCtClass(CtClass ctClass) { + SourcePosition pos = ctClass.getPosition(); + if ( + pos != null && + pos.isValidPosition() && + pos.getEndLine() - pos.getLine() > this.options.getMaxClassLines() + ) { + logger.warn("Skipping the analysis of {} [{} lines > {} lines authorized]", + ctClass.getQualifiedName(), pos.getEndLine() - pos.getLine(), this.options.getMaxClassLines()); + return; + } + + visitors.forEach(v -> v.visitCtClass(ctClass)); + super.visitCtClass(ctClass); + } + + @Override + public void visitCtTypeParameter(CtTypeParameter typeParameter) { + visitors.forEach(v -> v.visitCtTypeParameter(typeParameter)); + super.visitCtTypeParameter(typeParameter); + } + + @Override + public void visitCtConditional(CtConditional conditional) { + visitors.forEach(v -> v.visitCtConditional(conditional)); + super.visitCtConditional(conditional); + } + + @Override + public void visitCtConstructor(CtConstructor c) { + visitors.forEach(v -> v.visitCtConstructor(c)); + super.visitCtConstructor(c); + } + + @Override + public void visitCtContinue(CtContinue continueStatement) { + visitors.forEach(v -> v.visitCtContinue(continueStatement)); + super.visitCtContinue(continueStatement); + } + + @Override + public void visitCtDo(CtDo doLoop) { + visitors.forEach(v -> v.visitCtDo(doLoop)); + super.visitCtDo(doLoop); + } + + @Override + public > void visitCtEnum(CtEnum ctEnum) { + visitors.forEach(v -> v.visitCtEnum(ctEnum)); + super.visitCtEnum(ctEnum); + } + + @Override + public void visitCtExecutableReference(CtExecutableReference reference) { + visitors.forEach(v -> v.visitCtExecutableReference(reference)); + super.visitCtExecutableReference(reference); + } + + @Override + public void visitCtField(CtField f) { + visitors.forEach(v -> v.visitCtField(f)); + super.visitCtField(f); + } + + @Override + public void visitCtEnumValue(CtEnumValue enumValue) { + visitors.forEach(v -> v.visitCtEnumValue(enumValue)); + super.visitCtEnumValue(enumValue); + } + + @Override + public void visitCtThisAccess(CtThisAccess thisAccess) { + visitors.forEach(v -> v.visitCtThisAccess(thisAccess)); + super.visitCtThisAccess(thisAccess); + } + + @Override + public void visitCtFieldReference(CtFieldReference reference) { + visitors.forEach(v -> v.visitCtFieldReference(reference)); + super.visitCtFieldReference(reference); + } + + @Override + public void visitCtUnboundVariableReference(CtUnboundVariableReference reference) { + visitors.forEach(v -> v.visitCtUnboundVariableReference(reference)); + super.visitCtUnboundVariableReference(reference); + } + + @Override + public void visitCtFor(CtFor forLoop) { + visitors.forEach(v -> v.visitCtFor(forLoop)); + super.visitCtFor(forLoop); + } + + @Override + public void visitCtForEach(CtForEach foreach) { + visitors.forEach(v -> v.visitCtForEach(foreach)); + super.visitCtForEach(foreach); + } + + @Override + public void visitCtIf(CtIf ifElement) { + visitors.forEach(v -> v.visitCtIf(ifElement)); + super.visitCtIf(ifElement); + } + + @Override + public void visitCtInterface(CtInterface intrface) { + visitors.forEach(v -> v.visitCtInterface(intrface)); + super.visitCtInterface(intrface); + } + + @Override + public void visitCtInvocation(CtInvocation invocation) { + visitors.forEach(v -> v.visitCtInvocation(invocation)); + super.visitCtInvocation(invocation); + } + + @Override + public void visitCtLiteral(CtLiteral literal) { + visitors.forEach(v -> v.visitCtLiteral(literal)); + super.visitCtLiteral(literal); + } + + @Override + public void visitCtTextBlock(CtTextBlock ctTextBlock) { + visitors.forEach(v -> v.visitCtTextBlock(ctTextBlock)); + super.visitCtTextBlock(ctTextBlock); + } + + @Override + public void visitCtLocalVariable(CtLocalVariable localVariable) { + visitors.forEach(v -> v.visitCtLocalVariable(localVariable)); + super.visitCtLocalVariable(localVariable); + } + + @Override + public void visitCtLocalVariableReference(CtLocalVariableReference reference) { + visitors.forEach(v -> v.visitCtLocalVariableReference(reference)); + super.visitCtLocalVariableReference(reference); + } + + @Override + public void visitCtCatchVariable(CtCatchVariable catchVariable) { + visitors.forEach(v -> v.visitCtCatchVariable(catchVariable)); + super.visitCtCatchVariable(catchVariable); + } + + @Override + public void visitCtCatchVariableReference(CtCatchVariableReference reference) { + visitors.forEach(v -> v.visitCtCatchVariableReference(reference)); + super.visitCtCatchVariableReference(reference); + } + + @Override + public void visitCtMethod(CtMethod m) { + visitors.forEach(v -> v.visitCtMethod(m)); + super.visitCtMethod(m); + } + + @Override + public void visitCtAnnotationMethod(CtAnnotationMethod annotationMethod) { + visitors.forEach(v -> v.visitCtAnnotationMethod(annotationMethod)); + super.visitCtAnnotationMethod(annotationMethod); + } + + @Override + public void visitCtNewArray(CtNewArray newArray) { + visitors.forEach(v -> v.visitCtNewArray(newArray)); + super.visitCtNewArray(newArray); + } + + @Override + public void visitCtConstructorCall(CtConstructorCall ctConstructorCall) { + visitors.forEach(v -> v.visitCtConstructorCall(ctConstructorCall)); + super.visitCtConstructorCall(ctConstructorCall); + } + + @Override + public void visitCtNewClass(CtNewClass newClass) { + visitors.forEach(v -> v.visitCtNewClass(newClass)); + super.visitCtNewClass(newClass); + } + + @Override + public void visitCtLambda(CtLambda lambda) { + visitors.forEach(v -> v.visitCtLambda(lambda)); + super.visitCtLambda(lambda); + } + + @Override + public > void visitCtExecutableReferenceExpression(CtExecutableReferenceExpression expression) { + visitors.forEach(v -> v.visitCtExecutableReferenceExpression(expression)); + super.visitCtExecutableReferenceExpression(expression); + } + + @Override + public void visitCtOperatorAssignment(CtOperatorAssignment assignment) { + visitors.forEach(v -> v.visitCtOperatorAssignment(assignment)); + super.visitCtOperatorAssignment(assignment); + } + + @Override + public void visitCtPackage(CtPackage ctPackage) { + visitors.forEach(v -> v.visitCtPackage(ctPackage)); + super.visitCtPackage(ctPackage); + } + + @Override + public void visitCtPackageReference(CtPackageReference reference) { + visitors.forEach(v -> v.visitCtPackageReference(reference)); + super.visitCtPackageReference(reference); + } + + @Override + public void visitCtParameter(CtParameter parameter) { + visitors.forEach(v -> v.visitCtParameter(parameter)); + super.visitCtParameter(parameter); + } + + @Override + public void visitCtParameterReference(CtParameterReference reference) { + visitors.forEach(v -> v.visitCtParameterReference(reference)); + super.visitCtParameterReference(reference); + } + + @Override + public void visitCtReturn(CtReturn returnStatement) { + visitors.forEach(v -> v.visitCtReturn(returnStatement)); + super.visitCtReturn(returnStatement); + } + + @Override + public void visitCtStatementList(CtStatementList statements) { + visitors.forEach(v -> v.visitCtStatementList(statements)); + super.visitCtStatementList(statements); + } + + @Override + public void visitCtSwitch(CtSwitch switchStatement) { + visitors.forEach(v -> v.visitCtSwitch(switchStatement)); + super.visitCtSwitch(switchStatement); + } + + @Override + public void visitCtSwitchExpression(CtSwitchExpression switchExpression) { + visitors.forEach(v -> v.visitCtSwitchExpression(switchExpression)); + super.visitCtSwitchExpression(switchExpression); + } + + @Override + public void visitCtSynchronized(CtSynchronized synchro) { + visitors.forEach(v -> v.visitCtSynchronized(synchro)); + super.visitCtSynchronized(synchro); + } + + @Override + public void visitCtThrow(CtThrow throwStatement) { + visitors.forEach(v -> v.visitCtThrow(throwStatement)); + super.visitCtThrow(throwStatement); + } + + @Override + public void visitCtTry(CtTry tryBlock) { + visitors.forEach(v -> v.visitCtTry(tryBlock)); + super.visitCtTry(tryBlock); + } + + @Override + public void visitCtTryWithResource(CtTryWithResource tryWithResource) { + visitors.forEach(v -> v.visitCtTryWithResource(tryWithResource)); + super.visitCtTryWithResource(tryWithResource); + } + + @Override + public void visitCtTypeParameterReference(CtTypeParameterReference ref) { + visitors.forEach(v -> v.visitCtTypeParameterReference(ref)); + super.visitCtTypeParameterReference(ref); + } + + @Override + public void visitCtWildcardReference(CtWildcardReference wildcardReference) { + visitors.forEach(v -> v.visitCtWildcardReference(wildcardReference)); + super.visitCtWildcardReference(wildcardReference); + } + + @Override + public void visitCtIntersectionTypeReference(CtIntersectionTypeReference reference) { + visitors.forEach(v -> v.visitCtIntersectionTypeReference(reference)); + super.visitCtIntersectionTypeReference(reference); + } + + @Override + public void visitCtTypeReference(CtTypeReference reference) { + visitors.forEach(v -> v.visitCtTypeReference(reference)); + super.visitCtTypeReference(reference); + } + + @Override + public void visitCtTypeAccess(CtTypeAccess typeAccess) { + visitors.forEach(v -> v.visitCtTypeAccess(typeAccess)); + super.visitCtTypeAccess(typeAccess); + } + + @Override + public void visitCtUnaryOperator(CtUnaryOperator operator) { + visitors.forEach(v -> v.visitCtUnaryOperator(operator)); + super.visitCtUnaryOperator(operator); + } + + @Override + public void visitCtVariableRead(CtVariableRead variableRead) { + visitors.forEach(v -> v.visitCtVariableRead(variableRead)); + super.visitCtVariableRead(variableRead); + } + + @Override + public void visitCtVariableWrite(CtVariableWrite variableWrite) { + visitors.forEach(v -> v.visitCtVariableWrite(variableWrite)); + super.visitCtVariableWrite(variableWrite); + } + + @Override + public void visitCtWhile(CtWhile whileLoop) { + visitors.forEach(v -> v.visitCtWhile(whileLoop)); + super.visitCtWhile(whileLoop); + } + + @Override + public void visitCtAnnotationFieldAccess(CtAnnotationFieldAccess annotationFieldAccess) { + visitors.forEach(v -> v.visitCtAnnotationFieldAccess(annotationFieldAccess)); + super.visitCtAnnotationFieldAccess(annotationFieldAccess); + } + + @Override + public void visitCtFieldRead(CtFieldRead fieldRead) { + visitors.forEach(v -> v.visitCtFieldRead(fieldRead)); + super.visitCtFieldRead(fieldRead); + } + + @Override + public void visitCtFieldWrite(CtFieldWrite fieldWrite) { + visitors.forEach(v -> v.visitCtFieldWrite(fieldWrite)); + super.visitCtFieldWrite(fieldWrite); + } + + @Override + public void visitCtSuperAccess(CtSuperAccess f) { + visitors.forEach(v -> v.visitCtSuperAccess(f)); + super.visitCtSuperAccess(f); + } + + @Override + public void visitCtComment(CtComment comment) { + visitors.forEach(v -> v.visitCtComment(comment)); + super.visitCtComment(comment); + } + + @Override + public void visitCtJavaDoc(CtJavaDoc comment) { + visitors.forEach(v -> v.visitCtJavaDoc(comment)); + super.visitCtJavaDoc(comment); + } + + @Override + public void visitCtJavaDocTag(CtJavaDocTag docTag) { + visitors.forEach(v -> v.visitCtJavaDocTag(docTag)); + super.visitCtJavaDocTag(docTag); + } + + @Override + public void visitCtImport(CtImport ctImport) { + visitors.forEach(v -> v.visitCtImport(ctImport)); + super.visitCtImport(ctImport); + } + + @Override + public void visitCtModule(CtModule module) { + visitors.forEach(v -> v.visitCtModule(module)); + super.visitCtModule(module); + } + + @Override + public void visitCtModuleReference(CtModuleReference moduleReference) { + visitors.forEach(v -> v.visitCtModuleReference(moduleReference)); + super.visitCtModuleReference(moduleReference); + } + + @Override + public void visitCtPackageExport(CtPackageExport moduleExport) { + visitors.forEach(v -> v.visitCtPackageExport(moduleExport)); + super.visitCtPackageExport(moduleExport); + } + + @Override + public void visitCtModuleRequirement(CtModuleRequirement moduleRequirement) { + visitors.forEach(v -> v.visitCtModuleRequirement(moduleRequirement)); + super.visitCtModuleRequirement(moduleRequirement); + } + + @Override + public void visitCtProvidedService(CtProvidedService moduleProvidedService) { + visitors.forEach(v -> v.visitCtProvidedService(moduleProvidedService)); + super.visitCtProvidedService(moduleProvidedService); + } + + @Override + public void visitCtUsedService(CtUsedService usedService) { + visitors.forEach(v -> v.visitCtUsedService(usedService)); + super.visitCtUsedService(usedService); + } + + @Override + public void visitCtCompilationUnit(CtCompilationUnit compilationUnit) { + visitors.forEach(v -> v.visitCtCompilationUnit(compilationUnit)); + super.visitCtCompilationUnit(compilationUnit); + } + + @Override + public void visitCtPackageDeclaration(CtPackageDeclaration packageDeclaration) { + visitors.forEach(v -> v.visitCtPackageDeclaration(packageDeclaration)); + super.visitCtPackageDeclaration(packageDeclaration); + } + + @Override + public void visitCtTypeMemberWildcardImportReference(CtTypeMemberWildcardImportReference wildcardReference) { + visitors.forEach(v -> v.visitCtTypeMemberWildcardImportReference(wildcardReference)); + super.visitCtTypeMemberWildcardImportReference(wildcardReference); + } + + @Override + public void visitCtYieldStatement(CtYieldStatement statement) { + visitors.forEach(v -> v.visitCtYieldStatement(statement)); + super.visitCtYieldStatement(statement); + } +} diff --git a/src/main/java/se/kth/sponvisitors/ConstructorRemovedVisitor.java b/src/main/java/se/kth/sponvisitors/ConstructorRemovedVisitor.java new file mode 100644 index 0000000..0f4c1b7 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/ConstructorRemovedVisitor.java @@ -0,0 +1,74 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtConstructorCall; +import spoon.reflect.code.CtInvocation; +import spoon.reflect.code.CtNewClass; +import spoon.reflect.reference.CtExecutableReference; +import spoon.reflect.reference.CtTypeReference; + +/** + * Visitor in charge of gathering all constructor removed issues in client code. + *

+ * The visitor detects the following cases: + *

+ */ +public class ConstructorRemovedVisitor extends BreakingChangeVisitor { + /** + * Spoon reference to the removed constructor. + */ + private final CtExecutableReference mRef; + + /** + * Creates a ConstructorRemovedVisitor instance. + * + * @param mRef the now-removed constructor + */ + public ConstructorRemovedVisitor(CtExecutableReference mRef) { + super(JApiCompatibilityChangeType.CONSTRUCTOR_REMOVED); + this.mRef = mRef; + } + + @Override + public void visitCtConstructorCall(CtConstructorCall consCall) { + if (mRef.equals(consCall.getExecutable())) + brokenUse(consCall, consCall.getExecutable(), mRef, APIUse.INSTANTIATION); + } + + @Override + public void visitCtNewClass(CtNewClass anonymClass) { + CtTypeReference superclass = anonymClass.getAnonymousClass().getSuperclass(); + + if (superclass != null) + superclass.getDeclaredExecutables() + .stream() + .filter(mRef::equals) + .forEach(exec -> + brokenUse(anonymClass, exec, mRef, APIUse.INSTANTIATION) + ); + } + + @Override + public void visitCtInvocation(CtInvocation invocation) { + // Every invocation of a constructor refers to super() + if (mRef.equals(invocation.getExecutable())) + + brokenUse(invocation, invocation.getExecutable(), mRef, APIUse.METHOD_INVOCATION); + // FIXME: some cases do not throw a compilation error: + // super() refers to the Object type constructor + } +} diff --git a/src/main/java/se/kth/sponvisitors/FieldLessAccessibleVisitor.java b/src/main/java/se/kth/sponvisitors/FieldLessAccessibleVisitor.java new file mode 100644 index 0000000..a5115de --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/FieldLessAccessibleVisitor.java @@ -0,0 +1,68 @@ +package se.kth.sponvisitors; + + + +import japicmp.model.AccessModifier; +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtFieldAccess; +import spoon.reflect.code.CtFieldRead; +import spoon.reflect.code.CtFieldWrite; +import spoon.reflect.declaration.CtType; +import spoon.reflect.reference.CtFieldReference; +import util.SpoonHelpers; + +/** + * Broken brokenChanges of FIELD_LESS_ACCESSIBLE are: + * - Any access to a now-private field + * - Any access to a now-package-private field outside the package + * - Any access to a now-protected field outside its subtype hierarchy or package + *

+ * TODO: what about inner classes (e.g. using private fields of the outer?) + */ +public class FieldLessAccessibleVisitor extends BreakingChangeVisitor { + private final CtFieldReference fRef; + private final AccessModifier newAccessModifier; + + public FieldLessAccessibleVisitor(CtFieldReference fRef, AccessModifier newAccessModifier) { + super(JApiCompatibilityChangeType.FIELD_LESS_ACCESSIBLE); + this.fRef = fRef; + this.newAccessModifier = newAccessModifier; + } + + @Override + public void visitCtFieldRead(CtFieldRead fieldRead) { + visitCtFieldAccess(fieldRead); + } + + @Override + public void visitCtFieldWrite(CtFieldWrite fieldWrite) { + visitCtFieldAccess(fieldWrite); + } + + private void visitCtFieldAccess(CtFieldAccess fieldAccess) { + if (fRef.equals(fieldAccess.getVariable())) { + String enclosingPkg = SpoonHelpers.getEnclosingPkgName(fieldAccess); + String expectedPkg = SpoonHelpers.getEnclosingPkgName(fRef.getFieldDeclaration()); + + switch (newAccessModifier) { + // Private always breaks + case PRIVATE -> brokenUse(fieldAccess, fieldAccess.getVariable(), fRef, APIUse.FIELD_ACCESS); + + // Package-private breaks if packages do not match + case PACKAGE_PROTECTED -> { + if (!enclosingPkg.equals(expectedPkg)) + brokenUse(fieldAccess, fieldAccess.getVariable(), fRef, APIUse.FIELD_ACCESS); + } + // Protected fails if not a subtype and packages do not match + case PROTECTED -> { + if (!fieldAccess.getParent(CtType.class).isSubtypeOf(fRef.getDeclaringType()) && + !enclosingPkg.equals(expectedPkg)) + brokenUse(fieldAccess, fieldAccess.getVariable(), fRef, APIUse.FIELD_ACCESS); + } + default -> { + } + // Can't happen + } + } + } +} diff --git a/src/main/java/se/kth/sponvisitors/FieldNoLongerStaticVisitor.java b/src/main/java/se/kth/sponvisitors/FieldNoLongerStaticVisitor.java new file mode 100644 index 0000000..961558e --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/FieldNoLongerStaticVisitor.java @@ -0,0 +1,65 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtFieldAccess; +import spoon.reflect.code.CtFieldRead; +import spoon.reflect.code.CtFieldWrite; +import spoon.reflect.code.CtTypeAccess; +import spoon.reflect.reference.CtFieldReference; +import spoon.reflect.reference.CtTypeReference; + +/** + * Broken brokenChanges of FIELD_NO_LONGER_STATIC are: + * - Attempting to access a no-longer-static field in a static way + */ +public class FieldNoLongerStaticVisitor extends BreakingChangeVisitor { + private final CtFieldReference fRef; + + public FieldNoLongerStaticVisitor(CtFieldReference fRef) { + super(JApiCompatibilityChangeType.FIELD_NO_LONGER_STATIC); + this.fRef = fRef; + } + + @Override + public void visitCtFieldRead(CtFieldRead fieldRead) { + visitCtFieldAccess(fieldRead); + } + + @Override + public void visitCtFieldWrite(CtFieldWrite fieldWrite) { + visitCtFieldAccess(fieldWrite); + } + + private void visitCtFieldAccess(CtFieldAccess fieldAccess) { + // Need to handle the case where the static field of a parent class + // is accessed through its subclass: SubClass.staticFieldInSuperClass + CtTypeReference accessedType = fieldAccess.getVariable().getDeclaringType(); + CtTypeReference refType = fRef.getDeclaringType(); + + if ( + accessedType != null && + refType != null && + accessedType.isSubtypeOf(refType) && + // Not a big fan of the simpleName comparison, but it should be safe and + // the line below refuses to match + fieldAccess.getVariable().getSimpleName().equals(fRef.getFieldDeclaration().getSimpleName()) && + //Objects.equal(fieldAccess.getVariable().getFieldDeclaration(), fRef.getFieldDeclaration()) + isStaticAccess(fieldAccess) + ) + brokenUse(fieldAccess, fieldAccess.getVariable(), fRef, APIUse.FIELD_ACCESS); + } + + private boolean isStaticAccess(CtFieldAccess fieldAccess) { + // Target is a CtTypeAccess for static fields + // and a CtExpression for everything else + if (fieldAccess.getTarget() instanceof CtTypeAccess ta) { + // In a subclass, direct (unprefixed) access to a parent static field would + // still be counted as a TypeAccess. We check if it's actually accessed + // in an (explicit) static way with isImplicit() + return !ta.isImplicit(); + } + + return false; + } +} diff --git a/src/main/java/se/kth/sponvisitors/FieldNowFinalVisitor.java b/src/main/java/se/kth/sponvisitors/FieldNowFinalVisitor.java new file mode 100644 index 0000000..25a21a7 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/FieldNowFinalVisitor.java @@ -0,0 +1,25 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtFieldWrite; +import spoon.reflect.reference.CtFieldReference; + +/** + * Broken brokenChanges of FIELD_NOW_FINAL are: + * - Attempting to write-access a now-final field + */ +public class FieldNowFinalVisitor extends BreakingChangeVisitor { + private final CtFieldReference fRef; + + public FieldNowFinalVisitor(CtFieldReference fRef) { + super(JApiCompatibilityChangeType.FIELD_NOW_FINAL); + this.fRef = fRef; + } + + @Override + public void visitCtFieldWrite(CtFieldWrite fieldWrite) { + if (fRef.equals(fieldWrite.getVariable())) + brokenUse(fieldWrite, fieldWrite.getVariable(), fRef, APIUse.FIELD_ACCESS); + } +} diff --git a/src/main/java/se/kth/sponvisitors/FieldNowStaticVisitor.java b/src/main/java/se/kth/sponvisitors/FieldNowStaticVisitor.java new file mode 100644 index 0000000..b8c78bf --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/FieldNowStaticVisitor.java @@ -0,0 +1,17 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtFieldReference; + +/** + * Broken brokenChanges of FIELD_NOW_STATIC are: + * - Currently none + *

+ * AFAIK, FIELD_NOW_STATIC is source-compatible (though japicmp says otherwise?) + * We still need to implement broken brokenChanges for binary incompatibilities + */ +public class FieldNowStaticVisitor extends BreakingChangeVisitor { + public FieldNowStaticVisitor(CtFieldReference fRef) { + super(JApiCompatibilityChangeType.FIELD_NOW_STATIC); + } +} diff --git a/src/main/java/se/kth/sponvisitors/FieldReferenceVisitor.java b/src/main/java/se/kth/sponvisitors/FieldReferenceVisitor.java new file mode 100644 index 0000000..e4fafaf --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/FieldReferenceVisitor.java @@ -0,0 +1,29 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtFieldReference; + +public class FieldReferenceVisitor extends BreakingChangeVisitor { + /** + * Spoon reference to the removed field. + */ + private final CtFieldReference fRef; + + /** + * Creates a {@link FieldReferenceVisitor} instance. + * + * @param fRef modified field reference + * @param change kind of breaking change + */ + protected FieldReferenceVisitor(CtFieldReference fRef, JApiCompatibilityChangeType change) { + super(change); + this.fRef = fRef; + } + + @Override + public void visitCtFieldReference(CtFieldReference reference) { + if (fRef.equals(reference)) + brokenUse(reference, reference, fRef, APIUse.FIELD_ACCESS); + } +} diff --git a/src/main/java/se/kth/sponvisitors/FieldRemovedVisitor.java b/src/main/java/se/kth/sponvisitors/FieldRemovedVisitor.java new file mode 100644 index 0000000..b5e6ef0 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/FieldRemovedVisitor.java @@ -0,0 +1,30 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtFieldReference; + +/** + * Visitor in charge of gathering field removed issues in client code. + *

+ * The visitor detects the following cases: + *

    + *
  • Read accesses of the now-removed field. Example: + *
    + *      var a = field;
    + *      
    + *
  • Write accesses of the now-removed field. Example: + *
    + *      self.field = 10;
    + *      
    + *
+ */ +public class FieldRemovedVisitor extends FieldReferenceVisitor { + /** + * Creates a FieldRemovedVisitor instance. + * + * @param fRef the now-removed field + */ + public FieldRemovedVisitor(CtFieldReference fRef) { + super(fRef, JApiCompatibilityChangeType.FIELD_REMOVED); + } +} diff --git a/src/main/java/se/kth/sponvisitors/FieldTypeChangedVisitor.java b/src/main/java/se/kth/sponvisitors/FieldTypeChangedVisitor.java new file mode 100644 index 0000000..5429254 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/FieldTypeChangedVisitor.java @@ -0,0 +1,85 @@ +package se.kth.sponvisitors; + + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtAssignment; +import spoon.reflect.code.CtFieldRead; +import spoon.reflect.code.CtFieldWrite; +import spoon.reflect.reference.CtFieldReference; +import spoon.reflect.reference.CtTypeReference; +import util.SpoonTypeHelpers; + +/** + * Visitor in charge of gathering all method return type changed issues in + * client code. + *

+ * The visitor detects the following cases: + *

    + *
  • Read accesses of the modified field where the expected type is not + * compatible with the new type. Example: + *
    + *      int a = field; // field of type String
    + *      
    + *
  • Write accesses of the modified field where the expected type is not + * compatible with the new type. Only field assignments are considered. + * Example: + *
    + *      self.field = 10; // field of type String
    + *      
    + *
+ */ +public class FieldTypeChangedVisitor extends BreakingChangeVisitor { + /* + FIXME: Notes + - There must be a cleaner way than checking all possible usage contexts, + but I can't find it yet + - japicmp doesn't report a FIELD_TYPE_CHANGED when type parameters change, + e.g.: {@literal List
} to {@literal List} (ofc it does for e.g. + {@literal List} to {@literal Collection}) + */ + + /** + * Spoon reference to the modified field. + */ + private final CtFieldReference fRef; + + /** + * Spoon reference to the new type of the modified field. + */ + private final CtTypeReference newType; + + /** + * Creates a FieldTypeChangedVisitor instance. + * + * @param fRef the modified field + * @param newType the new type of the modified field + */ + public FieldTypeChangedVisitor(CtFieldReference fRef, CtTypeReference newType) { + super(JApiCompatibilityChangeType.FIELD_TYPE_CHANGED); + this.fRef = fRef; + this.newType = newType; + } + + @Override + public void visitCtFieldRead(CtFieldRead fieldRead) { + if (fRef.equals(fieldRead.getVariable())) { + CtTypeReference expectedType = SpoonTypeHelpers.inferExpectedType(fieldRead.getParent()); + + if (!SpoonTypeHelpers.isAssignableFrom(expectedType, newType)) + brokenUse(fieldRead, fieldRead.getVariable(), fRef, APIUse.FIELD_ACCESS); + } + } + + @Override + public void visitCtFieldWrite(CtFieldWrite fieldWrite) { + if (fRef.equals(fieldWrite.getVariable())) { + // We should always be in an assignment + CtAssignment enclosing = (CtAssignment) fieldWrite.getParent(); + CtTypeReference assignedType = enclosing.getType(); + + if (!SpoonTypeHelpers.isAssignableFrom(newType, assignedType)) + brokenUse(fieldWrite, fieldWrite.getVariable(), fRef, APIUse.FIELD_ACCESS); + } + } +} diff --git a/src/main/java/se/kth/sponvisitors/InterfaceAddedVisitor.java b/src/main/java/se/kth/sponvisitors/InterfaceAddedVisitor.java new file mode 100644 index 0000000..60b587a --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/InterfaceAddedVisitor.java @@ -0,0 +1,21 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtTypeReference; + +import java.util.Set; + +/** + * Visitor in charge of gathering all interface added issues in client code. + */ +public class InterfaceAddedVisitor extends SupertypeAddedVisitor { + /** + * Creates a InterfaceAddedVisitor instance. + * + * @param clsRef reference to the client impacted class + * @param newInterfaces added interfaces + */ + public InterfaceAddedVisitor(CtTypeReference clsRef, Set> newInterfaces) { + super(clsRef, newInterfaces, JApiCompatibilityChangeType.INTERFACE_ADDED); + } +} diff --git a/src/main/java/se/kth/sponvisitors/InterfaceRemovedVisitor.java b/src/main/java/se/kth/sponvisitors/InterfaceRemovedVisitor.java new file mode 100644 index 0000000..22f3586 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/InterfaceRemovedVisitor.java @@ -0,0 +1,21 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtTypeReference; + +import java.util.Set; + +/** + * Visitor in charge of gathering all interface removed issues in client code. + */ +public class InterfaceRemovedVisitor extends SupertypeRemovedVisitor { + /** + * Creates a InterfaceRemovedVisitor instance. + * + * @param clsRef reference to the client impacted class + * @param interfaces set of removed interfaces + */ + public InterfaceRemovedVisitor(CtTypeReference clsRef, Set> interfaces) { + super(clsRef, interfaces, JApiCompatibilityChangeType.INTERFACE_REMOVED); + } +} diff --git a/src/main/java/se/kth/sponvisitors/MethodAddedToInterfaceVisitor.java b/src/main/java/se/kth/sponvisitors/MethodAddedToInterfaceVisitor.java new file mode 100644 index 0000000..051404a --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/MethodAddedToInterfaceVisitor.java @@ -0,0 +1,57 @@ +package se.kth.sponvisitors; + + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.declaration.CtClass; +import spoon.reflect.reference.CtTypeReference; +import util.SpoonTypeHelpers; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +/** + * Visitor in charge of gathering all method added to interface issues in + * client code. + *

+ * The visitor detects the following cases: + *

    + *
  • Concrete classes implementing the modified interface. Example: + *
    + *      public class MyClass implements ModifiedInterface { }
    + *      
    + *
+ */ +public class MethodAddedToInterfaceVisitor extends BreakingChangeVisitor { + /** + * Spoon reference to the interface where the new method has been added + */ + private final CtTypeReference clsRef; + + /** + * Creates a MethodAddedToInterfaceVisitor instance. + * + * @param clsRef the interface where the new method has been added + */ + public MethodAddedToInterfaceVisitor(CtTypeReference clsRef) { + super(JApiCompatibilityChangeType.METHOD_ADDED_TO_INTERFACE); + this.clsRef = clsRef; + } + + @Override + public void visitCtClass(CtClass cls) { + if (!cls.isAbstract()) { + CtTypeReference typeRef = cls.getReference(); + Set> interfaces = new HashSet<>(typeRef.getSuperInterfaces()); + Set> superCls = new HashSet<>(Collections.singletonList(typeRef.getSuperclass())); + + if (SpoonTypeHelpers.isSubtype(interfaces, clsRef)) + brokenUse(cls, cls, clsRef, APIUse.IMPLEMENTS); + + if (SpoonTypeHelpers.isSubtype(superCls, clsRef)) + brokenUse(cls, cls, clsRef, APIUse.EXTENDS); + } + } +} + diff --git a/src/main/java/se/kth/sponvisitors/MethodNowAbstractVisitor.java b/src/main/java/se/kth/sponvisitors/MethodNowAbstractVisitor.java new file mode 100644 index 0000000..6fd883d --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/MethodNowAbstractVisitor.java @@ -0,0 +1,42 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtInvocation; +import spoon.reflect.declaration.CtClass; +import spoon.reflect.reference.CtExecutableReference; +import spoon.reflect.reference.CtTypeReference; + +/** + * Broken brokenChanges of METHOD_NOW_ABSTRACT are: + * - Non-abstract types extending/implementing the enclosing type of the now-abstract method unless: + * - The now-abstract method is already implemented somewhere in the hierarchy + * - Invocations in subtypes of the now-abstract method + */ +public class MethodNowAbstractVisitor extends BreakingChangeVisitor { + private final CtExecutableReference mRef; + + public MethodNowAbstractVisitor(CtExecutableReference mRef) { + super(JApiCompatibilityChangeType.METHOD_NOW_ABSTRACT); + this.mRef = mRef; + } + + @Override + public void visitCtClass(CtClass ctClass) { + CtTypeReference enclosingType = mRef.getDeclaringType(); + if ( + !ctClass.isAbstract() && + ctClass.isSubtypeOf(enclosingType) && + mRef.getOverridingExecutable(ctClass.getReference()) == null + ) + brokenUse(ctClass, enclosingType, mRef, + enclosingType.isInterface() ? APIUse.IMPLEMENTS : APIUse.EXTENDS); + } + + @Override + public void visitCtInvocation(CtInvocation invocation) { + if (mRef.equals(invocation.getExecutable())) { + brokenUse(invocation, invocation.getExecutable(), mRef, APIUse.METHOD_INVOCATION); + } + } +} diff --git a/src/main/java/se/kth/sponvisitors/MethodNowFinalVisitor.java b/src/main/java/se/kth/sponvisitors/MethodNowFinalVisitor.java new file mode 100644 index 0000000..5ead5ee --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/MethodNowFinalVisitor.java @@ -0,0 +1,38 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.SpoonException; +import spoon.reflect.declaration.CtMethod; +import spoon.reflect.reference.CtExecutableReference; + +import java.util.Optional; + +/** + * Broken brokenChanges of METHOD_NOW_FINAL are: + * - Methods overriding the now-final method (with or w/o explicit @Override) + */ +public class MethodNowFinalVisitor extends BreakingChangeVisitor { + private final CtExecutableReference mRef; + + public MethodNowFinalVisitor(CtExecutableReference mRef) { + super(JApiCompatibilityChangeType.METHOD_NOW_FINAL); + this.mRef = mRef; + } + + @Override + public void visitCtMethod(CtMethod m) { + try { + Optional> superMethod = + m.getTopDefinitions() + .stream() + .filter(superM -> mRef.equals(superM.getReference())) + .findAny(); + + superMethod.ifPresent(ctMethod -> + brokenUse(m, ctMethod, mRef, APIUse.METHOD_OVERRIDE)); + } catch (SpoonException e) { + // FIXME: Find fancier solution. A declaration cannot be resolved + } + } +} diff --git a/src/main/java/se/kth/sponvisitors/MethodReferenceVisitor.java b/src/main/java/se/kth/sponvisitors/MethodReferenceVisitor.java new file mode 100644 index 0000000..ffac1c9 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/MethodReferenceVisitor.java @@ -0,0 +1,59 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtInvocation; +import spoon.reflect.declaration.CtMethod; +import spoon.reflect.reference.CtExecutableReference; + +/** + * Generic visitor in charge of gathering method reference issues in client code. + *

+ * It creates a broken use for every reference to the supplied {code mRef}. + * The visitor detects the following cases: + *

    + *
  • Invocations to the referenced method. Example: + *
    + *      var a = method();
    + *      
    + *
  • Methods overriding the referenced method. Example: + *
    + *      @Override
    + *      public void method() { return; }
    + *      
    + *
+ */ +public class MethodReferenceVisitor extends BreakingChangeVisitor { + /** + * Spoon reference to the removed method. + */ + private final CtExecutableReference mRef; + + /** + * Creates a {@link MethodReferenceVisitor} instance. + * + * @param mRef modified method reference + * @param change kind of breaking change + */ + protected MethodReferenceVisitor(CtExecutableReference mRef, JApiCompatibilityChangeType change) { + super(change); + this.mRef = mRef; + } + + @Override + public void visitCtInvocation(CtInvocation invocation) { + if (mRef.equals(invocation.getExecutable())) { + brokenUse(invocation, invocation.getExecutable(), mRef, APIUse.METHOD_INVOCATION); + } + } + + @Override + public void visitCtMethod(CtMethod m) { + if (mRef.getExecutableDeclaration() instanceof CtMethod method) { + // Redundant check, but the signature equality check + short-circuiting + // avoids invoking the super-expensive isOverriding() on every CtMethod + if (m.getSignature().equals(method.getSignature()) && m.isOverriding(method)) + brokenUse(m, method, mRef, APIUse.METHOD_OVERRIDE); + } + } +} diff --git a/src/main/java/se/kth/sponvisitors/MethodRemovedVisitor.java b/src/main/java/se/kth/sponvisitors/MethodRemovedVisitor.java new file mode 100644 index 0000000..a6bda1b --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/MethodRemovedVisitor.java @@ -0,0 +1,31 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtExecutableReference; + +/** + * Visitor in charge of gathering method removed issues in client code. + *

+ * The visitor detects the following cases: + *

    + *
  • Invocations to the now-removed method. Example: + *
    + *      var a = method();
    + *      
    + *
  • Methods overriding the now-removed method. Example: + *
    + *      @Override
    + *      public void method() { return; }
    + *      
    + *
+ */ +public class MethodRemovedVisitor extends MethodReferenceVisitor { + /** + * Creates a MethodRemovedVisitor instance. + * + * @param mRef the now-removed method + */ + public MethodRemovedVisitor(CtExecutableReference mRef) { + super(mRef, JApiCompatibilityChangeType.METHOD_REMOVED); + } +} diff --git a/src/main/java/se/kth/sponvisitors/MethodReturnTypeChangedVisitor.java b/src/main/java/se/kth/sponvisitors/MethodReturnTypeChangedVisitor.java new file mode 100644 index 0000000..7336c91 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/MethodReturnTypeChangedVisitor.java @@ -0,0 +1,84 @@ +package se.kth.sponvisitors; + + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.code.CtInvocation; +import spoon.reflect.declaration.CtElement; +import spoon.reflect.declaration.CtMethod; +import spoon.reflect.reference.CtExecutableReference; +import spoon.reflect.reference.CtTypeReference; +import util.SpoonTypeHelpers; + +/** + * Visitor in charge of gathering all method return type changed issues in + * client code. + *

+ * The visitor detects the following cases: + *

    + *
  • Invocations to the method in a statement where the expected type is not + * compatible with the new type. + *
    + *      ArrayList a = methodReturnsListNow();
    + *      
    + *
  • Methods overriding the modified method where the new type is not compatible + * with the client method type. + *
    + *      @Override
    + *      public long methodNowReturnsInt() { return 1; }
    + *      
    + *
+ */ +public class MethodReturnTypeChangedVisitor extends BreakingChangeVisitor { + /** + * Spoon reference to the modified method. + */ + private final CtExecutableReference mRef; + + /** + * Spoon reference to the new return type of the modified method. + */ + private final CtTypeReference newType; + + /** + * Actual method that has been changed + */ + private final CtMethod method; + + /** + * Type expected by the new method + */ + private final CtTypeReference expectedType; + + /** + * Creates a MethodReturnTypeChangedVisitor instance. + * + * @param mRef the modified method + * @param newType the new return type of the modified method + */ + public MethodReturnTypeChangedVisitor(CtExecutableReference mRef, CtTypeReference newType) { + super(JApiCompatibilityChangeType.METHOD_RETURN_TYPE_CHANGED); + this.mRef = mRef; + this.newType = newType; + this.method = (CtMethod) mRef.getExecutableDeclaration(); + this.expectedType = SpoonTypeHelpers.inferExpectedType(method); + } + + @Override + public void visitCtInvocation(CtInvocation invocation) { + if (mRef.equals(invocation.getExecutable())) { + CtElement parent = invocation.getParent(); + CtTypeReference expectedType = SpoonTypeHelpers.inferExpectedType(parent); + // FIXME: are there issues with type casts? + if (expectedType != null && !SpoonTypeHelpers.isAssignableFrom(expectedType, newType)) + brokenUse(invocation, invocation.getExecutable(), mRef, APIUse.METHOD_INVOCATION); + } + } + + @Override + public void visitCtMethod(CtMethod m) { + if (m.getSignature().equals(method.getSignature()) && m.isOverriding(method) + && !SpoonTypeHelpers.isAssignableFromOverride(newType, expectedType)) + brokenUse(m, method, mRef, APIUse.METHOD_OVERRIDE); + } +} diff --git a/src/main/java/se/kth/sponvisitors/SuperclassAddedVisitor.java b/src/main/java/se/kth/sponvisitors/SuperclassAddedVisitor.java new file mode 100644 index 0000000..aaa3f83 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/SuperclassAddedVisitor.java @@ -0,0 +1,15 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtTypeReference; + +import java.util.Set; + +/** + * Visitor in charge of gathering all superclass added issues in client code. + */ +public class SuperclassAddedVisitor extends SupertypeAddedVisitor { + public SuperclassAddedVisitor(CtTypeReference clsRef, CtTypeReference newClass) { + super(clsRef, Set.of(newClass), JApiCompatibilityChangeType.SUPERCLASS_ADDED); + } +} diff --git a/src/main/java/se/kth/sponvisitors/SuperclassRemovedVisitor.java b/src/main/java/se/kth/sponvisitors/SuperclassRemovedVisitor.java new file mode 100644 index 0000000..ada825e --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/SuperclassRemovedVisitor.java @@ -0,0 +1,21 @@ +package se.kth.sponvisitors; + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtTypeReference; + +import java.util.Set; + +/** + * Visitor in charge of gathering all superclass removed issues in client code. + */ +public class SuperclassRemovedVisitor extends SupertypeRemovedVisitor { + /** + * Creates a SuperclassRemovedVisitor instance. + * + * @param clsRef reference to the client impacted class + * @param superRef removed superclass + */ + public SuperclassRemovedVisitor(CtTypeReference clsRef, CtTypeReference superRef) { + super(clsRef, Set.of(superRef), JApiCompatibilityChangeType.SUPERCLASS_REMOVED); + } +} diff --git a/src/main/java/se/kth/sponvisitors/SupertypeAddedVisitor.java b/src/main/java/se/kth/sponvisitors/SupertypeAddedVisitor.java new file mode 100644 index 0000000..5d4f9da --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/SupertypeAddedVisitor.java @@ -0,0 +1,70 @@ +package se.kth.sponvisitors; + + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.declaration.CtClass; +import spoon.reflect.reference.CtTypeReference; +import util.SpoonTypeHelpers; + +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Visitor in charge of gathering all supertype added issues in client code. + *

+ * The visitor detects the following cases: + *

    + *
  • Classes extending the affected type. Example: + *
    + *      public class C extends AffectedType { }
    + *      
    + *
+ */ +public class SupertypeAddedVisitor extends BreakingChangeVisitor { + /** + * Spoon reference to the modified type + */ + protected final CtTypeReference clsRef; + + /** + * Set of added supertypes to the class (interfaces and classes). + */ + protected final Set> newTypes; + + /** + * Creates a SupertypeAddedVisitor instance. + * + * @param clsRef class that added the supertype(s) + * @param newTypes set of added supertypes + * @param change kind of breaking change (interface added or superclass + * added) + */ + protected SupertypeAddedVisitor(CtTypeReference clsRef, Set> newTypes, JApiCompatibilityChangeType change) { + super(change); + this.clsRef = clsRef; + this.newTypes = newTypes; + } + + // FIXME: Is there a way to avoid running this on every non-abstract class in the client? + // e.g. by starting with some stricter conditions on the classes we want to look at + @Override + public void visitCtClass(CtClass cls) { + CtTypeReference typeRef = cls.getReference(); + + if (typeRef != null && !cls.isAbstract()) { + Set> interfaces = typeRef.getSuperInterfaces().stream() + .filter(ref -> ref.getTypeDeclaration() != null) + .collect(Collectors.toSet()); + CtTypeReference superclass = typeRef.getSuperclass(); + + if (SpoonTypeHelpers.isSubtype(interfaces, clsRef) && + SpoonTypeHelpers.haveUnimplAbstractMethods(newTypes)) + brokenUse(cls, cls, clsRef, APIUse.IMPLEMENTS); + + if (superclass != null && superclass.isSubtypeOf(clsRef) && + SpoonTypeHelpers.haveUnimplAbstractMethods(newTypes)) + brokenUse(cls, cls, clsRef, APIUse.EXTENDS); + } + } +} diff --git a/src/main/java/se/kth/sponvisitors/SupertypeRemovedVisitor.java b/src/main/java/se/kth/sponvisitors/SupertypeRemovedVisitor.java new file mode 100644 index 0000000..6a86d25 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/SupertypeRemovedVisitor.java @@ -0,0 +1,199 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.SpoonException; +import spoon.reflect.code.*; +import spoon.reflect.declaration.CtMethod; +import spoon.reflect.declaration.CtTypeInformation; +import spoon.reflect.reference.CtExecutableReference; +import spoon.reflect.reference.CtFieldReference; +import spoon.reflect.reference.CtReference; +import spoon.reflect.reference.CtTypeReference; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * Visitor in charge of gathering all supertype removed issues in client code. + *

+ * The visitor detects the following cases: + *

    + *
  • Methods overriding methods declared within the supertype. Example: + * + *
    + * @Override
    + * public void m() {
    + *     return;
    + * }
    + * 
    + * + *
  • Accessing supertype fields via subtypes. Example: + * + *
    + *      AffectedSubtype.field;
    + * 
    + * + *
  • Invoking supertype methods via subtypes. Example: + * + *
    + * AffectedSubtype.method();
    + * 
    + * + *
  • Casting local variables with removed supertype. Example: + * + *
    + * RemovedSupertype s = (RemovedSupertype) subtypeObj;
    + * 
    + *
+ */ +public class SupertypeRemovedVisitor extends BreakingChangeVisitor { + /** + * Spoon reference to the class that removed the supertype(s). + */ + protected final CtTypeReference clsRef; + + /** + * Set of removed supertypes of the class (interfaces and classes). + */ + protected final Set> supertypes; + + /** + * Set of methods defined within the removed supertypes. + */ + protected final Set> superMethods; + + /** + * Set of field defined within the removed supertypes. + */ + protected final Set superFields; + + /** + * Creates a SupertypeRemovedVisitor instance. + * + * @param clsRef class that removed the supertype(s) + * @param supertypes set of removed supertypes + * @param change kind of breaking change (interface removed or superclass + * removed) + */ + protected SupertypeRemovedVisitor(CtTypeReference clsRef, Set> supertypes, + JApiCompatibilityChangeType change) { + super(change); + this.clsRef = clsRef; + this.supertypes = supertypes; + this.superMethods = supertypes.stream().map(CtTypeInformation::getDeclaredExecutables).flatMap(Collection::stream) + .collect(Collectors.toSet()); + this.superFields = supertypes.stream().map(CtTypeInformation::getDeclaredFields).flatMap(Collection::stream) + .map(CtReference::getSimpleName).collect(Collectors.toSet()); + } + + @Override + public void visitCtFieldReference(CtFieldReference fieldRef) { + if (!superFields.contains(fieldRef.getSimpleName())) + return; + + CtTypeReference declType = fieldRef.getDeclaringType(); + CtFieldReference declTypeField = (declType != null) + ? declType.getDeclaredField(fieldRef.getSimpleName()) + : null; + try { + if (declType != null && + ((declType.isSubtypeOf(clsRef) && declTypeField == null) || + // A no static invocation has an invalid position + (!declType.getQualifiedName().equals("java.lang.Object") && + supertypes.contains(declType) && !fieldRef.getPosition().isValidPosition()))) + brokenUse(fieldRef, fieldRef, clsRef, APIUse.FIELD_ACCESS); + } catch (SpoonException e) { + // FIXME: Find fancier solution. A declaration cannot be resolved + } + } + + @Override + public void visitCtInvocation(CtInvocation invocation) { + // FIXME: Assumption-All static methods from the removed supertype are + // being called in a static way. + CtExecutableReference methRef = invocation.getExecutable(); + if (!superMethods.contains(methRef) || isStaticInvocation(invocation)) + return; + + CtTypeReference declType = methRef.getDeclaringType(); + try { + if ((declType.isSubtypeOf(clsRef) && declType.getDeclaredExecutables().contains(methRef)) || + (!declType.getQualifiedName().equals("java.lang.Object") && supertypes.contains(declType))) + brokenUse(invocation, methRef, clsRef, APIUse.METHOD_INVOCATION); + } catch (SpoonException e) { + // FIXME: Find fancier solution. A declaration cannot be resolved + } + } + + /** + * Verifies if there is a static invocation to a method of a removed supertype. + * + * @param invocation method invocation + * @return true if there is a static invocation of a method of one of the + * removed supertypes; otherwise, false. + */ + private boolean isStaticInvocation(CtInvocation invocation) { + CtExecutableReference methRef = invocation.getExecutable(); + CtExpression target = invocation.getTarget(); + if (methRef.isStatic() && target instanceof CtTypeAccess ta + && ta.getPosition().isValidPosition()) { + CtTypeReference refType = ((CtTypeAccess) target).getAccessedType(); + return supertypes.contains(refType); + } + return false; + } + + @Override + public void visitCtMethod(CtMethod m) { + if (superMethods.stream().noneMatch(superM -> superM.getSignature().equals(m.getSignature()))) + return; + + try { + if (m.getDeclaringType().isSubtypeOf(clsRef)) { + CtExecutableReference superMeth = m.getReference().getOverridingExecutable(); + + if (superMeth != null && superMethods.contains(superMeth)) + brokenUse(m, superMeth, clsRef, APIUse.METHOD_OVERRIDE); + } + } catch (SpoonException e) { + // A declaration cannot be resolved + // FIXME: deal with this issue in a fancier way? + } + } + + @Override + public void visitCtAssignment(CtAssignment assignment) { + visitExpAssignment(assignment.getAssignment()); + } + + @Override + public void visitCtLocalVariable(CtLocalVariable localVariable) { + visitExpAssignment(localVariable.getAssignment()); + } + + /** + * Visits an assignment expression and adds a new broken use if the class of the + * object is a subtype of the removed supertype. + * + * @param type of the expression + * @param assignExpr assignment expression + */ + private void visitExpAssignment(CtExpression assignExpr) { + // FIXME: when dealing with interfaces this issue is not reported + // as a compilation error. + if (assignExpr != null) { + Set> casts = new HashSet<>(assignExpr.getTypeCasts()); + CtTypeReference typeRef = assignExpr.getType(); + + if (typeRef != null) { + for (CtTypeReference cast : casts) { + if (supertypes.contains(cast) && typeRef.isSubtypeOf(clsRef)) + brokenUse(assignExpr, cast, clsRef, APIUse.TYPE_DEPENDENCY); + } + } + } + } +} diff --git a/src/main/java/se/kth/sponvisitors/TypeReferenceVisitor.java b/src/main/java/se/kth/sponvisitors/TypeReferenceVisitor.java new file mode 100644 index 0000000..df133f0 --- /dev/null +++ b/src/main/java/se/kth/sponvisitors/TypeReferenceVisitor.java @@ -0,0 +1,79 @@ +package se.kth.sponvisitors; + + +import japicmp.model.JApiCompatibilityChangeType; +import spoon.reflect.reference.CtTypeReference; + +/** + * Generic visitor in charge of gathering type reference issues in client code. + *

+ * It creates a broken use for every reference to the supplied {@link #clsRef}. + * The visitor detects the following cases: + *

    + *
  • Any reference to the referenced class. Example: + *
    + *      public void method(RefClass cls) { }
    + *      
    + *
+ */ +public class TypeReferenceVisitor extends BreakingChangeVisitor { + /** + * Spoon reference to the modified type + */ + protected final CtTypeReference clsRef; + + /** + * Creates a TypeReferenceVisitor instance. + * + * @param clsRef modified type + * @param change kind of breaking change + */ + public TypeReferenceVisitor(CtTypeReference clsRef, JApiCompatibilityChangeType change) { + super(change); + this.clsRef = clsRef; + } + + @Override + public void visitCtTypeReference(CtTypeReference reference) { + if(reference.getSimpleName().contains("PointDistanceFunction")){ + System.out.println("Reference: " + reference); + } + if (clsRef.equals(reference)) { + APIUse use = getAPIUseByRole(reference); + brokenUse(reference.getParent(), reference, clsRef, use); + } + } + + /* + * Uncomment in case we also want to detect: + * - Every reference to a field that it declares + * - Every reference to an executable that it declares + * - Every method that overrides one of its methods + * + @Override + public void visitCtFieldReference(CtFieldReference reference) { + if (clsRef.equals(reference.getDeclaringType())) + brokenUse(reference.getParent(), reference.getFieldDeclaration(), clsRef, APIUse.FIELD_ACCESS); + } + + @Override + public void visitCtExecutableReference(CtExecutableReference reference) { + if (clsRef.equals(reference.getDeclaringType())) + brokenUse(reference.getParent(), reference.getExecutableDeclaration(), clsRef, APIUse.METHOD_INVOCATION); + } + + @Override + public void visitCtMethod(CtMethod m) { + if (m.hasAnnotation(java.lang.Override.class)) { + Optional> superMethod = + m.getTopDefinitions() + .stream() + .filter(superM -> clsRef.equals(superM.getDeclaringType().getReference())) + .findAny(); + + if (superMethod.isPresent()) + brokenUse(m, superMethod.get(), clsRef, APIUse.METHOD_OVERRIDE); + } + } + */ +} diff --git a/src/main/java/se/kth/spoon_compare/BreakingGoodScanner.java b/src/main/java/se/kth/spoon_compare/BreakingGoodScanner.java new file mode 100644 index 0000000..a840d1d --- /dev/null +++ b/src/main/java/se/kth/spoon_compare/BreakingGoodScanner.java @@ -0,0 +1,643 @@ +package se.kth.spoon_compare; + +import lombok.Getter; +import se.kth.breaking_changes.ApiChange; +import se.kth.log_Analyzer.ErrorInfo; +import spoon.reflect.code.*; +import spoon.reflect.declaration.*; +import spoon.reflect.reference.*; +import spoon.reflect.visitor.CtScanner; + +import java.lang.annotation.Annotation; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Set; + +public class BreakingGoodScanner extends CtScanner { + + private final Set apiChanges; + private final List clientLine; + private final Set errorInfo; + @Getter + private final List results = new ArrayList<>(); + + public BreakingGoodScanner(Set apiChanges, Set errorInfo) { + Objects.requireNonNull(apiChanges); + Objects.requireNonNull(errorInfo); + + this.apiChanges = apiChanges; + this.errorInfo = errorInfo; + this.clientLine = errorInfo.stream().map(mavenErrorLog -> Integer.parseInt(mavenErrorLog.getClientLinePosition())).toList(); + + } + + @Override + public void visitCtTypeReference(CtTypeReference reference) { +// if (reference.getPosition().isValidPosition() && clientLine.contains(reference.getPosition().getLine())) { +// SpoonResults spoonResults = new SpoonResults(); +// spoonResults.setElement(reference.toString()); +// spoonResults.setName(reference.getQualifiedName()); +// spoonResults.setClientLine(reference.toString()); +// spoonResults.setPattern(""); +// spoonResults.setErrorInfo(getMavenErrorLog(reference.getPosition().getLine())); +// spoonResults.setCtElement(reference); +// results.add(spoonResults); +// } + super.visitCtTypeReference(reference); + + } + + private ErrorInfo getMavenErrorLog(int line) { + return errorInfo.stream().filter(mavenErrorLog -> mavenErrorLog.getClientLinePosition().equals(String.valueOf(line))).findFirst().orElse(null); + } + + @Override + public void visitCtMethod(CtMethod m) { + if (m.getPosition().isValidPosition() && clientLine.contains(m.getPosition().getLine())) { + SpoonResults spoonResults = new SpoonResults(); + spoonResults.setElement(m.toString()); + spoonResults.setName(m.getSimpleName()); + spoonResults.setClientLine(m.toString()); + spoonResults.setPattern(""); + spoonResults.setErrorInfo(getMavenErrorLog(m.getPosition().getLine())); + spoonResults.setCtElement(m); + results.add(spoonResults); + } + super.visitCtMethod(m); + } + + public
void visitCtAnnotation(CtAnnotation annotation) { + // visitors.forEach(v -> v.visitCtAnnotation(annotation)); + super.visitCtAnnotation(annotation); + } + + @Override + public void visitCtCodeSnippetExpression(CtCodeSnippetExpression expression) { + // visitors.forEach(v -> v.visitCtCodeSnippetExpression(expression)); + super.visitCtCodeSnippetExpression(expression); + } + + @Override + public void visitCtCodeSnippetStatement(CtCodeSnippetStatement statement) { + // visitors.forEach(v -> v.visitCtCodeSnippetStatement(statement)); + super.visitCtCodeSnippetStatement(statement); + } + + @Override + public void visitCtAnnotationType(CtAnnotationType annotationType) { + // visitors.forEach(v -> v.visitCtAnnotationType(annotationType)); + super.visitCtAnnotationType(annotationType); + } + + @Override + public void visitCtAnonymousExecutable(CtAnonymousExecutable anonymousExec) { + // visitors.forEach(v -> v.visitCtAnonymousExecutable(anonymousExec)); + super.visitCtAnonymousExecutable(anonymousExec); + } + + @Override + public void visitCtArrayRead(CtArrayRead arrayRead) { + // visitors.forEach(v -> v.visitCtArrayRead(arrayRead)); + super.visitCtArrayRead(arrayRead); + } + + @Override + public void visitCtArrayWrite(CtArrayWrite arrayWrite) { + // visitors.forEach(v -> v.visitCtArrayWrite(arrayWrite)); + super.visitCtArrayWrite(arrayWrite); + } + + @Override + public void visitCtArrayTypeReference(CtArrayTypeReference reference) { + // visitors.forEach(v -> v.visitCtArrayTypeReference(reference)); + super.visitCtArrayTypeReference(reference); + } + + @Override + public void visitCtAssert(CtAssert asserted) { + // visitors.forEach(v -> v.visitCtAssert(asserted)); + super.visitCtAssert(asserted); + } + + @Override + public void visitCtAssignment(CtAssignment assignement) { + // visitors.forEach(v -> v.visitCtAssignment(assignement)); + super.visitCtAssignment(assignement); + } + + @Override + public void visitCtBinaryOperator(CtBinaryOperator operator) { + // visitors.forEach(v -> v.visitCtBinaryOperator(operator)); + super.visitCtBinaryOperator(operator); + } + + @Override + public void visitCtBlock(CtBlock block) { + // visitors.forEach(v -> v.visitCtBlock(block)); + super.visitCtBlock(block); + } + + @Override + public void visitCtBreak(CtBreak breakStatement) { + // visitors.forEach(v -> v.visitCtBreak(breakStatement)); + super.visitCtBreak(breakStatement); + } + + @Override + public void visitCtCase(CtCase caseStatement) { + // visitors.forEach(v -> v.visitCtCase(caseStatement)); + super.visitCtCase(caseStatement); + } + + @Override + public void visitCtCatch(CtCatch catchBlock) { + // visitors.forEach(v -> v.visitCtCatch(catchBlock)); + super.visitCtCatch(catchBlock); + } + + @Override + public void visitCtClass(CtClass ctClass) { + + // visitors.forEach(v -> v.visitCtClass(ctClass)); + super.visitCtClass(ctClass); + } + + @Override + public void visitCtTypeParameter(CtTypeParameter typeParameter) { + // visitors.forEach(v -> v.visitCtTypeParameter(typeParameter)); + super.visitCtTypeParameter(typeParameter); + } + + @Override + public void visitCtConditional(CtConditional conditional) { + // visitors.forEach(v -> v.visitCtConditional(conditional)); + super.visitCtConditional(conditional); + } + + @Override + public void visitCtConstructor(CtConstructor c) { + // visitors.forEach(v -> v.visitCtConstructor(c)); + super.visitCtConstructor(c); + } + + @Override + public void visitCtContinue(CtContinue continueStatement) { + // visitors.forEach(v -> v.visitCtContinue(continueStatement)); + super.visitCtContinue(continueStatement); + } + + @Override + public void visitCtDo(CtDo doLoop) { + // visitors.forEach(v -> v.visitCtDo(doLoop)); + super.visitCtDo(doLoop); + } + + @Override + public > void visitCtEnum(CtEnum ctEnum) { + // visitors.forEach(v -> v.visitCtEnum(ctEnum)); + super.visitCtEnum(ctEnum); + } + + @Override + public void visitCtExecutableReference(CtExecutableReference reference) { + + apiChanges.stream().filter(apiChange -> { +// System.out.println("Api compatibility: " + apiChange.getCompatibilityChange().getType().toString()); +// System.out.println("Executable Reference: " + reference.getSimpleName()); +// MethodBreakingChange a = (MethodBreakingChange) apiChange.getReference(); +// a.getJApiMethod().getExceptions().forEach(exception -> { +// System.out.println("Exception: " + exception.getName()); +// System.out.println("Incompatibility "+exception.getChangeStatus().toString()); +// }); + + SpoonResults spoonResults = new SpoonResults(); + spoonResults.setName(reference.getSimpleName()); + spoonResults.setCtElement(reference); + spoonResults.setClientLine(reference.toString()); + spoonResults.setElement(reference.getSignature()); + spoonResults.setErrorInfo(getMavenErrorLog(reference.getPosition().getLine())); + results.add(spoonResults); + return false; + }); + + super.visitCtExecutableReference(reference); + } + + @Override + public void visitCtField(CtField f) { + // visitors.forEach(v -> v.visitCtField(f)); + super.visitCtField(f); + } + + @Override + public void visitCtEnumValue(CtEnumValue enumValue) { + // visitors.forEach(v -> v.visitCtEnumValue(enumValue)); + super.visitCtEnumValue(enumValue); + } + + @Override + public void visitCtThisAccess(CtThisAccess thisAccess) { + // visitors.forEach(v -> v.visitCtThisAccess(thisAccess)); + super.visitCtThisAccess(thisAccess); + } + + @Override + public void visitCtFieldReference(CtFieldReference reference) { + // visitors.forEach(v -> v.visitCtFieldReference(reference)); + super.visitCtFieldReference(reference); + } + + @Override + public void visitCtUnboundVariableReference(CtUnboundVariableReference reference) { + // visitors.forEach(v -> v.visitCtUnboundVariableReference(reference)); + super.visitCtUnboundVariableReference(reference); + } + + @Override + public void visitCtFor(CtFor forLoop) { + // visitors.forEach(v -> v.visitCtFor(forLoop)); + super.visitCtFor(forLoop); + } + + @Override + public void visitCtForEach(CtForEach foreach) { + // visitors.forEach(v -> v.visitCtForEach(foreach)); + super.visitCtForEach(foreach); + } + + @Override + public void visitCtIf(CtIf ifElement) { + // visitors.forEach(v -> v.visitCtIf(ifElement)); + super.visitCtIf(ifElement); + } + + @Override + public void visitCtInterface(CtInterface intrface) { + // visitors.forEach(v -> v.visitCtInterface(intrface)); + super.visitCtInterface(intrface); + } + + @Override + public void visitCtInvocation(CtInvocation invocation) { + apiChanges.forEach(apiChange -> { + boolean match = new SpoonCtInvocation(invocation, apiChange).compare(); + if (match) { + SpoonResults spoonResults = new SpoonResults(); + spoonResults.setName(invocation.getExecutable().getSimpleName()); + spoonResults.setCtElement(invocation); + spoonResults.setClientLine(invocation.toString()); + spoonResults.setElement(invocation.getExecutable().getSignature()); + spoonResults.setErrorInfo(getMavenErrorLog(invocation.getPosition().getLine())); + results.add(spoonResults); + } + }); + super.visitCtInvocation(invocation); + } + + @Override + public void visitCtLiteral(CtLiteral literal) { + // visitors.forEach(v -> v.visitCtLiteral(literal)); + super.visitCtLiteral(literal); + } + + @Override + public void visitCtTextBlock(CtTextBlock ctTextBlock) { + // visitors.forEach(v -> v.visitCtTextBlock(ctTextBlock)); + super.visitCtTextBlock(ctTextBlock); + } + + @Override + public void visitCtLocalVariable(CtLocalVariable localVariable) { + // visitors.forEach(v -> v.visitCtLocalVariable(localVariable)); +// if (localVariable.getPosition().isValidPosition() && clientLine.contains(localVariable.getPosition().getLine())) { +// SpoonResults spoonResults = new SpoonResults(); +// spoonResults.setName(localVariable.getSimpleName()); +// spoonResults.setCtElement(localVariable); +// spoonResults.setClientLine(localVariable.toString()); +// spoonResults.setElement(localVariable.getType().toString()); +// spoonResults.setErrorInfo(getMavenErrorLog(localVariable.getPosition().getLine())); +// results.add(spoonResults); +// } + super.visitCtLocalVariable(localVariable); + } + + @Override + public void visitCtLocalVariableReference(CtLocalVariableReference reference) { + // visitors.forEach(v -> v.visitCtLocalVariableReference(reference)); + super.visitCtLocalVariableReference(reference); + } + + @Override + public void visitCtCatchVariable(CtCatchVariable catchVariable) { + // visitors.forEach(v -> v.visitCtCatchVariable(catchVariable)); + super.visitCtCatchVariable(catchVariable); + } + + @Override + public void visitCtCatchVariableReference(CtCatchVariableReference reference) { + // visitors.forEach(v -> v.visitCtCatchVariableReference(reference)); + super.visitCtCatchVariableReference(reference); + } + + + @Override + public void visitCtAnnotationMethod(CtAnnotationMethod annotationMethod) { + // visitors.forEach(v -> v.visitCtAnnotationMethod(annotationMethod)); + super.visitCtAnnotationMethod(annotationMethod); + } + + @Override + public void visitCtNewArray(CtNewArray newArray) { + // visitors.forEach(v -> v.visitCtNewArray(newArray)); + super.visitCtNewArray(newArray); + } + + @Override + public void visitCtConstructorCall(CtConstructorCall ctConstructorCall) { + + for (ApiChange apiChange : apiChanges) { + boolean match = new SpoonCtConstructorCall(ctConstructorCall, apiChange).compare(); + if (match) { + SpoonResults spoonResults = new SpoonResults(); + spoonResults.setName(ctConstructorCall.getExecutable().getDeclaringType().getSimpleName()); + spoonResults.setCtElement(ctConstructorCall); + spoonResults.setClientLine(ctConstructorCall.toString()); + spoonResults.setElement(ctConstructorCall.getExecutable().getSignature()); + spoonResults.setErrorInfo(getMavenErrorLog(ctConstructorCall.getPosition().getLine())); + results.add(spoonResults); + } + } + super.visitCtConstructorCall(ctConstructorCall); + } + + @Override + public void visitCtNewClass(CtNewClass newClass) { + // visitors.forEach(v -> v.visitCtNewClass(newClass)); + super.visitCtNewClass(newClass); + } + + @Override + public void visitCtLambda(CtLambda lambda) { + // visitors.forEach(v -> v.visitCtLambda(lambda)); + super.visitCtLambda(lambda); + } + + @Override + public > void visitCtExecutableReferenceExpression + (CtExecutableReferenceExpression expression) { + // visitors.forEach(v -> v.visitCtExecutableReferenceExpression(expression)); + super.visitCtExecutableReferenceExpression(expression); + } + + @Override + public void visitCtOperatorAssignment(CtOperatorAssignment assignment) { + // visitors.forEach(v -> v.visitCtOperatorAssignment(assignment)); + super.visitCtOperatorAssignment(assignment); + } + + @Override + public void visitCtPackage(CtPackage ctPackage) { + // visitors.forEach(v -> v.visitCtPackage(ctPackage)); + super.visitCtPackage(ctPackage); + } + + @Override + public void visitCtPackageReference(CtPackageReference reference) { + // visitors.forEach(v -> v.visitCtPackageReference(reference)); + super.visitCtPackageReference(reference); + } + + @Override + public void visitCtParameter(CtParameter parameter) { + // visitors.forEach(v -> v.visitCtParameter(parameter)); + super.visitCtParameter(parameter); + } + + @Override + public void visitCtParameterReference(CtParameterReference reference) { + // visitors.forEach(v -> v.visitCtParameterReference(reference)); + super.visitCtParameterReference(reference); + } + + @Override + public void visitCtReturn(CtReturn returnStatement) { + // visitors.forEach(v -> v.visitCtReturn(returnStatement)); + super.visitCtReturn(returnStatement); + } + + @Override + public void visitCtStatementList(CtStatementList statements) { + // visitors.forEach(v -> v.visitCtStatementList(statements)); + super.visitCtStatementList(statements); + } + + @Override + public void visitCtSwitch(CtSwitch switchStatement) { + // visitors.forEach(v -> v.visitCtSwitch(switchStatement)); + super.visitCtSwitch(switchStatement); + } + + @Override + public void visitCtSwitchExpression(CtSwitchExpression switchExpression) { + // visitors.forEach(v -> v.visitCtSwitchExpression(switchExpression)); + super.visitCtSwitchExpression(switchExpression); + } + + @Override + public void visitCtSynchronized(CtSynchronized synchro) { + // visitors.forEach(v -> v.visitCtSynchronized(synchro)); + super.visitCtSynchronized(synchro); + } + + @Override + public void visitCtThrow(CtThrow throwStatement) { + // visitors.forEach(v -> v.visitCtThrow(throwStatement)); + super.visitCtThrow(throwStatement); + } + + @Override + public void visitCtTry(CtTry tryBlock) { + // visitors.forEach(v -> v.visitCtTry(tryBlock)); + super.visitCtTry(tryBlock); + } + + @Override + public void visitCtTryWithResource(CtTryWithResource tryWithResource) { + // visitors.forEach(v -> v.visitCtTryWithResource(tryWithResource)); + super.visitCtTryWithResource(tryWithResource); + } + + @Override + public void visitCtTypeParameterReference(CtTypeParameterReference ref) { + // visitors.forEach(v -> v.visitCtTypeParameterReference(ref)); + super.visitCtTypeParameterReference(ref); + } + + @Override + public void visitCtWildcardReference(CtWildcardReference wildcardReference) { + // visitors.forEach(v -> v.visitCtWildcardReference(wildcardReference)); + super.visitCtWildcardReference(wildcardReference); + } + + @Override + public void visitCtIntersectionTypeReference(CtIntersectionTypeReference reference) { + // visitors.forEach(v -> v.visitCtIntersectionTypeReference(reference)); + super.visitCtIntersectionTypeReference(reference); + } + + @Override + public void visitCtTypeAccess(CtTypeAccess typeAccess) { + // visitors.forEach(v -> v.visitCtTypeAccess(typeAccess)); + super.visitCtTypeAccess(typeAccess); + } + + @Override + public void visitCtUnaryOperator(CtUnaryOperator operator) { + // visitors.forEach(v -> v.visitCtUnaryOperator(operator)); + super.visitCtUnaryOperator(operator); + } + + @Override + public void visitCtVariableRead(CtVariableRead variableRead) { + // visitors.forEach(v -> v.visitCtVariableRead(variableRead)); + + super.visitCtVariableRead(variableRead); + } + + @Override + public void visitCtVariableWrite(CtVariableWrite variableWrite) { + // visitors.forEach(v -> v.visitCtVariableWrite(variableWrite)); + + super.visitCtVariableWrite(variableWrite); + } + + @Override + public void visitCtWhile(CtWhile whileLoop) { + // visitors.forEach(v -> v.visitCtWhile(whileLoop)); + super.visitCtWhile(whileLoop); + } + + @Override + public void visitCtAnnotationFieldAccess(CtAnnotationFieldAccess annotationFieldAccess) { + // visitors.forEach(v -> v.visitCtAnnotationFieldAccess(annotationFieldAccess)); + super.visitCtAnnotationFieldAccess(annotationFieldAccess); + } + + @Override + public void visitCtFieldRead(CtFieldRead fieldRead) { + // visitors.forEach(v -> v.visitCtFieldRead(fieldRead)); + super.visitCtFieldRead(fieldRead); + } + + @Override + public void visitCtFieldWrite(CtFieldWrite fieldWrite) { + // visitors.forEach(v -> v.visitCtFieldWrite(fieldWrite)); + super.visitCtFieldWrite(fieldWrite); + } + + @Override + public void visitCtSuperAccess(CtSuperAccess f) { + // visitors.forEach(v -> v.visitCtSuperAccess(f)); + super.visitCtSuperAccess(f); + } + + @Override + public void visitCtComment(CtComment comment) { + // visitors.forEach(v -> v.visitCtComment(comment)); + super.visitCtComment(comment); + } + + @Override + public void visitCtJavaDoc(CtJavaDoc comment) { + // visitors.forEach(v -> v.visitCtJavaDoc(comment)); + super.visitCtJavaDoc(comment); + } + + @Override + public void visitCtJavaDocTag(CtJavaDocTag docTag) { + // visitors.forEach(v -> v.visitCtJavaDocTag(docTag)); + super.visitCtJavaDocTag(docTag); + } + + @Override + public void visitCtImport(CtImport ctImport) { + // visitors.forEach(v -> v.visitCtImport(ctImport)); + + for (ApiChange apiChange : apiChanges) { + boolean match = new SpoonCtImport(ctImport, apiChange).compare(); + if (match) { + SpoonResults spoonResults = new SpoonResults(); + spoonResults.setName(ctImport.getReference().toString()); + spoonResults.setCtElement(ctImport); + spoonResults.setClientLine(ctImport.toString()); + spoonResults.setElement(ctImport.getReference().toString()); + spoonResults.setErrorInfo(getMavenErrorLog(ctImport.getPosition().getLine())); + results.add(spoonResults); + } + } + + super.visitCtImport(ctImport); + } + + @Override + public void visitCtModule(CtModule module) { + // visitors.forEach(v -> v.visitCtModule(module)); + super.visitCtModule(module); + } + + @Override + public void visitCtModuleReference(CtModuleReference moduleReference) { + // visitors.forEach(v -> v.visitCtModuleReference(moduleReference)); + super.visitCtModuleReference(moduleReference); + } + + @Override + public void visitCtPackageExport(CtPackageExport moduleExport) { + // visitors.forEach(v -> v.visitCtPackageExport(moduleExport)); + super.visitCtPackageExport(moduleExport); + } + + @Override + public void visitCtModuleRequirement(CtModuleRequirement moduleRequirement) { + // visitors.forEach(v -> v.visitCtModuleRequirement(moduleRequirement)); + super.visitCtModuleRequirement(moduleRequirement); + } + + @Override + public void visitCtProvidedService(CtProvidedService moduleProvidedService) { + // visitors.forEach(v -> v.visitCtProvidedService(moduleProvidedService)); + super.visitCtProvidedService(moduleProvidedService); + } + + @Override + public void visitCtUsedService(CtUsedService usedService) { + // visitors.forEach(v -> v.visitCtUsedService(usedService)); + super.visitCtUsedService(usedService); + } + + @Override + public void visitCtCompilationUnit(CtCompilationUnit compilationUnit) { + // visitors.forEach(v -> v.visitCtCompilationUnit(compilationUnit)); + super.visitCtCompilationUnit(compilationUnit); + } + + @Override + public void visitCtPackageDeclaration(CtPackageDeclaration packageDeclaration) { + // visitors.forEach(v -> v.visitCtPackageDeclaration(packageDeclaration)); + super.visitCtPackageDeclaration(packageDeclaration); + } + + @Override + public void visitCtTypeMemberWildcardImportReference(CtTypeMemberWildcardImportReference wildcardReference) { + // visitors.forEach(v -> v.visitCtTypeMemberWildcardImportReference(wildcardReference)); + super.visitCtTypeMemberWildcardImportReference(wildcardReference); + } + + @Override + public void visitCtYieldStatement(CtYieldStatement statement) { + // visitors.forEach(v -> v.visitCtYieldStatement(statement)); + super.visitCtYieldStatement(statement); + } + +} \ No newline at end of file diff --git a/src/main/java/se/kth/spoon_compare/Client.java b/src/main/java/se/kth/spoon_compare/Client.java new file mode 100644 index 0000000..12f339f --- /dev/null +++ b/src/main/java/se/kth/spoon_compare/Client.java @@ -0,0 +1,89 @@ +package se.kth.spoon_compare; + +import com.google.common.base.Stopwatch; +import lombok.Getter; +import lombok.Setter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import spoon.Launcher; +import spoon.MavenLauncher; +import spoon.reflect.CtModel; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Collections; +import java.util.List; + +/** + * We create a class to represent a client based in the Maracas Process. + * This class is used to represent a client. + * It is used to test the comparison of the Spoon library. + * It is used to create Spoon model and add Jar files to the model. + */ +@Getter +@Setter +public class Client { + + // Path to the source file + + private final Path sourcePath; + + private List classpath = Collections.emptyList(); + + private final Logger log = LoggerFactory.getLogger(this.getClass()); + + public Client(Path sourcePath) { + this.sourcePath = sourcePath; + } + + public CtModel createModel() { + Stopwatch sw = Stopwatch.createStarted(); + Launcher launcher; + + // Attempting to get the proper source folders to analyze + if (Files.exists(sourcePath.resolve("pom.xml"))) { + launcher = new MavenLauncher(sourcePath.toString(), MavenLauncher.SOURCE_TYPE.ALL_SOURCE, new String[0]); + } else { + launcher = new Launcher(); + launcher.getEnvironment().setComplianceLevel(11); + launcher.addInputResource(sourcePath.toString()); + } + + //we use same parameter similar to the Maracas project + // Ignore missing types/classpath related errors + launcher.getEnvironment().setNoClasspath(true); + // Ignore duplicate declarations + launcher.getEnvironment().setIgnoreDuplicateDeclarations(true); + // Ignore files with any syntax errors or JLS violations + launcher.getEnvironment().setIgnoreSyntaxErrors(true); + + String[] cp = classpath.stream().map(p -> p.toAbsolutePath().toString()).toList().toArray(new String[0]); + launcher.getEnvironment().setSourceClasspath(cp); + + CtModel spoonModel = launcher.buildModel(); + log.info("Building Spoon model for {} [classpath={}] took {}ms", this, classpath, sw.elapsed().toMillis()); + return spoonModel; + } + + @Override + public String toString() { + return "Client{" + + "sourcePath=" + sourcePath + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Client client = (Client) o; + return sourcePath.equals(client.sourcePath); + } + + @Override + public int hashCode() { + return sourcePath.hashCode(); + } + + +} diff --git a/src/main/java/se/kth/spoon_compare/Main.java b/src/main/java/se/kth/spoon_compare/Main.java index 80f9a6e..94be5a3 100644 --- a/src/main/java/se/kth/spoon_compare/Main.java +++ b/src/main/java/se/kth/spoon_compare/Main.java @@ -1,32 +1,49 @@ package se.kth.spoon_compare; +import se.kth.breaking_changes.ApiChange; +import se.kth.breaking_changes.ApiMetadata; +import se.kth.breaking_changes.JApiCmpAnalyze; import se.kth.log_Analyzer.MavenErrorLog; import se.kth.log_Analyzer.MavenLogAnalyzer; import java.io.File; import java.io.IOException; +import java.nio.file.Path; import java.util.List; +import java.util.Set; public class Main { public static void main(String[] args) { - MavenLogAnalyzer mavenLog = new MavenLogAnalyzer(new File("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/0abf7148300f40a1da0538ab060552bca4a2f1d8/biapi/0abf7148300f40a1da0538ab060552bca4a2f1d8.log")); + MavenLogAnalyzer mavenLog = new MavenLogAnalyzer(new File("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/5cf5a482bd430d81257b4ecd85b3d4f7da911621/jakartaee-mvc-sample/5cf5a482bd430d81257b4ecd85b3d4f7da911621.log")); try { + + ApiMetadata apiMetadata = new ApiMetadata(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/5cf5a482bd430d81257b4ecd85b3d4f7da911621/jakarta.mvc-api-1.1.0.jar")); + ApiMetadata apiMetadata1 = new ApiMetadata(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/5cf5a482bd430d81257b4ecd85b3d4f7da911621/jakarta.mvc-api-2.0.1.jar")); + + JApiCmpAnalyze jApiCmpAnalyze = new JApiCmpAnalyze( + apiMetadata, + apiMetadata1 + ); + + + Set apiChanges = jApiCmpAnalyze.useJApiCmp(); + + MavenErrorLog log = mavenLog.analyzeCompilationErrors(); - String proyect = "/Users/frank/Documents/Work/PHD/Tools"; + String project = "/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/5cf5a482bd430d81257b4ecd85b3d4f7da911621"; log.getErrorInfo().forEach((k, v) -> { System.out.println(k); // v.forEach(System.out::println); - SpoonAnalyzer spoonAnalyzer = new SpoonAnalyzer("net.sf.jasperreports", v); - List results = spoonAnalyzer.applySpoon(proyect + k); - -// results.forEach(System.out::println); + SpoonAnalyzer spoonAnalyzer = new SpoonAnalyzer(v, apiChanges,null); + List results = spoonAnalyzer.applySpoon(project + k); + System.out.println("Amount of instructions: " + results.size()); }); diff --git a/src/main/java/se/kth/spoon_compare/SpoonAnalyzer.java b/src/main/java/se/kth/spoon_compare/SpoonAnalyzer.java index c73e25d..7665451 100644 --- a/src/main/java/se/kth/spoon_compare/SpoonAnalyzer.java +++ b/src/main/java/se/kth/spoon_compare/SpoonAnalyzer.java @@ -1,14 +1,21 @@ package se.kth.spoon_compare; -import se.kth.log_Analyzer.MavenErrorLog; -import spoon.Launcher; +import se.kth.breaking_changes.ApiChange; +import se.kth.breaking_changes.BreakingGoodOptions; +import se.kth.log_Analyzer.ErrorInfo; +import se.kth.sponvisitors.BreakingChangeVisitor; +import se.kth.sponvisitors.BrokenUse; +import se.kth.sponvisitors.CombinedVisitor; import spoon.reflect.CtModel; +import spoon.reflect.code.CtComment; import spoon.reflect.code.CtConstructorCall; import spoon.reflect.code.CtInvocation; import spoon.reflect.declaration.CtClass; import spoon.reflect.declaration.CtElement; +import spoon.reflect.declaration.CtMethod; import spoon.reflect.declaration.CtType; import spoon.reflect.visitor.filter.TypeFilter; +import spoon.support.reflect.declaration.CtFieldImpl; import java.util.*; @@ -17,20 +24,84 @@ public class SpoonAnalyzer { private String dependencyGroupID; + private Set mavenErrorLog; + private Set apiChanges; + private List errorLines = new ArrayList<>(); + private CtModel model; - private Set mavenErrorLog; - public SpoonAnalyzer(String dependencyGroupID, Set mavenErrorLog) { - this.dependencyGroupID = dependencyGroupID; + public SpoonAnalyzer(Set mavenErrorLog, Set apiChanges, CtModel model) { this.mavenErrorLog = mavenErrorLog; + this.apiChanges = apiChanges; + this.model = model; + + errorLines.addAll(mavenErrorLog.stream().map(m -> Integer.parseInt(m.getClientLinePosition())).toList()); + + } + + private static boolean shouldBeIgnored(CtElement element) { + return element instanceof CtComment || element.isImplicit(); + } + + + public Set applySpoonV2(List breakingChangeVisitors, BreakingGoodOptions opts, String fileInClient) { + CombinedVisitor visitor = new CombinedVisitor(breakingChangeVisitors, opts); + List elements = model.filterChildren(element -> + !shouldBeIgnored(element) + && element.getPosition().isValidPosition() + && element.getPosition().toString().contains(fileInClient) + && errorLines.contains(element.getPosition().getLine()) + ).list(); + +// add imports manually because they are not in the children list + model.getRootPackage().getFactory().CompilationUnit().getMap().forEach((k, v) -> { + if (v.getPosition().toString().contains(fileInClient)) { + v.getImports().forEach(imp -> { + if (!shouldBeIgnored(imp) + && imp.getPosition().isValidPosition() + && errorLines.contains(imp.getPosition().getLine())) { + elements.add(imp); + } + }); + } + }); + visitor.scan(elements); + // We still need to visit the root package afterwards. +// visitor.scan(model.getRootPackage()); + return visitor.getBrokenUses(); } - public List applySpoon(String projectFilePath) { - Launcher spoon = new Launcher(); - spoon.addInputResource(projectFilePath); - spoon.buildModel(); + public List applySpoon(String fileInClient) { + // filter elements for breaking positions + List elements = model.filterChildren(element -> + !shouldBeIgnored(element) + && element.getPosition().isValidPosition() + && element.getPosition().toString().contains(fileInClient) + && errorLines.contains(element.getPosition().getLine()) + + ).list(); + + //add imports manually because they are not in the children list +// model.getRootPackage().getFactory().CompilationUnit().getMap().forEach((k, v) -> { +// if (v.getPosition().toString().contains(fileInClient)) { +// v.getImports().forEach(imp -> { +// if (!shouldBeIgnored(imp) +// && imp.getPosition().isValidPosition() +// && errorLines.contains(imp.getPosition().getLine())) { +// elements.add(imp); +// } +// }); +// } +// }); + + BreakingGoodScanner scanner = new BreakingGoodScanner(apiChanges, mavenErrorLog); + try { + scanner.scan(elements); + } catch (Exception e) { + e.printStackTrace(); + } + return scanner.getResults(); - return getElementFromSourcePosition(spoon.getModel(), dependencyGroupID); } @@ -44,38 +115,73 @@ public List getElementFromSourcePosition(CtModel model, String dep if (!e.isImplicit() && e.getPosition().isValidPosition() && isInvalidLine(e.getPosition().getLine())) { SpoonResults spoonResults = new SpoonResults(); - MavenErrorLog.ErrorInfo mavenErrorLog = getMavenErrorLog(e.getPosition().getLine()); -//// + ErrorInfo mavenErrorLog = getMavenErrorLog(e.getPosition().getLine()); + if (e instanceof CtInvocation) { - String parsedElement = parseProject(((CtInvocation) e).getExecutable(), depGrpId); - if (parsedElement != null) { - spoonResults.setElement(String.valueOf(((CtInvocation) e).getExecutable())); - spoonResults.setName(parsedElement); - spoonResults.setClientLine(e.toString()); - spoonResults.setPattern(replacePatterns(mavenErrorLog.getErrorMessage())); - spoonResults.setErrorInfo(mavenErrorLog); - results.add(spoonResults); - } +// String parsedElement = parseProject(((CtInvocation) e).getExecutable(), depGrpId); +// if (parsedElement != null) { + spoonResults.setElement(String.valueOf(((CtInvocation) e).getExecutable())); + spoonResults.setName(((CtInvocation) e).getExecutable().getSimpleName()); + spoonResults.setClientLine(e.toString()); + spoonResults.setPattern(replacePatterns(mavenErrorLog.getErrorMessage())); + spoonResults.setErrorInfo(mavenErrorLog); + spoonResults.setCtElement(e); + results.add(spoonResults); + +// } } if (e instanceof CtConstructorCall) { - String parsedElement = parseProject(((CtConstructorCall) e).getExecutable(), depGrpId); - if (parsedElement != null) { - spoonResults.setElement(String.valueOf(((CtConstructorCall) e).getExecutable())); - spoonResults.setName(parsedElement); - spoonResults.setClientLine(e.toString()); - spoonResults.setPattern(replacePatterns(mavenErrorLog.getErrorMessage())); - spoonResults.setErrorInfo(mavenErrorLog); - results.add(spoonResults); +// String parsedElement = parseProject(((CtConstructorCall) e).getExecutable(), depGrpId); +// if (parsedElement != null) { + spoonResults.setElement(String.valueOf(((CtConstructorCall) e).getExecutable())); + spoonResults.setName(String.valueOf(((CtConstructorCall) e).getExecutable())); + spoonResults.setClientLine(e.toString()); + spoonResults.setPattern(replacePatterns(mavenErrorLog.getErrorMessage())); + spoonResults.setErrorInfo(mavenErrorLog); + spoonResults.setCtElement(e); + results.add(spoonResults); + System.out.println(((CtConstructorCall) e).getExecutable()); + + +// } + } + if (e instanceof CtClass) { + spoonResults.setElement(String.valueOf(e)); + spoonResults.setName(String.valueOf(e)); + spoonResults.setClientLine(e.toString()); + spoonResults.setPattern(replacePatterns(mavenErrorLog.getErrorMessage())); + spoonResults.setErrorInfo(mavenErrorLog); + spoonResults.setCtElement(e); + results.add(spoonResults); + System.out.println(((CtClass) e).getReference()); + } - } + if (e instanceof CtFieldImpl) { + spoonResults.setElement(String.valueOf(e)); + spoonResults.setName(String.valueOf(e)); + spoonResults.setClientLine(e.toString()); + spoonResults.setPattern(replacePatterns(mavenErrorLog.getErrorMessage())); + spoonResults.setErrorInfo(mavenErrorLog); + spoonResults.setCtElement(e); + results.add(spoonResults); + System.out.println(((CtFieldImpl) e).getType()); + System.out.println(Arrays.toString(((CtFieldImpl) e).getReferencedTypes().toArray())); + } + if (e instanceof CtMethod) { + System.out.println(((CtMethod) e).getSignature()); + + } + + if (e instanceof CtType) { + System.out.println(((CtType) e).getReference()); } } } return results; } - private MavenErrorLog.ErrorInfo getMavenErrorLog(int line) { + private ErrorInfo getMavenErrorLog(int line) { return mavenErrorLog.stream().filter(mavenErrorLog -> mavenErrorLog.getClientLinePosition().equals(String.valueOf(line))).findFirst().orElse(null); } diff --git a/src/main/java/se/kth/spoon_compare/SpoonCtConstructorCall.java b/src/main/java/se/kth/spoon_compare/SpoonCtConstructorCall.java new file mode 100644 index 0000000..c1ced5d --- /dev/null +++ b/src/main/java/se/kth/spoon_compare/SpoonCtConstructorCall.java @@ -0,0 +1,36 @@ +package se.kth.spoon_compare; + +import japicmp.model.JApiCompatibilityChangeType; +import se.kth.breaking_changes.ApiChange; +import se.kth.breaking_changes.MethodBreakingChange; +import spoon.reflect.code.CtConstructorCall; + +import java.util.Objects; + +public class SpoonCtConstructorCall { + private JApiCompatibilityChangeType compatibilityChangeType; + private CtConstructorCall invocation; + private ApiChange apiChange; + + public SpoonCtConstructorCall(CtConstructorCall invocation, ApiChange apiChange) { + Objects.requireNonNull(invocation); + Objects.requireNonNull(apiChange); + this.compatibilityChangeType = apiChange.getCompatibilityChange(); + this.invocation = invocation; + this.apiChange = apiChange; + } + + public boolean compare() { + return switch (compatibilityChangeType) { + case CONSTRUCTOR_REMOVED -> constructorRemoved(); + default -> false; + }; + } + + private boolean constructorRemoved() { + String invocationSignature = invocation.getExecutable().getDeclaringType().getQualifiedName(); + String apiReference = ((MethodBreakingChange) apiChange.getReference()).getJApiMethod().getjApiClass().getFullyQualifiedName(); + return invocationSignature.equals(apiReference); + + } +} diff --git a/src/main/java/se/kth/spoon_compare/SpoonCtImport.java b/src/main/java/se/kth/spoon_compare/SpoonCtImport.java new file mode 100644 index 0000000..9540818 --- /dev/null +++ b/src/main/java/se/kth/spoon_compare/SpoonCtImport.java @@ -0,0 +1,42 @@ +package se.kth.spoon_compare; + +import japicmp.model.JApiCompatibilityChangeType; +import se.kth.breaking_changes.ApiChange; +import se.kth.breaking_changes.TypeBreakingChange; +import spoon.reflect.declaration.CtImport; + +import java.util.Objects; + +public class SpoonCtImport { + private JApiCompatibilityChangeType compatibilityChangeType; + private CtImport invocation; + private ApiChange apiChange; + + + public SpoonCtImport(CtImport invocation, ApiChange apiChange) { + Objects.requireNonNull(invocation); + Objects.requireNonNull(apiChange); + this.compatibilityChangeType = apiChange.getCompatibilityChange(); + this.invocation = invocation; + this.apiChange = apiChange; + } + + public boolean compare() { + return switch (compatibilityChangeType) { + case CLASS_REMOVED -> classRemoved(); + default -> false; + }; + } + + private boolean classRemoved() { + if (apiChange.getReference() == null) { + return false; + } + if (invocation.getReference() == null) { + return false; + } + String invocationSignature = invocation.getReference().toString(); + String apiReference = ((TypeBreakingChange) apiChange.getReference()).getFullQualifiedName(); + return invocationSignature.equals(apiReference); + } +} diff --git a/src/main/java/se/kth/spoon_compare/SpoonCtInvocation.java b/src/main/java/se/kth/spoon_compare/SpoonCtInvocation.java new file mode 100644 index 0000000..f05953e --- /dev/null +++ b/src/main/java/se/kth/spoon_compare/SpoonCtInvocation.java @@ -0,0 +1,86 @@ +package se.kth.spoon_compare; + +import japicmp.model.JApiCompatibilityChangeType; +import se.kth.breaking_changes.ApiChange; +import se.kth.core.Util; +import spoon.reflect.code.CtInvocation; + +@lombok.Getter +@lombok.Setter +public class SpoonCtInvocation { + + private JApiCompatibilityChangeType compatibilityChangeType; + private CtInvocation invocation; + private ApiChange apiChange; + + public SpoonCtInvocation(CtInvocation invocation, ApiChange apiChange) { + this.compatibilityChangeType = apiChange.getCompatibilityChange(); + this.invocation = invocation; + this.apiChange = apiChange; + } + + + public boolean compare() { + switch (compatibilityChangeType) { + case METHOD_REMOVED: + return methodRemove(); + + case INTERFACE_REMOVED: + interfaceRemove(); + break; + + case SUPERCLASS_REMOVED: + superClassRemove(); + break; + case CONSTRUCTOR_REMOVED: + return constructorRemove(); + + case METHOD_NOW_ABSTRACT: + return methodNowAbstract(); + + case METHOD_RETURN_TYPE_CHANGED: + return methodReturnTypeChanged(); + + default: + return false; + + } + return false; + } + + private boolean methodReturnTypeChanged() { + String invocationName = Util.fullyQualifiedName(invocation.getExecutable()); + String apiReference = apiChange.getReference().getFullQualifiedName(); + return invocationName.equals(apiReference); + } + + private boolean methodNowAbstract() { + String invocationName = Util.fullyQualifiedName(invocation.getExecutable()); + String apiReference = apiChange.getReference().getFullQualifiedName(); + return invocationName.equals(apiReference); + } + + private void superClassRemove() { + } + + private boolean constructorRemove() { + String invocationName = Util.fullyQualifiedName(invocation.getExecutable()); + String apiReference = apiChange.getReference().getFullQualifiedName(); + return invocationName.equals(apiReference); + } + + private void interfaceRemove() { + String invocationName = Util.fullyQualifiedName(invocation.getExecutable()); + + } + + + public boolean methodRemove() { + + String invocationName = Util.fullyQualifiedName(invocation.getExecutable()); + String apiReference = apiChange.getReference().getFullQualifiedName(); + return invocationName.equals(apiReference); + } + + +} diff --git a/src/main/java/se/kth/spoon_compare/SpoonCtTypeReference.java b/src/main/java/se/kth/spoon_compare/SpoonCtTypeReference.java new file mode 100644 index 0000000..a070bed --- /dev/null +++ b/src/main/java/se/kth/spoon_compare/SpoonCtTypeReference.java @@ -0,0 +1,46 @@ +package se.kth.spoon_compare; + +import japicmp.model.JApiCompatibilityChangeType; +import se.kth.breaking_changes.ApiChange; +import se.kth.core.Util; +import spoon.reflect.code.CtInvocation; + +import java.util.Objects; + +public class SpoonCtTypeReference { + + private JApiCompatibilityChangeType compatibilityChangeType; + private CtInvocation invocation; + private ApiChange apiChange; + + public SpoonCtTypeReference(CtInvocation invocation, ApiChange apiChange) { + Objects.requireNonNull(invocation); + Objects.requireNonNull(apiChange); + this.compatibilityChangeType = apiChange.getCompatibilityChange(); + this.invocation = invocation; + this.apiChange = apiChange; + } + + public boolean compare() { + return switch (compatibilityChangeType) { + case CLASS_LESS_ACCESSIBLE -> classLessAccessible(); + case ANNOTATION_DEPRECATED_ADDED -> annotationDeprecatedAdded(); + case CLASS_REMOVED -> classRemoved(); + default -> false; + }; + } + + private boolean classRemoved() { + String invocationName = Util.fullyQualifiedName(invocation.getExecutable()); + String apiReference = apiChange.getReference().getFullQualifiedName(); + return invocationName.equals(apiReference); + } + + private boolean annotationDeprecatedAdded() { + return false; + } + + private boolean classLessAccessible() { + return false; + } +} diff --git a/src/main/java/se/kth/spoon_compare/SpoonReference.java b/src/main/java/se/kth/spoon_compare/SpoonReference.java new file mode 100644 index 0000000..087eedc --- /dev/null +++ b/src/main/java/se/kth/spoon_compare/SpoonReference.java @@ -0,0 +1,11 @@ +package se.kth.spoon_compare; + +public interface SpoonReference { + + public String getName(); + public String getElement(); + + + + +} diff --git a/src/main/java/se/kth/spoon_compare/SpoonResults.java b/src/main/java/se/kth/spoon_compare/SpoonResults.java index 794d474..045d160 100644 --- a/src/main/java/se/kth/spoon_compare/SpoonResults.java +++ b/src/main/java/se/kth/spoon_compare/SpoonResults.java @@ -1,7 +1,10 @@ package se.kth.spoon_compare; +import se.kth.log_Analyzer.ErrorInfo; import se.kth.log_Analyzer.MavenErrorLog; +import spoon.reflect.declaration.CtElement; +import spoon.reflect.reference.CtReference; @lombok.Getter @lombok.Setter @@ -11,20 +14,24 @@ public class SpoonResults { String element; String clientLine; String pattern; - MavenErrorLog.ErrorInfo errorInfo; + ErrorInfo errorInfo; + CtElement ctElement; - public SpoonResults(String name, String element, String clientLine, String pattern, MavenErrorLog.ErrorInfo errorInfo) { + + public SpoonResults(String name, String element, String clientLine, String pattern, ErrorInfo errorInfo,CtElement ctElement) { this.name = name; this.element = element; this.clientLine = clientLine; this.pattern = pattern; this.errorInfo = errorInfo; + this.ctElement = ctElement; } public SpoonResults() { } public String toString() { + ctElement.getShortRepresentation(); return "SpoonResults{" + "name='" + name + '\'' + ", element='" + element + '\'' + ", line='" + clientLine + '\'' + ", pattern='" + pattern + '\'' + ", errorInfo=" + errorInfo.toString() + '}'; } diff --git a/src/main/java/se/kth/transitive_changes/CompareTransitiveDependency.java b/src/main/java/se/kth/transitive_changes/CompareTransitiveDependency.java new file mode 100644 index 0000000..601e7a7 --- /dev/null +++ b/src/main/java/se/kth/transitive_changes/CompareTransitiveDependency.java @@ -0,0 +1,65 @@ +package se.kth.transitive_changes; + +import lombok.Getter; +import se.kth.breaking_changes.ApiMetadata; +import se.kth.breaking_changes.Download; +import se.kth.breaking_changes.JApiCmpAnalyze; +import se.kth.japianalysis.BreakingChange; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +@Getter +public class CompareTransitiveDependency { + + Dependency newVersion; + + Dependency oldVersion; + + List breakingChanges; + + public CompareTransitiveDependency(Dependency newVersion, Dependency oldVersion) { + this.newVersion = newVersion; + this.oldVersion = oldVersion; + } + + + public ApiMetadata convertToApiMetadata(Dependency dependency, Path folder) throws IOException, InterruptedException { + + File file = Download.getJarFile(dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), folder); + + if (file == null) { + System.out.println("Could not download the jar file for " + dependency); + return null; + } + return new ApiMetadata(file.toPath()); + } + + public void compareDependency() throws IOException, InterruptedException { + + Path tmp = Files.createTempDirectory("tmp"); + + ApiMetadata apiMetadataNewVersion = convertToApiMetadata(newVersion, tmp); + + ApiMetadata apiMetadataOldVersion = convertToApiMetadata(oldVersion, tmp); + // compare the dependencies + JApiCmpAnalyze jApiCmpAnalyze = new JApiCmpAnalyze( + apiMetadataNewVersion, + apiMetadataOldVersion + ); + breakingChanges = jApiCmpAnalyze.useJApiCmp_v2(); + } + + @Override + public String toString() { + return "CompareTransitiveDependency{" + + "newVersion=" + newVersion + + ", oldVersion=" + oldVersion + + + '}'; + } + +} diff --git a/src/main/java/se/kth/transitive_changes/Dependency.java b/src/main/java/se/kth/transitive_changes/Dependency.java new file mode 100644 index 0000000..9ca785a --- /dev/null +++ b/src/main/java/se/kth/transitive_changes/Dependency.java @@ -0,0 +1,48 @@ +package se.kth.transitive_changes; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Dependency { + + private String groupId; + private String artifactId; + private String version; + + + public Dependency(String groupId, String artifactId, String scope, String version) { + this.groupId = groupId; + this.artifactId = artifactId; + this.version = version; + } + + @Override + public String toString() { + return "Dependency{" + + "groupId='" + groupId + '\'' + + ", artifactId='" + artifactId + '\'' + + ", version='" + version + '\'' + + '}'; + } + + @Override + public int hashCode() { + return groupId.hashCode() + artifactId.hashCode() + version.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Dependency other = (Dependency) obj; + return groupId.equals(other.groupId) + && artifactId.equals(other.artifactId) + && version.equals(other.version); + } +} diff --git a/src/main/java/se/kth/transitive_changes/Main.java b/src/main/java/se/kth/transitive_changes/Main.java new file mode 100644 index 0000000..0537055 --- /dev/null +++ b/src/main/java/se/kth/transitive_changes/Main.java @@ -0,0 +1,40 @@ +package se.kth.transitive_changes; + +import se.kth.breaking_changes.ApiMetadata; +import se.kth.core.Util; +import se.kth.data.JsonUtils; + +import java.nio.file.Path; +import java.util.Set; + +public class Main { + + + public static void main(String[] args) { + + ApiMetadata apiMetadata = new ApiMetadata(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/0a11c04038eae517540051dbf51f7f26b7221f20/snakeyaml-1.24.jar")); + ApiMetadata apiMetadata2 = new ApiMetadata(Path.of("/Users/frank/Documents/Work/PHD/Explaining/breaking-good/projects/0a11c04038eae517540051dbf51f7f26b7221f20/snakeyaml-2.0.jar")); + + Set v1 = MavenTree.read(apiMetadata); + Set v2 = MavenTree.read(apiMetadata2); + + Set transitiveDependencies = MavenTree.diff(v1, v2); + + for (PairTransitiveDependency pair : transitiveDependencies) { + try { + System.out.println("Comparing " + pair.newVersion() + " and " + pair.oldVersion()); + CompareTransitiveDependency compareTransitiveDependency = new CompareTransitiveDependency(pair.newVersion(), pair.oldVersion()); + compareTransitiveDependency.compareDependency(); + System.out.println("Breaking changes for " + pair.newVersion() + " and " + pair.oldVersion()); + System.out.println("Breaking Changes amount: " + compareTransitiveDependency.getBreakingChanges().size()); + + JsonUtils.writeToFile(Path.of("breaking-changes-%s.json".formatted(pair.oldVersion().getArtifactId())),compareTransitiveDependency); + + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + +} diff --git a/src/main/java/se/kth/transitive_changes/MavenTree.java b/src/main/java/se/kth/transitive_changes/MavenTree.java new file mode 100644 index 0000000..8546094 --- /dev/null +++ b/src/main/java/se/kth/transitive_changes/MavenTree.java @@ -0,0 +1,129 @@ +package se.kth.transitive_changes; + +import lombok.Getter; +import lombok.Setter; +import se.kth.breaking_changes.ApiMetadata; +import util.MavenCommand; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@Getter +@Setter +public class MavenTree { + + ApiMetadata apiMetadata; + + + public MavenTree() { + + } + + + /** + * Read the pom file and create a tree of dependencies + * + * @param apiMetadata the metadata of the api + * @return the set of dependencies + */ + public static Set read(ApiMetadata apiMetadata) { + // read the pom file and create a tree + try { + //create a temporary file to store the pom file + Path pom = Files.createTempFile("tmp-pom", ".xml"); + Path treeFile = Files.createFile(Path.of("trees%s.txt".formatted(new Date().getTime()))); + apiMetadata.extractPomFromJar(pom); + + //execute the maven command to get the dependency tree + String command = "mvn dependency:tree -DoutputType=dot -f %s -DoutputFile=%s".formatted(pom.toAbsolutePath().toString(), treeFile.toAbsolutePath().toString()); + MavenCommand.execCommand(command, null); + return parseTree(treeFile); + + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + + /** + * Parse the tree file and create a set of dependencies + * + * @param treeFile the file containing the tree + * @return the set of dependencies + */ + public static Set parseTree(Path treeFile) { + Set dependencies = new HashSet<>(); + + //parse the tree file and create a tree + try { + List lines = Files.readAllLines(treeFile); + for (String line : lines) { + if (line.contains("->")) { + String[] parts = line.split("->"); + String parent = parts[0].trim(); + String child = parts[1].trim(); + Dependency parentDependency = readDependency(parent); + Dependency childDependency = readDependency(child); + dependencies.add(parentDependency); + dependencies.add(childDependency); + + } + } + + return dependencies; + + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + + + /** + * Read a dependency from a line + * + * @param line the line + * @return the dependency + */ + private static Dependency readDependency(String line) { + String[] parts = line.split(":"); + return new Dependency(parts[0].split("\"")[1], parts[1], parts[2], parts[3].split("\"")[0]); + } + + + /* + * Compare two sets of dependencies and print the differences + */ + public static Set diff(Set v1, Set v2) { + + Set transitiveDependencies = new HashSet<>(); + + + v2.forEach(d -> { + for (Dependency oldVersion : v1) { + if (oldVersion.getGroupId().equals(d.getGroupId()) && oldVersion.getArtifactId().equals(d.getArtifactId()) && !oldVersion.getVersion().equals(d.getVersion())) { + System.out.println("New version: %s".formatted(d)); + + System.out.println("Old version: %s".formatted(oldVersion)); + + PairTransitiveDependency pairTransitiveDependency = new PairTransitiveDependency(d, oldVersion); + transitiveDependencies.add(pairTransitiveDependency); + } + } + }); + + return transitiveDependencies; + } + + + public void getChanges() { + + } + + +} diff --git a/src/main/java/se/kth/transitive_changes/PairTransitiveDependency.java b/src/main/java/se/kth/transitive_changes/PairTransitiveDependency.java new file mode 100644 index 0000000..40e64c3 --- /dev/null +++ b/src/main/java/se/kth/transitive_changes/PairTransitiveDependency.java @@ -0,0 +1,38 @@ +package se.kth.transitive_changes; + +/* + * Represents a pair of transitive dependencies + * Contains the new version and the old version + + */ +public record PairTransitiveDependency( + Dependency newVersion, + Dependency oldVersion +) { + + @Override + public String toString() { + return "PairTransitiveDependency{" + + "newVersion=" + newVersion + + ", oldVersion=" + oldVersion + + '}'; + } + + @Override + public int hashCode() { + return newVersion.hashCode() + oldVersion.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + PairTransitiveDependency other = (PairTransitiveDependency) obj; + return newVersion.equals(other.newVersion) + && oldVersion.equals(other.oldVersion); + } +} diff --git a/src/main/java/util/BinaryToSourceMapper.java b/src/main/java/util/BinaryToSourceMapper.java new file mode 100644 index 0000000..e63d6dd --- /dev/null +++ b/src/main/java/util/BinaryToSourceMapper.java @@ -0,0 +1,114 @@ +package util; + +import spoon.reflect.declaration.*; +import spoon.reflect.reference.CtExecutableReference; +import spoon.reflect.reference.CtFieldReference; +import spoon.reflect.reference.CtReference; +import spoon.reflect.reference.CtTypeReference; + +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +/** + * A BinaryToSourceMapper attempts to map Spoon's {@link CtReference} + * extracted from binary code (typically the old JAR) to the corresponding + * {@link CtElement} in the source code version of this JAR. + *

+ * A parent-last classloader that will try the child classloader first and then the parent. + * This takes a fair bit of doing because java really prefers parent-first. + *

+ * For those not familiar with class loading trickery, be wary + */ +public class ParentLastURLClassLoader extends URLClassLoader { + private final ChildURLClassLoader childClassLoader; + + /** + * This class allows me to call findClass on a classloader + */ + private static class FindClassClassLoader extends ClassLoader { + public FindClassClassLoader(ClassLoader parent) { + super(parent); + } + + @Override + public Class findClass(String name) throws ClassNotFoundException { + return super.findClass(name); + } + } + + /** + * This class delegates (child then parent) for the findClass method for a URLClassLoader. + * We need this because findClass is protected in URLClassLoader + */ + private static class ChildURLClassLoader extends URLClassLoader { + private final FindClassClassLoader realParent; + + public ChildURLClassLoader(URL[] urls, FindClassClassLoader realParent) { + super(urls, null); + this.realParent = realParent; + } + + @Override + public Class findClass(String name) throws ClassNotFoundException { + Class loaded = super.findLoadedClass(name); + if (loaded != null) + return loaded; + + try { + // first try to use the URLClassLoader findClass + return super.findClass(name); + } catch (ClassNotFoundException e) { + // if that fails, we ask our real parent classloader to load the class (we give up) + return realParent.loadClass(name); + } + } + } + + public ParentLastURLClassLoader(URL[] urls) { + super(urls, Thread.currentThread().getContextClassLoader()); + childClassLoader = new ChildURLClassLoader(urls, new FindClassClassLoader(this.getParent())); + } + + public ParentLastURLClassLoader(URL[] urls, ClassLoader parent) { + super(urls, parent); + childClassLoader = new ChildURLClassLoader(urls, new FindClassClassLoader(this.getParent())); + } + + @Override + protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { + try { + // first we try to find a class inside the child classloader + return childClassLoader.findClass(name); + } catch (ClassNotFoundException e) { + // didn't find it, try the parent + return super.loadClass(name, resolve); + } + } +} diff --git a/src/main/java/util/PathHelpers.java b/src/main/java/util/PathHelpers.java new file mode 100644 index 0000000..2289e6f --- /dev/null +++ b/src/main/java/util/PathHelpers.java @@ -0,0 +1,31 @@ +package util; + +import java.nio.file.Files; +import java.nio.file.Path; + +public final class PathHelpers { + + private PathHelpers() { + } + + /** + * Checks whether {@code p} is a non-null {@link Path} to an existing JAR file + */ + public static boolean isValidJar(Path p) { + return + p != null && + Files.exists(p) && + Files.isRegularFile(p) && + p.getFileName().toString().endsWith(".jar"); + } + + /** + * Checks whether {@code p} is a non-null {@link Path} to an existing directory + */ + public static boolean isValidDirectory(Path p) { + return + p != null && + Files.exists(p) && + Files.isDirectory(p); + } +} diff --git a/src/main/java/util/SpoonHelpers.java b/src/main/java/util/SpoonHelpers.java new file mode 100644 index 0000000..ae48264 --- /dev/null +++ b/src/main/java/util/SpoonHelpers.java @@ -0,0 +1,129 @@ +package util; + +import japicmp.model.JApiConstructor; +import japicmp.model.JApiMethod; +import japicmp.model.JApiParameter; +import javassist.CtBehavior; +import spoon.reflect.code.CtTypeAccess; +import spoon.reflect.cu.position.NoSourcePosition; +import spoon.reflect.declaration.*; +import spoon.reflect.reference.CtExecutableReference; +import spoon.reflect.reference.CtFieldReference; +import spoon.reflect.reference.CtReference; +import spoon.reflect.reference.CtTypeReference; + +import java.util.List; + +import static java.util.stream.Collectors.joining; + +public final class SpoonHelpers { + private SpoonHelpers() { + } + + public static CtElement firstLocatableParent(CtElement element) { + CtElement parent = element; + do { + if (!(parent.getPosition() instanceof NoSourcePosition)) + return parent; + } while ((parent = parent.getParent()) != null); + return null; + } + + public static String buildSpoonSignature(JApiMethod m) { + String returnType = m.getReturnType().getOldReturnType(); + if (returnType.equals("n.a.")) + returnType = "void"; + String type = m.getjApiClass().getFullyQualifiedName(); + String name = m.getName(); + String params = m.getParameters().stream().map(JApiParameter::getType).collect(joining(",")); + return "%s %s#%s(%s)".formatted(returnType, type, name, params); + } + + public static String buildSpoonSignature(JApiConstructor cons) { + String type = cons.getjApiClass().getFullyQualifiedName(); + List params = cons.getParameters(); + if (cons.getName().contains("$") && !params.isEmpty()) { + String firstParam = params.get(0).getType(); + String containingCls = cons.getjApiClass().getFullyQualifiedName(); + String outerCls = containingCls.substring(0, containingCls.lastIndexOf("$")); + + if (firstParam.equals(outerCls)) // anonymous class or non-static inner class + params.remove(0); + } + return " %s#(%s)".formatted(type, params.stream().map(JApiParameter::getType).collect(joining(","))); + } + + public static String fullyQualifiedName(CtReference ref) { + String fqn = ""; + + if (ref instanceof CtTypeReference tRef) + fqn = tRef.getQualifiedName(); + else if (ref instanceof CtExecutableReference eRef) + fqn = eRef.getDeclaringType().getQualifiedName().concat(".").concat(eRef.getSignature()); + else if (ref instanceof CtFieldReference fRef) + fqn = fRef.getDeclaringType().getQualifiedName().concat(".").concat(fRef.getSimpleName()); + + return fqn; + } + + public static String getEnclosingPkgName(CtElement e) { + CtPackage enclosing = e.getParent(CtPackage.class); + return + enclosing != null ? + enclosing.getQualifiedName() : + CtPackage.TOP_LEVEL_PACKAGE_NAME; + } + + /** + * Verifies if a Spoon CtElement is implicit. References a specific + * implementation of the isImplicit() Spoon method given the type of + * declaration the input element represents. + * + * @param elem the CtElement to verify + * @return true if the element is implicit; + * false otherwise. + */ + public static boolean isImplicit(CtElement elem) { + if (elem instanceof CtConstructor cons) + return cons.isImplicit(); + else if (elem instanceof CtField field) + return field.isImplicit(); + else if (elem instanceof CtMethod meth) + return meth.isImplicit(); + else if (elem instanceof CtTypeAccess typeAcc) + return typeAcc.isImplicit(); + // Default to CtElement isImplicit() method. Other cases might be + // missing. + else + return elem.isImplicit(); + } + + /** + * Verifies if the signature of a Spoon method (CtExecutableReference) + * is equivalent to the one of the JApiCmp method (CtBehavior). + *

+ * FIXME: This method must disappear once we solve the issue with the + * constructor signature. + * + * @param spoonMethod the Spoon method + * @param japiMethod The JapiCmp method + * @return true if the methods have the same + * signature; false otherwise. + * @deprecated + */ + @Deprecated + public static boolean matchingSignatures(CtExecutableReference spoonMethod, CtBehavior japiMethod) { + String japiMethName; + + if (spoonMethod.isConstructor() && japiMethod.getName().contains("$")) { // Inner class constructor + String ln = japiMethod.getLongName(); + String outerCN = ln.substring(0, ln.indexOf("$")); + japiMethName = ln.replaceAll(String.format("\\(%s,?", outerCN), "("); + } else if (spoonMethod.isConstructor()) { // Regular constructor + japiMethName = japiMethod.getLongName(); + } else { // Regular method + japiMethName = japiMethod.getName().concat(japiMethod.getSignature()); + } + return japiMethName.startsWith(spoonMethod.getSignature()); + } +} diff --git a/src/main/java/util/SpoonTypeHelpers.java b/src/main/java/util/SpoonTypeHelpers.java new file mode 100644 index 0000000..4813dcb --- /dev/null +++ b/src/main/java/util/SpoonTypeHelpers.java @@ -0,0 +1,339 @@ +package util; + +import spoon.reflect.code.*; +import spoon.reflect.declaration.CtElement; +import spoon.reflect.declaration.CtType; +import spoon.reflect.declaration.CtTypedElement; +import spoon.reflect.reference.CtArrayTypeReference; +import spoon.reflect.reference.CtExecutableReference; +import spoon.reflect.reference.CtTypeReference; + +import java.util.HashSet; +import java.util.Objects; +import java.util.Set; + +/** + * Helper in charge of verifying the compatibility between + * types. It is of special help when dealing with widening, + * narrowing, boxing, unboxing, and subtyping cases. + */ +public final class SpoonTypeHelpers { + private SpoonTypeHelpers() { + } + + /** + * Verifies if the given type {@code type} is the unboxed version of the + * reference type {@code ref}. + * + * @param type given type + * @param ref reference type to checked against + * @return {@code true} if the given type is the unboxed version of the + * reference type; {@code false} otherwise + */ + public static boolean isUnboxedType(CtTypeReference type, CtTypeReference ref) { + return type.equals(ref.unbox()); + } + + /** + * Verifies if the given type {@code type} is the boxed version of the + * reference type {@code ref}. + * + * @param type given type + * @param ref reference type to checked against + * @return {@code true} if the given type is the boxed version of the + * reference type; {@code false} otherwise + */ + public static boolean isBoxedType(CtTypeReference type, CtTypeReference ref) { + return type.unbox().equals(ref); + } + + /** + * Verifies if a type narrows a reference type. It checks both for primitive + * and reference types. If the types are the same it returns {@code true}. + * + * @param type given type + * @param ref reference type to checked against + * @return {@code true} if the given type narrows the reference type; + * {@code false} otherwise + */ + public static boolean isNarrowedType(CtTypeReference type, CtTypeReference ref) { + if (type.isPrimitive()) + return isWidenedPrimitiveType(type, ref); + + return type.equals(ref) || type.isSubtypeOf(ref); + } + + /** + * Verifies if a type narrows a primitive type. If the types are the same it + * returns {@code true}. The implementation that verifies narrowing for + * primitive types is based on the + * Java Language Specification (JLS) v10 chapter 5.1.3 and 5.1.4.. + * + * @param type given type + * @param ref reference type to checked against + * @return {@code true} if the given type narrows the primitive reference + * type; {@code false} otherwise + */ + public static boolean isNarrowedPrimitiveType(CtTypeReference type, CtTypeReference ref) { + if (type.isPrimitive()) { + String typeName = type.getSimpleName(); + String refNAme = ref.getSimpleName(); + + if (type.equals(ref)) + return true; + else if (typeName.equals("byte")) + return Set.of("char").contains(refNAme); + else if (typeName.equals("short")) + return Set.of("byte", "char").contains(refNAme); + else if (typeName.equals("char")) + return Set.of("byte", "short").contains(refNAme); + else if (typeName.equals("int")) + return Set.of("byte", "short", "char").contains(refNAme); + else if (typeName.equals("long")) + return Set.of("byte", "short", "char", "int").contains(refNAme); + else if (typeName.equals("float")) + return Set.of("byte", "short", "char", "int", "long").contains(refNAme); + else if (typeName.equals("double")) + return Set.of("byte", "short", "char", "int", "long", "float").contains(refNAme); + } + + return false; + } + + /** + * Verifies if a type widens a reference type. It checks both for primitive + * and reference types. If the types are the same it returns {@code true}. + * + * @param type given type + * @param ref reference type to checked against + * @return {@code true} if the given type narrows the reference type; + * {@code false} otherwise + */ + public static boolean isWidenedType(CtTypeReference type, CtTypeReference ref) { + if (type.isPrimitive()) + return isWidenedPrimitiveType(type, ref); + + return type.equals(ref) || ref.isSubtypeOf(type); + } + + /** + * Verifies if a type widens a primitive type. If the types are the same it + * returns {@code true}. The implementation that verifies narrowing for + * primitive types is based on the + * Java Language Specification (JLS) v10 chapter 5.1.2. + * + * @param type given type + * @param ref reference type to checked against + * @return {@code true} if the given type narrows the primitive reference + * type; {@code false} otherwise + */ + public static boolean isWidenedPrimitiveType(CtTypeReference type, CtTypeReference ref) { + if (type.isPrimitive()) { + String typeName = type.getSimpleName(); + String refNAme = ref.getSimpleName(); + + if (type.equals(ref)) + return true; + else if (typeName.equals("byte")) + return Set.of("short", "int", "long", "float", "double").contains(refNAme); + else if (typeName.equals("short")) + return Set.of("int", "long", "float", "double").contains(refNAme); + else if (typeName.equals("char")) + return Set.of("int", "long", "float", "double").contains(refNAme); + else if (typeName.equals("int")) + return Set.of("long", "float", "double").contains(refNAme); + else if (typeName.equals("long")) + return Set.of("float", "double").contains(refNAme); + else if (typeName.equals("float")) + return Set.of("double").contains(refNAme); + else if (typeName.equals("double")) + return Set.of("byte", "short", "char", "int", "long", "float").contains(refNAme); + } + + return false; + } + + /** + * Verifies if the given type is assignable to the expected type. Boxing and + * unboxing cases are considered as {@code false} cases (non-assignable). + * + * @param expected expected type + * @param given given type + * @return {@code true} if the given type is assignable to the expected type; + * {@code false} otherwise + */ + public static boolean isAssignableFromOverride(CtTypeReference expected, CtTypeReference given) { + if (isBoxedType(expected, given) || isUnboxedType(expected, given) || isWidenedPrimitiveType(expected, given)) + return false; + else + return isAssignableFrom(expected, given); + } + + /** + * Couldn't find a built-in utility to check all cases. + * This implementation most likely messes up. + */ + public static boolean isAssignableFrom(CtTypeReference expected, CtTypeReference given) { + if (given == null || expected == null) + return false; + + if (expected.equals(given)) + return true; + + // We can pass a subtype => only succeeds if given and expected are classes + // or interfaces, and given <: expected + if (given.isSubtypeOf(expected)) + return true; + + // If we expect a primitive, either we can widen the given primitive, + // or it is a compatible boxed type + if (expected.isPrimitive()) + return primitivesAreCompatible(expected, given.unbox()); // No helper for that!? + + // If it's a boxed type + else if (!expected.equals(expected.unbox())) + return primitivesAreCompatible(expected.unbox(), given.unbox()); + + // If we expect an array, only compatible type is an array of a subtype + // FIXME: this should account for multidimensional arrays + else if (expected.isArray()) { + if (given.isArray()) { + CtArrayTypeReference expectedArrayType = (CtArrayTypeReference) expected; + CtArrayTypeReference givenArrayType = (CtArrayTypeReference) given; + + return givenArrayType.getArrayType().isSubtypeOf(expectedArrayType.getArrayType()); + } + + return false; + } + + // If we expect a class/interface/enum, we already checked for subtyping, + // so that's a no + else return false; + } + + /** + * Verifies if a given primitive type is compatible with + * another one. The verification is based on the JLS SE8. + * + * @param expected Expected primitive type + * @param given Given primitive type + * @return true if the given type can be + * widened into the expected type; false + * otherwise. + * @see + * Widening Primitive Conversion + */ + private static boolean primitivesAreCompatible(CtTypeReference expected, CtTypeReference given) { + String expectedName = expected.getSimpleName(); + String givenName = given.getSimpleName(); + + if (expectedName.equals(givenName)) + return true; + + // https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.2 + if (givenName.equals("byte")) + return Set.of("short", "int", "long", "float", "double").contains(expectedName); + if (givenName.equals("short")) + return Set.of("int", "long", "float", "double").contains(expectedName); + if (givenName.equals("char")) + return Set.of("int", "long", "float", "double").contains(expectedName); + if (givenName.equals("int")) + return Set.of("long", "float", "double").contains(expectedName); + if (givenName.equals("long")) + return Set.of("float", "double").contains(expectedName); + if (givenName.equals("float")) + return Objects.equals("double", expectedName); + + return false; + } + + public static boolean isSubtype(CtTypeReference typeRef, CtTypeReference superRef) { + if (typeRef != null) + return isSubtype(Set.of(typeRef), superRef); + else + return false; + } + + /** + * Verifies if a set of type references are subtypes of the typeRef. + * TODO: Don't see the point of this method anymore. Might need to go away. + * + * @param typeRefs set of type references + * @param superRef reference super type + * @return true if any of the types is a subtype of the clsRef; + * false otherwise. + */ + public static boolean isSubtype(Set> typeRefs, CtTypeReference superRef) { + for (CtTypeReference ref : typeRefs) { + if (ref == null || ref.getTypeDeclaration() == null) + return false; + + if (ref.equals(superRef)) + return true; + + if ((ref.getTypeDeclaration().isAbstract() || ref.isInterface()) + && ref.isSubtypeOf(superRef)) { + // FIXME: interfaces extending other interfaces are not considered + // by the isSubtypeOf() method + Set> supers = new HashSet<>(ref.getSuperInterfaces()); + supers.add(ref.getSuperclass()); + return isSubtype(supers, superRef); + } else { + return false; + } + } + + return false; + } + + /** + * Verifies if a set of {@link CtTypeReference} objects declare at least one + * abstract method that has not been implemented along the type hierarchy. + * + * @param types {@link CtTypeReference} objects to analyze + * @return {@code true} if there is at least one unimplemented abstract + * method declared by the types passed as parameter; otherwise + * {@code false} + */ + public static boolean haveUnimplAbstractMethods(Set> types) { + for (CtTypeReference sup : types) { + CtType decl = sup.getTypeDeclaration(); + if (decl == null) + return true; // Over-approximate + else + for (CtExecutableReference e : sup.getAllExecutables()) { + CtBlock body = e.getExecutableDeclaration().getBody(); + CtExecutableReference overriden = e.getOverridingExecutable(); + + // Broken use if there is an abstract supermethod with + // no concrete implementation + if (body == null && overriden == null) + return true; + } + } + return false; + } + + // Oof + public static CtTypeReference inferExpectedType(CtElement e) { + if (e instanceof CtTypedElement elem) + return elem.getType(); + else if (e instanceof CtLoop) + return e.getFactory().Type().booleanPrimitiveType(); + else if (e instanceof CtIf) + return e.getFactory().Type().booleanPrimitiveType(); + else if (e instanceof CtThrow thrw) + return thrw.getThrownExpression().getType(); + else if (e instanceof CtReturn retrn) + return retrn.getReturnedExpression().getType(); + else if (e instanceof CtSynchronized sync) + return sync.getExpression().getType(); + else { + if (e instanceof CtBlock) + return null; + } + + throw new IllegalArgumentException("Unhandled enclosing type " + e.getClass()); + } +}

+ * There are many bytecode-specific artifacts (e.g., default constructors, enum's + * auto-generated methods, etc.) that can typically not be resolved in source code. + * In this case, we attempt to map the artifacts to the closest source artifact + * (e.g., the type containing the default constructor/enum's methods). + */ +public final class BinaryToSourceMapper { + private final CtPackage root; + private final Map mapped = new HashMap<>(); + + public BinaryToSourceMapper(CtPackage root) { + this.root = Objects.requireNonNull(root); + } + + public CtElement resolve(CtReference binaryRef) { + Objects.requireNonNull(binaryRef); + + if (mapped.containsKey(binaryRef)) + return mapped.get(binaryRef); + + if (binaryRef instanceof CtTypeReference typeRef) { + return cache(typeRef, resolve(typeRef)); + } else if (binaryRef instanceof CtExecutableReference execRef) { + return cache(execRef, resolve(execRef)); + } else if (binaryRef instanceof CtFieldReference fieldRef) { + return cache(fieldRef, resolve(fieldRef)); + } + + return null; + } + + private CtElement cache(CtReference binaryRef, CtElement resolved) { + mapped.put(binaryRef, resolved); + return resolved; + } + + private CtType resolve(CtTypeReference binaryRef) { + CtType binaryDecl = binaryRef.getTypeDeclaration(); + + if (binaryDecl != null) { + CtTypeReference sourceRef = root.getFactory().Type().createReference(binaryDecl); + CtType typeDecl = sourceRef.getTypeDeclaration(); + + if (typeDecl != null && typeDecl.getPosition().isValidPosition()) + return typeDecl; + } + + return null; + } + + private CtElement resolve(CtExecutableReference binaryRef) { + CtTypeReference declaringTypeRef = binaryRef.getDeclaringType(); + + if (declaringTypeRef != null) { + CtType declaringType = resolve(declaringTypeRef); + + if (declaringType != null) { + Optional> sourceRefOpt = + declaringType.getDeclaredExecutables().stream() + .filter(e -> Objects.equals(e.getSignature(), binaryRef.getSignature())) + .findFirst(); + + if (sourceRefOpt.isPresent()) { + CtExecutableReference sourceRef = sourceRefOpt.get(); + CtExecutable execDecl = sourceRef.getExecutableDeclaration(); + + if (execDecl != null && execDecl.getPosition().isValidPosition()) + return execDecl; + } + + return declaringType; + } + } + + return null; + } + + private CtElement resolve(CtFieldReference binaryRef) { + CtTypeReference declaringTypeRef = binaryRef.getDeclaringType(); + + if (declaringTypeRef != null) { + CtType declaringType = resolve(declaringTypeRef); + + if (declaringType != null) { + CtFieldReference sourceRef = declaringType.getDeclaredField(binaryRef.getSimpleName()); + CtField fieldDecl = sourceRef.getFieldDeclaration(); + + if (fieldDecl != null && fieldDecl.getPosition().isValidPosition()) + return fieldDecl; + } + + return declaringType; + } + + return null; + } +} diff --git a/src/main/java/util/CtElementSerializer.java b/src/main/java/util/CtElementSerializer.java new file mode 100644 index 0000000..35c9ea1 --- /dev/null +++ b/src/main/java/util/CtElementSerializer.java @@ -0,0 +1,34 @@ +package util; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import spoon.reflect.cu.SourcePosition; +import spoon.reflect.declaration.CtElement; + +import java.io.IOException; + +public final class CtElementSerializer extends StdSerializer { + public CtElementSerializer() { + this(null); + } + + public CtElementSerializer(Class t) { + super(t); + } + + @Override + public void serialize(CtElement element, JsonGenerator json, SerializerProvider serializerProvider) throws IOException { + SourcePosition pos = element.getPosition(); + + json.writeStartObject(); + if (pos != null && pos.isValidPosition()) { + json.writeStringField("file", pos.getFile().getAbsolutePath()); + json.writeNumberField("startLine", pos.getLine()); + json.writeNumberField("endLine", pos.getEndLine()); + json.writeNumberField("startColumn", pos.getColumn()); + json.writeNumberField("endColumn", pos.getEndColumn()); + } + json.writeEndObject(); + } +} diff --git a/src/main/java/util/MavenCommand.java b/src/main/java/util/MavenCommand.java new file mode 100644 index 0000000..7975504 --- /dev/null +++ b/src/main/java/util/MavenCommand.java @@ -0,0 +1,22 @@ +package util; + +import java.io.File; + +public class MavenCommand { + + public static String[] execCommand(String cmd, File directory) { + try { + Process process = Runtime.getRuntime().exec(cmd, null, directory); + process.waitFor(); + String output = new String(process.getInputStream().readAllBytes()); + String error = new String(process.getErrorStream().readAllBytes()); + return new String[]{output, error}; + } catch (Exception e) { + e.printStackTrace(); + return new String[]{"", e.getMessage()}; + } + + } + + +} diff --git a/src/main/java/util/ParentLastURLClassLoader.java b/src/main/java/util/ParentLastURLClassLoader.java new file mode 100644 index 0000000..0097450 --- /dev/null +++ b/src/main/java/util/ParentLastURLClassLoader.java @@ -0,0 +1,79 @@ +package util; + +import java.net.URL; +import java.net.URLClassLoader; + +/** + * cf this SO question + *