fix(TUP-24422):fix the carriage return character issue by backport of TUP-27053. (#4156)

This commit is contained in:
zyuan-talend
2021-04-09 09:14:24 +08:00
committed by GitHub
parent ea6b643e5d
commit bc823f7d5c
2 changed files with 73 additions and 0 deletions

View File

@@ -25,6 +25,7 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Scanner;
import java.util.Set;
import org.apache.commons.lang3.BooleanUtils;
@@ -559,6 +560,7 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
"${talend.job.bat.addition}" },
new String[] { jvmArgsStr.toString().trim(), getWindowsClasspath(), jobClass,
windowsScriptAdditionValue.toString() });
batContent = normalizeSpaces(batContent);
String shContent = MavenTemplateManager.getProjectSettingValue(IProjectSettingPreferenceConstants.TEMPLATE_SH,
templateParameters);
@@ -567,6 +569,7 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
"${talend.job.sh.addition}" },
new String[] { jvmArgsStr.toString().trim(), getUnixClasspath(), jobClass,
unixScriptAdditionValue.toString() });
shContent = normalizeSpaces(shContent);
String psContent = MavenTemplateManager.getProjectSettingValue(IProjectSettingPreferenceConstants.TEMPLATE_PS,
templateParameters);
@@ -575,6 +578,7 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
"${talend.job.bat.addition}" },
new String[] { jvmArgsStrPs1.toString().trim(), getWindowsClasspathForPs1(), jobClass,
windowsScriptAdditionValue.toString() });
psContent = normalizeSpaces(psContent);
String jobInfoContent = MavenTemplateManager
.getProjectSettingValue(IProjectSettingPreferenceConstants.TEMPLATE_JOB_INFO, templateParameters);
@@ -609,6 +613,25 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
MavenTemplateManager.saveContent(psFile, psContent, overwrite);
MavenTemplateManager.saveContent(infoFile, jobInfoContent, overwrite);
}
// https://jira.talendforge.org/browse/TUP-27053
// https://jira.talendforge.org/browse/TUP-24422(Also fix the carriage return issue in Windows)
public static String normalizeSpaces(String src) {
StringBuffer sb = new StringBuffer();
try (Scanner scanner = new Scanner(src)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
line = StringUtils.normalizeSpace(line.trim());
if (!line.isEmpty()) {
sb.append(line);
}
sb.append('\n');
}
} catch (Exception e) {
}
return sb.toString();
}
protected void updateDependencySet(IFile assemblyFile) {
Map<String, Dependency> jobCoordinateMap = new HashMap<String, Dependency>();

View File

@@ -0,0 +1,50 @@
package org.talend.designer.maven.tools.creator;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class CreateMavenJobPomTest {
@Test
public void testNormalizeSpaces() throws Exception {
String inputSh = "#!/bin/sh\n" + "cd `dirname $0`\n" + "ROOT_PATH=`pwd`\n"
+ "java -Dtalend.component.manager.m2.repository=$ROOT_PATH/../lib -cp .:$ROOT_PATH:$ROOT_PATH/../lib/routines.jar:$ROOT_PATH/../lib/log4j-slf4j-impl-2.12.1.jar:$ROOT_PATH/../lib/log4j-api-2.12.1.jar:$ROOT_PATH/../lib/log4j-core-2.12.1.jar:$ROOT_PATH/../lib/antlr-runtime-3.5.2.jar:$ROOT_PATH/../lib/org.talend.dataquality.parser.jar:$ROOT_PATH/../lib/crypto-utils.jar:$ROOT_PATH/../lib/talend_file_enhanced_20070724.jar:$ROOT_PATH/../lib/slf4j-api-1.7.25.jar:$ROOT_PATH/../lib/dom4j-2.1.1.jar:$ROOT_PATH/nojvmparam_0_1.jar: local_project.nojvmparam_0_1.noJVMparam --context=Default \"$@\"\n";
String expectSh = "#!/bin/sh\n" + "cd `dirname $0`\n" + "ROOT_PATH=`pwd`\n"
+ "java -Dtalend.component.manager.m2.repository=$ROOT_PATH/../lib -cp .:$ROOT_PATH:$ROOT_PATH/../lib/routines.jar:$ROOT_PATH/../lib/log4j-slf4j-impl-2.12.1.jar:$ROOT_PATH/../lib/log4j-api-2.12.1.jar:$ROOT_PATH/../lib/log4j-core-2.12.1.jar:$ROOT_PATH/../lib/antlr-runtime-3.5.2.jar:$ROOT_PATH/../lib/org.talend.dataquality.parser.jar:$ROOT_PATH/../lib/crypto-utils.jar:$ROOT_PATH/../lib/talend_file_enhanced_20070724.jar:$ROOT_PATH/../lib/slf4j-api-1.7.25.jar:$ROOT_PATH/../lib/dom4j-2.1.1.jar:$ROOT_PATH/nojvmparam_0_1.jar: local_project.nojvmparam_0_1.noJVMparam --context=Default \"$@\"\n";
String inputBat = "%~d0\n" + "cd %~dp0\n"
+ "java -Dtalend.component.manager.m2.repository=\"%cd%/../lib\" -cp .;../lib/routines.jar;../lib/log4j-slf4j-impl-2.12.1.jar;../lib/log4j-api-2.12.1.jar;../lib/log4j-core-2.12.1.jar;../lib/antlr-runtime-3.5.2.jar;../lib/org.talend.dataquality.parser.jar;../lib/crypto-utils.jar;../lib/talend_file_enhanced_20070724.jar;../lib/slf4j-api-1.7.25.jar;../lib/dom4j-2.1.1.jar;nojvmparam_0_1.jar; local_project.nojvmparam_0_1.noJVMparam --context=Default %*\n";
String expectBat = "%~d0\n" + "cd %~dp0\n"
+ "java -Dtalend.component.manager.m2.repository=\"%cd%/../lib\" -cp .;../lib/routines.jar;../lib/log4j-slf4j-impl-2.12.1.jar;../lib/log4j-api-2.12.1.jar;../lib/log4j-core-2.12.1.jar;../lib/antlr-runtime-3.5.2.jar;../lib/org.talend.dataquality.parser.jar;../lib/crypto-utils.jar;../lib/talend_file_enhanced_20070724.jar;../lib/slf4j-api-1.7.25.jar;../lib/dom4j-2.1.1.jar;nojvmparam_0_1.jar; local_project.nojvmparam_0_1.noJVMparam --context=Default %*\n";
String actualSh = CreateMavenJobPom.normalizeSpaces(inputSh);
assertEquals(expectSh, actualSh);
String actualBat = CreateMavenJobPom.normalizeSpaces(inputBat);
assertEquals(expectBat, actualBat);
}
//https://jira.talendforge.org/browse/TUP-24422
@Test
public void testCarriageReturn() throws Exception {
String inputSh = "#!/bin/sh\r\n" + "cd `dirname $0`\r\n" + "ROOT_PATH=`pwd`\r\n"
+ "java -Dtalend.component.manager.m2.repository=$ROOT_PATH/../lib -cp .:$ROOT_PATH:$ROOT_PATH/../lib/routines.jar:$ROOT_PATH/../lib/log4j-slf4j-impl-2.12.1.jar:$ROOT_PATH/../lib/log4j-api-2.12.1.jar:$ROOT_PATH/../lib/log4j-core-2.12.1.jar:$ROOT_PATH/../lib/antlr-runtime-3.5.2.jar:$ROOT_PATH/../lib/org.talend.dataquality.parser.jar:$ROOT_PATH/../lib/crypto-utils.jar:$ROOT_PATH/../lib/talend_file_enhanced_20070724.jar:$ROOT_PATH/../lib/slf4j-api-1.7.25.jar:$ROOT_PATH/../lib/dom4j-2.1.1.jar:$ROOT_PATH/nojvmparam_0_1.jar: local_project.nojvmparam_0_1.noJVMparam --context=Default \"$@\"\n";
String expectSh = "#!/bin/sh\n" + "cd `dirname $0`\n" + "ROOT_PATH=`pwd`\n"
+ "java -Dtalend.component.manager.m2.repository=$ROOT_PATH/../lib -cp .:$ROOT_PATH:$ROOT_PATH/../lib/routines.jar:$ROOT_PATH/../lib/log4j-slf4j-impl-2.12.1.jar:$ROOT_PATH/../lib/log4j-api-2.12.1.jar:$ROOT_PATH/../lib/log4j-core-2.12.1.jar:$ROOT_PATH/../lib/antlr-runtime-3.5.2.jar:$ROOT_PATH/../lib/org.talend.dataquality.parser.jar:$ROOT_PATH/../lib/crypto-utils.jar:$ROOT_PATH/../lib/talend_file_enhanced_20070724.jar:$ROOT_PATH/../lib/slf4j-api-1.7.25.jar:$ROOT_PATH/../lib/dom4j-2.1.1.jar:$ROOT_PATH/nojvmparam_0_1.jar: local_project.nojvmparam_0_1.noJVMparam --context=Default \"$@\"\n";
String inputBat = "%~d0\r\n" + "cd %~dp0\r\n"
+ "java -Dtalend.component.manager.m2.repository=\"%cd%/../lib\" -cp .;../lib/routines.jar;../lib/log4j-slf4j-impl-2.12.1.jar;../lib/log4j-api-2.12.1.jar;../lib/log4j-core-2.12.1.jar;../lib/antlr-runtime-3.5.2.jar;../lib/org.talend.dataquality.parser.jar;../lib/crypto-utils.jar;../lib/talend_file_enhanced_20070724.jar;../lib/slf4j-api-1.7.25.jar;../lib/dom4j-2.1.1.jar;nojvmparam_0_1.jar; local_project.nojvmparam_0_1.noJVMparam --context=Default %*\n";
String expectBat = "%~d0\n" + "cd %~dp0\n"
+ "java -Dtalend.component.manager.m2.repository=\"%cd%/../lib\" -cp .;../lib/routines.jar;../lib/log4j-slf4j-impl-2.12.1.jar;../lib/log4j-api-2.12.1.jar;../lib/log4j-core-2.12.1.jar;../lib/antlr-runtime-3.5.2.jar;../lib/org.talend.dataquality.parser.jar;../lib/crypto-utils.jar;../lib/talend_file_enhanced_20070724.jar;../lib/slf4j-api-1.7.25.jar;../lib/dom4j-2.1.1.jar;nojvmparam_0_1.jar; local_project.nojvmparam_0_1.noJVMparam --context=Default %*\n";
String actualSh = CreateMavenJobPom.normalizeSpaces(inputSh);
assertEquals(expectSh, actualSh);
String actualBat = CreateMavenJobPom.normalizeSpaces(inputBat);
assertEquals(expectBat, actualBat);
}
}