Skip to content

Commit

Permalink
Fix potential NPE #296
Browse files Browse the repository at this point in the history
- reported by Sonar
- created test for this piece of code and discovered that the case of
backslash is not handled. Created #301 to handle it

Signed-off-by: Aurélien Pupier <[email protected]>
  • Loading branch information
apupier committed Oct 2, 2019
1 parent 3e202ca commit 39ad273
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,13 @@ private String getStringEncloser(String line) {
return null;
}

private String repairLostEscapeChars(String stringEncloser, String line) {
if (stringEncloser == null || line == null) {
String repairLostEscapeChars(String stringEncloser, String line) {
if (stringEncloser == null) {
return line;
}
if(line == null) {
return "";
}
String[] parts = line.split(stringEncloser);
StringBuilder res = new StringBuilder();
for (int i = 0; i < parts.length; i++) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.cameltooling.lsp.internal.parser;

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

public class CamelKYamlDSLParserTest {

@Test
void testRepairEscapeCharacterWithNullLine() throws Exception {
assertThat(new CamelKYamlDSLParser().repairLostEscapeChars("\"", null)).isEmpty();
}

@Test
void testRepairEscapeCharacterWithNoStringEncloser() throws Exception {
assertThat(new CamelKYamlDSLParser().repairLostEscapeChars(null, "myLine")).isEqualTo("myLine");
}

@Test
void testRepairEscapeCharacterWithQuote() throws Exception {
assertThat(new CamelKYamlDSLParser().repairLostEscapeChars("'", "a value with ' quote inside")).isEqualTo("a value with '' quote inside");
}

@Test
void testRepairEscapeCharacterWithDoubleQuote() throws Exception {
assertThat(new CamelKYamlDSLParser().repairLostEscapeChars("\"", "a value with double-quote \" inside")).isEqualTo("a value with double-quote \\\" inside");
}

@Test
@Disabled("see https://github.com/camel-tooling/camel-language-server/issues/301")
void testRepairEscapeCharacterWithDoubleQuoteAndSlash() throws Exception {
assertThat(new CamelKYamlDSLParser().repairLostEscapeChars("\"", "a value with backslash \\ inside")).isEqualTo("a value with double-quote \\\\ inside");
}
}

0 comments on commit 39ad273

Please sign in to comment.