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