diff --git a/.travis.yml b/.travis.yml
index 2bdddfef6e6..048e6b014cb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,4 +20,4 @@ before_script:
script:
# - mvn -e -B clean install && cd hapi-fhir-ra && mvn -e -B -DTRAVIS_JOB_ID=$TRAVIS_JOB_ID clean test jacoco:report coveralls:report
- - mvn -e -B -P ALLMODULES,NOPARALLEL clean install && cd hapi-fhir-jacoco && mvn -e -B -DTRAVIS_JOB_ID=$TRAVIS_JOB_ID jacoco:report coveralls:report
+ - mvn -Dci=true -e -B -P ALLMODULES,NOPARALLEL clean install && cd hapi-fhir-jacoco && mvn -e -B -DTRAVIS_JOB_ID=$TRAVIS_JOB_ID jacoco:report coveralls:report
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/BaseParser.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/BaseParser.java
index 17c00535a52..34781546014 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/BaseParser.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/BaseParser.java
@@ -1075,13 +1075,15 @@ public abstract class BaseParser implements IParser {
StringBuilder b = new StringBuilder();
b.append(myResDef.getName());
return b;
- } else {
+ } else if (myParent != null) {
StringBuilder b = myParent.buildPath();
if (b != null && myDef != null) {
b.append('.');
b.append(myDef.getElementName());
}
return b;
+ } else {
+ return null;
}
}
diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/TestUtil.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/TestUtil.java
index 369bc6f4a10..3820351322f 100644
--- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/TestUtil.java
+++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/util/TestUtil.java
@@ -26,7 +26,12 @@ import java.util.Arrays;
import java.util.Locale;
import java.util.TimeZone;
+import org.slf4j.LoggerFactory;
+
import ca.uhn.fhir.context.FhirContext;
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.LoggerContext;
public class TestUtil {
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(TestUtil.class);
@@ -71,6 +76,7 @@ public class TestUtil {
}
}
}
+
}
/*
@@ -94,6 +100,16 @@ public class TestUtil {
String timeZone = availableTimeZones[(int)(Math.random() * availableTimeZones.length)];
TimeZone.setDefault(TimeZone.getTimeZone(timeZone));
ourLog.info("Tests are using time zone: {}", TimeZone.getDefault().getID());
+
+ /*
+ * If we're running a CI build, set all loggers to TRACE level to ensure coverage
+ * on trace blocks
+ */
+ if ("true".equals(System.getProperty("ci"))) {
+ for (Logger next : ((LoggerContext)LoggerFactory.getILoggerFactory()).getLoggerList()) {
+ next.setLevel(Level.TRACE);
+ }
+ }
}
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 224a65892ef..4053ff5d039 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -192,6 +192,10 @@
required in earlier versions of FHIR but has been removed
from the specification.
+
+ Fix NullPointerException when encoding an extension containing CodeableConcept
+ with log level set to TRACE. Thanks to Bill Denton for the report!
+