Skip to content

Commit 2f9344a

Browse files
🐛 make sure non java files are exploded to java project (#760)
API Tests PR: 249 --------- Signed-off-by: Pranav Gaikwad <[email protected]>
1 parent 5896cc0 commit 2f9344a

File tree

2 files changed

+78
-2
lines changed

2 files changed

+78
-2
lines changed

demo-output.yaml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,30 @@
209209
data: dependency
210210
innerText: "\n io.javaoperatorsdk.operator\n sample\n 0.0.0\n "
211211
matchingXML: <groupId>io.javaoperatorsdk.operator</groupId><artifactId>sample</artifactId><version>0.0.0</version>
212+
- uri: file:///examples/java-project/quarkus-1-6-2-jar-exploded/META-INF/maven/io.javaoperatorsdk/quarkus/pom.xml
213+
message: <groupId>io.javaoperatorsdk</groupId><artifactId>operator-framework-quarkus-extension</artifactId><version>${project.version}</version>
214+
codeSnip: "30 <version>${quarkus.version}</version>\n31 <type>pom</type>\n32 <scope>import</scope>\n33 </dependency>\n34 </dependencies>\n35 </dependencyManagement>\n36 \n37 <dependencies>\n38 <dependency>\n39 <groupId>io.javaoperatorsdk</groupId>\n40 <artifactId>operator-framework-quarkus-extension</artifactId>\n41 <version>${project.version}</version>\n42 </dependency>\n43 <dependency>\n44 <groupId>io.javaoperatorsdk</groupId>\n45 <artifactId>operator-framework-samples-common</artifactId>\n46 <version>${project.version}</version>\n47 </dependency>\n48 </dependencies>\n49 \n50 <build>"
215+
lineNumber: 39
216+
variables:
217+
data: dependency
218+
innerText: "\n io.javaoperatorsdk\n operator-framework-quarkus-extension\n ${project.version}\n "
219+
matchingXML: <groupId>io.javaoperatorsdk</groupId><artifactId>operator-framework-quarkus-extension</artifactId><version>${project.version}</version>
220+
- uri: file:///examples/java-project/quarkus-1-6-2-jar-exploded/META-INF/maven/io.javaoperatorsdk/quarkus/pom.xml
221+
message: <groupId>io.javaoperatorsdk</groupId><artifactId>operator-framework-samples-common</artifactId><version>${project.version}</version>
222+
codeSnip: "35 </dependencyManagement>\n36 \n37 <dependencies>\n38 <dependency>\n39 <groupId>io.javaoperatorsdk</groupId>\n40 <artifactId>operator-framework-quarkus-extension</artifactId>\n41 <version>${project.version}</version>\n42 </dependency>\n43 <dependency>\n44 <groupId>io.javaoperatorsdk</groupId>\n45 <artifactId>operator-framework-samples-common</artifactId>\n46 <version>${project.version}</version>\n47 </dependency>\n48 </dependencies>\n49 \n50 <build>\n51 <plugins>\n52 <plugin>\n53 <groupId>org.apache.maven.plugins</groupId>\n54 <artifactId>maven-compiler-plugin</artifactId>\n55 <version>${compiler-plugin.version}</version>"
223+
lineNumber: 44
224+
variables:
225+
data: dependency
226+
innerText: "\n io.javaoperatorsdk\n operator-framework-samples-common\n ${project.version}\n "
227+
matchingXML: <groupId>io.javaoperatorsdk</groupId><artifactId>operator-framework-samples-common</artifactId><version>${project.version}</version>
228+
- uri: file:///examples/java-project/quarkus-1-6-2-jar-exploded/META-INF/maven/io.javaoperatorsdk/quarkus/pom.xml
229+
message: <groupId>io.quarkus</groupId><artifactId>quarkus-universe-bom</artifactId><version>${quarkus.version}</version><type>pom</type><scope>import</scope>
230+
codeSnip: "19 <maven.compiler.target>11</maven.compiler.target>\n20 <quarkus.version>1.10.5.Final</quarkus.version>\n21 <compiler-plugin.version>3.8.1</compiler-plugin.version>\n22 <maven.compiler.parameters>true</maven.compiler.parameters>\n23 </properties>\n24 \n25 <dependencyManagement>\n26 <dependencies>\n27 <dependency>\n28 <groupId>io.quarkus</groupId>\n29 <artifactId>quarkus-universe-bom</artifactId>\n30 <version>${quarkus.version}</version>\n31 <type>pom</type>\n32 <scope>import</scope>\n33 </dependency>\n34 </dependencies>\n35 </dependencyManagement>\n36 \n37 <dependencies>\n38 <dependency>\n39 <groupId>io.javaoperatorsdk</groupId>"
231+
lineNumber: 28
232+
variables:
233+
data: dependency
234+
innerText: "\n io.quarkus\n quarkus-universe-bom\n ${quarkus.version}\n pom\n import\n "
235+
matchingXML: <groupId>io.quarkus</groupId><artifactId>quarkus-universe-bom</artifactId><version>${quarkus.version}</version><type>pom</type><scope>import</scope>
212236
- uri: file:///examples/java/dummy/pom.xml
213237
message: |-
214238
<groupId>javax</groupId><artifactId>javaee-api</artifactId><!-- This leads to https://github.com/konveyor/analyzer-lsp/issues/390
@@ -797,6 +821,30 @@
797821
data: dependency
798822
innerText: "\n io.javaoperatorsdk.operator\n sample\n 0.0.0\n "
799823
matchingXML: <groupId>io.javaoperatorsdk.operator</groupId><artifactId>sample</artifactId><version>0.0.0</version>
824+
- uri: file:///examples/java-project/quarkus-1-6-2-jar-exploded/META-INF/maven/io.javaoperatorsdk/quarkus/pom.xml
825+
message: POM XML dependencies - '<groupId>io.javaoperatorsdk</groupId><artifactId>operator-framework-quarkus-extension</artifactId><version>${project.version}</version>'
826+
codeSnip: "30 <version>${quarkus.version}</version>\n31 <type>pom</type>\n32 <scope>import</scope>\n33 </dependency>\n34 </dependencies>\n35 </dependencyManagement>\n36 \n37 <dependencies>\n38 <dependency>\n39 <groupId>io.javaoperatorsdk</groupId>\n40 <artifactId>operator-framework-quarkus-extension</artifactId>\n41 <version>${project.version}</version>\n42 </dependency>\n43 <dependency>\n44 <groupId>io.javaoperatorsdk</groupId>\n45 <artifactId>operator-framework-samples-common</artifactId>\n46 <version>${project.version}</version>\n47 </dependency>\n48 </dependencies>\n49 \n50 <build>"
827+
lineNumber: 39
828+
variables:
829+
data: dependency
830+
innerText: "\n io.javaoperatorsdk\n operator-framework-quarkus-extension\n ${project.version}\n "
831+
matchingXML: <groupId>io.javaoperatorsdk</groupId><artifactId>operator-framework-quarkus-extension</artifactId><version>${project.version}</version>
832+
- uri: file:///examples/java-project/quarkus-1-6-2-jar-exploded/META-INF/maven/io.javaoperatorsdk/quarkus/pom.xml
833+
message: POM XML dependencies - '<groupId>io.javaoperatorsdk</groupId><artifactId>operator-framework-samples-common</artifactId><version>${project.version}</version>'
834+
codeSnip: "35 </dependencyManagement>\n36 \n37 <dependencies>\n38 <dependency>\n39 <groupId>io.javaoperatorsdk</groupId>\n40 <artifactId>operator-framework-quarkus-extension</artifactId>\n41 <version>${project.version}</version>\n42 </dependency>\n43 <dependency>\n44 <groupId>io.javaoperatorsdk</groupId>\n45 <artifactId>operator-framework-samples-common</artifactId>\n46 <version>${project.version}</version>\n47 </dependency>\n48 </dependencies>\n49 \n50 <build>\n51 <plugins>\n52 <plugin>\n53 <groupId>org.apache.maven.plugins</groupId>\n54 <artifactId>maven-compiler-plugin</artifactId>\n55 <version>${compiler-plugin.version}</version>"
835+
lineNumber: 44
836+
variables:
837+
data: dependency
838+
innerText: "\n io.javaoperatorsdk\n operator-framework-samples-common\n ${project.version}\n "
839+
matchingXML: <groupId>io.javaoperatorsdk</groupId><artifactId>operator-framework-samples-common</artifactId><version>${project.version}</version>
840+
- uri: file:///examples/java-project/quarkus-1-6-2-jar-exploded/META-INF/maven/io.javaoperatorsdk/quarkus/pom.xml
841+
message: POM XML dependencies - '<groupId>io.quarkus</groupId><artifactId>quarkus-universe-bom</artifactId><version>${quarkus.version}</version><type>pom</type><scope>import</scope>'
842+
codeSnip: "19 <maven.compiler.target>11</maven.compiler.target>\n20 <quarkus.version>1.10.5.Final</quarkus.version>\n21 <compiler-plugin.version>3.8.1</compiler-plugin.version>\n22 <maven.compiler.parameters>true</maven.compiler.parameters>\n23 </properties>\n24 \n25 <dependencyManagement>\n26 <dependencies>\n27 <dependency>\n28 <groupId>io.quarkus</groupId>\n29 <artifactId>quarkus-universe-bom</artifactId>\n30 <version>${quarkus.version}</version>\n31 <type>pom</type>\n32 <scope>import</scope>\n33 </dependency>\n34 </dependencies>\n35 </dependencyManagement>\n36 \n37 <dependencies>\n38 <dependency>\n39 <groupId>io.javaoperatorsdk</groupId>"
843+
lineNumber: 28
844+
variables:
845+
data: dependency
846+
innerText: "\n io.quarkus\n quarkus-universe-bom\n ${quarkus.version}\n pom\n import\n "
847+
matchingXML: <groupId>io.quarkus</groupId><artifactId>quarkus-universe-bom</artifactId><version>${quarkus.version}</version><type>pom</type><scope>import</scope>
800848
- uri: file:///examples/java/dummy/pom.xml
801849
message: |-
802850
POM XML dependencies - '<groupId>javax</groupId><artifactId>javaee-api</artifactId><!-- This leads to https://github.com/konveyor/analyzer-lsp/issues/390
@@ -1066,6 +1114,8 @@
10661114
message: ""
10671115
- uri: file:///examples/java-project/pom.xml
10681116
message: ""
1117+
- uri: file:///examples/java-project/quarkus-1-6-2-jar-exploded/META-INF/maven/io.javaoperatorsdk/quarkus/pom.xml
1118+
message: ""
10691119
- uri: file:///examples/java/dummy/pom.xml
10701120
message: ""
10711121
- uri: file:///examples/java/example/pom.xml
@@ -1163,6 +1213,12 @@
11631213
lineNumber: 191
11641214
variables:
11651215
matchingText: Apache
1216+
- uri: file:///examples/java-project/quarkus-1-6-2-jar-exploded/META-INF/MANIFEST.MF
1217+
message: ""
1218+
codeSnip: " 1 Manifest-Version: 1.0\n 2 Archiver-Version: Plexus Archiver\n 3 Created-By: Apache Maven 3.6.3\n 4 Built-By: runner\n 5 Build-Jdk: 11.0.9\n 6 \n"
1219+
lineNumber: 3
1220+
variables:
1221+
matchingText: Apache
11661222
- uri: file:///examples/java/beans.xml
11671223
message: ""
11681224
codeSnip: " 1 <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n 2 <!-- \n 3 * (C) Copyright IBM Corporation 2015.\n 4 *\n 5 * Licensed under the Apache License, Version 2.0 (the \"License\");\n 6 * you may not use this file except in compliance with the License.\n 7 * You may obtain a copy of the License at\n 8 *\n 9 * http://www.apache.org/licenses/LICENSE-2.0\n10 *\n11 * Unless required by applicable law or agreed to in writing, software\n12 * distributed under the License is distributed on an \"AS IS\" BASIS,\n13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n14 * See the License for the specific language governing permissions and\n15 * limitations under the License.\n16 -->"

external-providers/java-external-provider/pkg/java_external_provider/util.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"os"
1515
"os/exec"
1616
"path/filepath"
17+
"regexp"
1718
"strings"
1819
"sync"
1920
"text/template"
@@ -247,7 +248,10 @@ func explode(ctx context.Context, log logr.Logger, archivePath, projectPath stri
247248

248249
if f.FileInfo().IsDir() {
249250
// make sure execute bits are set so that fernflower can decompile
250-
os.MkdirAll(filePath, f.Mode()|0111)
251+
err := os.MkdirAll(filePath, f.Mode()|0111)
252+
if err != nil {
253+
log.V(5).Error(err, "failed to create directory when exploding the archive", "filePath", filePath)
254+
}
251255
continue
252256
}
253257

@@ -391,6 +395,22 @@ func explode(ctx context.Context, log logr.Logger, archivePath, projectPath stri
391395
})
392396
}
393397
}
398+
// any other files, move to java project as-is
399+
default:
400+
baseName := strings.ToValidUTF8(f.Name, "_")
401+
re := regexp.MustCompile(`[^\w\-\.\\/]+`)
402+
baseName = re.ReplaceAllString(baseName, "_")
403+
destPath := filepath.Join(
404+
projectPath, strings.Replace(filepath.Base(archivePath), ".", "-", -1)+"-exploded", baseName)
405+
if err := os.MkdirAll(filepath.Dir(destPath), 0755); err != nil {
406+
log.V(8).Error(err, "error creating directory for java file", "path", destPath)
407+
continue
408+
}
409+
if err := moveFile(filePath, destPath); err != nil {
410+
log.V(8).Error(err, "error moving decompiled file to project path",
411+
"src", filePath, "dest", destPath)
412+
continue
413+
}
394414
}
395415
}
396416

@@ -606,4 +626,4 @@ func toFilePathDependency(_ context.Context, filePath string) (javaArtifact, err
606626
dep.Version = "0.0.0"
607627
return dep, nil
608628

609-
}
629+
}

0 commit comments

Comments
 (0)