This is an automated email from the ASF dual-hosted git repository.

olabusayo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-daffodil.git


The following commit(s) were added to refs/heads/master by this push:
     new 5acd177  Refactors duplicated blocks
5acd177 is described below

commit 5acd1777e88245626cea77ea8ce3e7df80c0fdad
Author: olabusayoT <[email protected]>
AuthorDate: Wed Apr 22 12:32:24 2020 -0400

    Refactors duplicated blocks
    
    -- fixes duplicated case statements
    -- fixes duplicated functions
    -- excludes Scala/Java API files from duplication analysis
    -- return Assert.impossible after throwException instead of the string
    
    DAFFODIL-2275
---
 .../src/main/scala/org/apache/daffodil/Main.scala  |  3 +-
 .../grammar/primitives/SequenceChild.scala         | 36 ++++++++++------------
 .../daffodil/processors/charset/CharsetUtils.scala |  8 ++---
 .../scala/org/apache/daffodil/oolag/OOLAG.scala    |  7 +----
 .../apache/daffodil/xml/DaffodilXMLLoader.scala    |  3 +-
 .../daffodil/layers/LineFoldedTransformer.scala    |  7 ++---
 .../processors/parsers/DelimitedParsers.scala      |  5 +--
 .../org/apache/daffodil/tdml/TDMLRunner.scala      |  3 +-
 sonar-project.properties                           |  4 +++
 9 files changed, 29 insertions(+), 47 deletions(-)

diff --git a/daffodil-cli/src/main/scala/org/apache/daffodil/Main.scala 
b/daffodil-cli/src/main/scala/org/apache/daffodil/Main.scala
index e6583b7..8a077f9 100644
--- a/daffodil-cli/src/main/scala/org/apache/daffodil/Main.scala
+++ b/daffodil-cli/src/main/scala/org/apache/daffodil/Main.scala
@@ -134,8 +134,7 @@ class CommandLineXMLLoaderErrorHandler() extends 
org.xml.sax.ErrorHandler with L
   }
 
   def fatalError(exception: SAXParseException) = {
-    log(LogLevel.Error, "loading schema: " + exception.getMessage())
-    System.exit(1)
+    error(exception)
   }
 }
 
diff --git 
a/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/SequenceChild.scala
 
b/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/SequenceChild.scala
index 1168889..1470d69 100644
--- 
a/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/SequenceChild.scala
+++ 
b/daffodil-core/src/main/scala/org/apache/daffodil/grammar/primitives/SequenceChild.scala
@@ -124,16 +124,7 @@ abstract class SequenceChild(protected val sq: 
SequenceTermBase, child: Term, gr
     import SeparatedSequenceChildBehavior._
     child match {
       case m: ModelGroup => {
-        if (child.isPotentiallyTrailing) {
-          ssp match {
-            case AnyEmpty => NonPositional
-            case TrailingEmpty => PositionalTrailingLax
-            case TrailingEmptyStrict => PositionalTrailingStrict
-            case Never => Positional
-          }
-        } else {
-          Positional
-        }
+        handleIfPotentiallyTrailingElseDefaultBehavior
       }
       case eb: ElementBase if (eb.isArray || eb.isOptional) => {
         import OccursCountKind._
@@ -168,20 +159,25 @@ abstract class SequenceChild(protected val sq: 
SequenceTermBase, child: Term, gr
         }
       }
       case eb: ElementBase if eb.isScalar => {
-        if (child.isPotentiallyTrailing) {
-          ssp match {
-            case AnyEmpty => NonPositional
-            case TrailingEmpty => PositionalTrailingLax
-            case TrailingEmptyStrict => PositionalTrailingStrict
-            case Never => Positional
-          }
-        } else {
-          Positional
-        }
+        handleIfPotentiallyTrailingElseDefaultBehavior
       }
       case _ => Positional // obscure cases like maxOccurs 0 with lengthKind 
'implicit'
     }
   }
+
+  protected def handleIfPotentiallyTrailingElseDefaultBehavior: 
SeparatedSequenceChildBehavior = {
+    if (child.isPotentiallyTrailing) {
+      ssp match {
+        case AnyEmpty => NonPositional
+        case TrailingEmpty => PositionalTrailingLax
+        case TrailingEmptyStrict => PositionalTrailingStrict
+        case Never => Positional
+      }
+    } else {
+      Positional
+    }
+  }
+
   protected final def sscb = separatedSequenceChildBehavior
 
   final protected def isDeclaredLast: Boolean = {
diff --git 
a/daffodil-io/src/main/scala/org/apache/daffodil/processors/charset/CharsetUtils.scala
 
b/daffodil-io/src/main/scala/org/apache/daffodil/processors/charset/CharsetUtils.scala
index 856762c..b3ad930 100644
--- 
a/daffodil-io/src/main/scala/org/apache/daffodil/processors/charset/CharsetUtils.scala
+++ 
b/daffodil-io/src/main/scala/org/apache/daffodil/processors/charset/CharsetUtils.scala
@@ -271,13 +271,9 @@ trait EncoderDecoderMixin
                 val truncString = cb.toString()
                 truncString
               }
-              case _ if cr.isMalformed() => {
+              case _ if cr.isMalformed() || cr.isUnmappable=> {
                 cr.throwException()
-                ""
-              }
-              case _ if cr.isUnmappable() => {
-                cr.throwException()
-                ""
+                Assert.impossible()
               }
             }
           truncString
diff --git a/daffodil-lib/src/main/scala/org/apache/daffodil/oolag/OOLAG.scala 
b/daffodil-lib/src/main/scala/org/apache/daffodil/oolag/OOLAG.scala
index ef64a66..2577541 100644
--- a/daffodil-lib/src/main/scala/org/apache/daffodil/oolag/OOLAG.scala
+++ b/daffodil-lib/src/main/scala/org/apache/daffodil/oolag/OOLAG.scala
@@ -549,12 +549,7 @@ object OOLAG extends Logging {
         // to isolate bugs harder. You just end up converting them into 
unsuppressible,
         // but with loss of context.
         //
-        case ue: IllegalArgumentException => {
-          val ex = ue
-          log(LogLevel.OOLAGDebug, " " * indent + catchMsg, 
this.getClass.getName, ex) // tell us which lazy attribute it was
-          toss(ex)
-        }
-        case ue: UnsuppressableException => {
+        case ue @ (_: IllegalArgumentException | _: UnsuppressableException) 
=> {
           val ex = ue
           log(LogLevel.OOLAGDebug, " " * indent + catchMsg, 
this.getClass.getName, ex) // tell us which lazy attribute it was
           toss(ex)
diff --git 
a/daffodil-lib/src/main/scala/org/apache/daffodil/xml/DaffodilXMLLoader.scala 
b/daffodil-lib/src/main/scala/org/apache/daffodil/xml/DaffodilXMLLoader.scala
index efdb5e1..981bf42 100644
--- 
a/daffodil-lib/src/main/scala/org/apache/daffodil/xml/DaffodilXMLLoader.scala
+++ 
b/daffodil-lib/src/main/scala/org/apache/daffodil/xml/DaffodilXMLLoader.scala
@@ -598,8 +598,7 @@ class BasicErrorHandler extends org.xml.sax.ErrorHandler {
     hasError = true
   }
   def fatalError(exception: SAXParseException) = {
-    diagnostics :+= exception
-    hasError = true
+    error(exception)
   }
 }
 
diff --git 
a/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LineFoldedTransformer.scala
 
b/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LineFoldedTransformer.scala
index 9be74a3..c1b8c78 100644
--- 
a/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LineFoldedTransformer.scala
+++ 
b/daffodil-runtime1/src/main/scala/org/apache/daffodil/layers/LineFoldedTransformer.scala
@@ -296,10 +296,6 @@ class LineFoldedInputStream(mode: LineFoldMode, jis: 
InputStream)
         case GotCRLF => {
           c = jis.read()
           c match {
-            case -1 => {
-              state = Buf2 // buffering up the LF
-              return '\r'
-            }
             case ' ' | '\t' => {
               if (mode eq LineFoldMode.IMF) {
                 state = Start // absorb the CR, LF, but not the sp/tab
@@ -312,7 +308,8 @@ class LineFoldedInputStream(mode: LineFoldMode, jis: 
InputStream)
               }
             }
             case _ => {
-              // CRLF followed by other not sp/tab
+              // CRLF followed by other not sp/tab, or end of data.
+              // Buffer up to LF.
               state = Buf2
               return '\r'
             }
diff --git 
a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/DelimitedParsers.scala
 
b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/DelimitedParsers.scala
index f97112c..4eeabaf 100644
--- 
a/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/DelimitedParsers.scala
+++ 
b/daffodil-runtime1/src/main/scala/org/apache/daffodil/processors/parsers/DelimitedParsers.scala
@@ -120,10 +120,7 @@ class LiteralNilDelimitedEndOfDataParser(
       val isFieldEmpty = field.length() == 0 // Note: field has been stripped 
of padChars
 
       lazy val isNilLiteral = isFieldNilLiteralValue(field)
-      if (isFieldEmpty && !isEmptyAllowed && !isNilLiteral) {
-        doPE(state)
-        return
-      } else if ((isFieldEmpty && isEmptyAllowed) || // Empty, but must 
advance past padChars if there were any.
+      if ((isFieldEmpty && isEmptyAllowed) || // Empty, but must advance past 
padChars if there were any.
         isNilLiteral) { // Not empty, but matches.
         // Contains a nilValue, Success!
         state.thisElement.setNilled()
diff --git 
a/daffodil-tdml-lib/src/main/scala/org/apache/daffodil/tdml/TDMLRunner.scala 
b/daffodil-tdml-lib/src/main/scala/org/apache/daffodil/tdml/TDMLRunner.scala
index 1be3250..d7082a0 100644
--- a/daffodil-tdml-lib/src/main/scala/org/apache/daffodil/tdml/TDMLRunner.scala
+++ b/daffodil-tdml-lib/src/main/scala/org/apache/daffodil/tdml/TDMLRunner.scala
@@ -236,8 +236,7 @@ class DFDLTestSuite private[tdml] (
     }
 
     def fatalError(exception: SAXParseException) = {
-      loadingExceptions = exception :: loadingExceptions
-      isLoadingError = true
+      error(exception)
     }
   }
 
diff --git a/sonar-project.properties b/sonar-project.properties
index d2f6601..8883616 100644
--- a/sonar-project.properties
+++ b/sonar-project.properties
@@ -19,6 +19,10 @@ sonar.projectKey=apache_incubator-daffodil
 
sonar.modules=daffodil-cli,daffodil-core,daffodil-io,daffodil-japi,daffodil-lib,daffodil-macro-lib,daffodil-propgen,daffodil-runtime1,daffodil-runtime1-unparser,daffodil-sapi,daffodil-tdml-lib,daffodil-tdml-processor,daffodil-test,daffodil-test-ibm1,daffodil-udf
 sonar.sources=src/main
 sonar.tests=src/it,src/test
+# TODO DAFFODIL-1747 Scala/Java APIs currently contain a lot of duplication
+#  by their nature. Best to exclude them. This will want to be removed when
+#  the ticket above is fixed
+sonar.cpd.exclusions=src/main/scala/org/apache/daffodil/sapi/Daffodil.scala,src/main/scala/org/apache/daffodil/japi/Daffodil.scala
 sonar.java.binaries=target/**/classes
 sonar.java.test.binaries=target/**/test-classes
 sonar.java.libraries=../lib_managed/**/*.jar

Reply via email to