Add error codes to all exceptions (#3278)

* Initial design of adding exception codes to exceptions

* Initial design of adding exception codes to exceptions

* change int module name to string

* add comment

* shorten message

* shorten message

* added checkstyle

* developing checker

* completed checkstyle plugin and unit test for it

* fix NPE

* fix checker so it ignores throws on exceptions that aren't new

* change parameter order in InvalidResponseException

* accept Msg.code() in any parameter since some exceptions like MessageException have the message string as the second parameter

* exclude generated files

* BIG COMMIT added error codes to all exception throws

* example test fix

* Modified tests such that the assert statements would better match the message responses.

* Modified additional tests such that the assert statements would better match the message responses.

* fix test

* merge master

* merge master

* Fourth commit of modified tests such that the assert statements would better match the message response

* Changes made to modify assert statements such that they match the new errors which now use error codes. Also changed ResourceNotFoundException to include error codes in its messages.

* Modified assert messages to better match new error codes

* Time Zone changes DRAFT. Certain tests pass in intellij and fail during mvn install

* Modified assert messages to better match new error codes

* Added comments for time zone fixes. Previous commit comment on time zone fixes was incorrect. By invaliding caches, all tests on both intellij and mvn install passed.

* Reverted changes on azure-pipelines.yml

* updated hapi-fhir version for checkstyle module

* changes to azure-pipelines.yml

* changes to azure-pipelines.yml

* change to pom.xml to include hapi-fhir-checkstyle in ALLMODULES

* changes to azure-piplines (these changes are to be reverted after testing)

* reverted changes to azure-piplines

* reverted change where hapi-fhir-checkstyle was added to pom.xml (hapi-fhir)

* Attempted fix on checkstyle build error

* modified azure-piplines.yml to change maven repository for checkstyle build

* Attempted fix on checkstyle build error

* checkstyle config location change for hapi-depoloyable-pom. (will be reverted if it does not work)

* attempted dependency add for hapi-depoloyable-pom. (will be reverted if it does not work)

* reverted changes for hapi-deployable-pom

* add javadoc

* update last code

* Attempted fix on checkstyle build error

* Finished adding in missing error codes to pass Checkstyle checks

* Test pipelining

* Fixing errors and bumping version (as suggested by Gary)

* Merge

* Fixing Checkstyle error

* Attempted fix for date error

* Add error code onto assert statement

* Add in a couple more error codes

* Fixing assert statements

* Bump to static version for dependency

* Adding error code to message

* Adding error codes to exceptions

* Adding error codes to exceptions

* Change to work with cdr branch

* Update to faulty error message

* Merge changes

* allow checkstyle pom to deploy

Co-authored-by: Ken Stevens <khstevens@gmail.com>
Co-authored-by: Simon Zuccherato <simon.zuccherato@smilecdr.com>
Co-authored-by: Predap <simon.zuccherato@gmail.com>
Co-authored-by: Predap <46201929+Predap@users.noreply.github.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
This commit is contained in:
Johnson Lu 2022-01-31 13:10:15 -08:00 committed by GitHub
parent 65398ca14f
commit c42ecc5c08
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
874 changed files with 4648 additions and 3336 deletions

View File

@ -17,6 +17,15 @@ jobs:
timeoutInMinutes: 360
container: maven:3.8-openjdk-17
steps:
- task: Maven@3
env:
JAVA_HOME_11_X64: /usr/java/openjdk-17
displayName: Checkstyle Build
inputs:
mavenPomFile: 'hapi-fhir-checkstyle/pom.xml'
goals: 'clean install'
options: '-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)'
jdkVersionOption: 1.11
- task: DockerInstaller@0
displayName: Docker Installer
inputs:

View File

@ -4,7 +4,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-fhir</artifactId>
<version>5.7.0-PRE9-SNAPSHOT</version>
<version>5.7.0-PRE10-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-deployable-pom</artifactId>
<version>5.7.0-PRE9-SNAPSHOT</version>
<version>5.7.0-PRE10-SNAPSHOT</version>
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
</parent>

View File

@ -8,6 +8,7 @@ import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import ca.uhn.fhir.i18n.Msg;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.WildcardFileFilter;
import org.junit.jupiter.api.BeforeAll;
@ -41,7 +42,7 @@ public class BuiltJarDstu2IT {
ctx.newXmlParser().encodeResourceToString(p);
fail();
} catch (ca.uhn.fhir.context.ConfigurationException e) {
assertEquals("Unable to initialize StAX - XML processing is disabled",e.getMessage());
assertEquals(Msg.code(1754) + "Unable to initialize StAX - XML processing is disabled",e.getMessage());
}
}

View File

@ -5,7 +5,7 @@
<parent>
<groupId>ca.uhn.hapi.fhir</groupId>
<artifactId>hapi-deployable-pom</artifactId>
<version>5.7.0-PRE9-SNAPSHOT</version>
<version>5.7.0-PRE10-SNAPSHOT</version>
<relativePath>../hapi-deployable-pom/pom.xml</relativePath>
</parent>

View File

@ -20,15 +20,16 @@ package ca.uhn.fhir.context;
* #L%
*/
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.Map.Entry;
import ca.uhn.fhir.i18n.Msg;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseReference;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.Set;
public abstract class BaseRuntimeChildDefinition {
private BaseRuntimeChildDefinition myReplacedParentDefinition;
@ -98,7 +99,7 @@ public abstract class BaseRuntimeChildDefinition {
}
// Shouldn't happen
throw new IllegalStateException("Unable to find reference type");
throw new IllegalStateException(Msg.code(1692) + "Unable to find reference type");
}
// public String getExtensionUrl() {

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.context;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.util.ParametersUtil;
@ -210,7 +211,7 @@ public abstract class BaseRuntimeDeclaredChildDefinition extends BaseRuntimeChil
try {
theField.set(theTarget, theValue);
} catch (IllegalAccessException e) {
throw new ConfigurationException("Failed to set value", e);
throw new ConfigurationException(Msg.code(1736) + "Failed to set value", e);
}
}
@ -218,7 +219,7 @@ public abstract class BaseRuntimeDeclaredChildDefinition extends BaseRuntimeChil
try {
return theField.get(theTarget);
} catch (IllegalAccessException e) {
throw new ConfigurationException("Failed to get value", e);
throw new ConfigurationException(Msg.code(1737) + "Failed to get value", e);
}
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.context;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IBoundCodeableConcept;
import ca.uhn.fhir.model.api.IDatatype;
import ca.uhn.fhir.model.api.IElement;
@ -131,10 +132,10 @@ public abstract class BaseRuntimeElementCompositeDefinition<T extends IBase> ext
void addChild(BaseRuntimeChildDefinition theNext) {
if (theNext == null) {
throw new NullPointerException();
throw new NullPointerException(Msg.code(1698));
}
if (theNext.getExtensionUrl() != null) {
throw new IllegalArgumentException("Shouldn't haven an extension URL, use addExtension instead");
throw new IllegalArgumentException(Msg.code(1699) + "Shouldn't haven an extension URL, use addExtension instead");
}
myChildren.add(theNext);
}
@ -149,7 +150,7 @@ public abstract class BaseRuntimeElementCompositeDefinition<T extends IBase> ext
validateSealed();
BaseRuntimeChildDefinition retVal = myNameToChild.get(theName);
if (retVal == null) {
throw new DataFormatException("Unknown child name '" + theName + "' in element " + getName() + " - Valid names are: " + new TreeSet<String>(myNameToChild.keySet()));
throw new DataFormatException(Msg.code(1700) + "Unknown child name '" + theName + "' in element " + getName() + " - Valid names are: " + new TreeSet<String>(myNameToChild.keySet()));
}
return retVal;
}
@ -281,7 +282,7 @@ public abstract class BaseRuntimeElementCompositeDefinition<T extends IBase> ext
}
}
if (order == Child.REPLACE_PARENT) {
throw new ConfigurationException("Field " + nextField.getName() + "' on target type " + declaringClass.getSimpleName() + " has order() of REPLACE_PARENT (" + Child.REPLACE_PARENT
throw new ConfigurationException(Msg.code(1701) + "Field " + nextField.getName() + "' on target type " + declaringClass.getSimpleName() + " has order() of REPLACE_PARENT (" + Child.REPLACE_PARENT
+ ") but no parent element with extension URL " + extensionAttr.url() + " could be found on type " + nextField.getDeclaringClass().getSimpleName());
}
@ -308,7 +309,7 @@ public abstract class BaseRuntimeElementCompositeDefinition<T extends IBase> ext
}
}
if (order == Child.REPLACE_PARENT) {
throw new ConfigurationException("Field " + nextField.getName() + "' on target type " + declaringClass.getSimpleName() + " has order() of REPLACE_PARENT (" + Child.REPLACE_PARENT
throw new ConfigurationException(Msg.code(1702) + "Field " + nextField.getName() + "' on target type " + declaringClass.getSimpleName() + " has order() of REPLACE_PARENT (" + Child.REPLACE_PARENT
+ ") but no parent element with name " + elementName + " could be found on type " + nextField.getDeclaringClass().getSimpleName());
}
@ -317,7 +318,7 @@ public abstract class BaseRuntimeElementCompositeDefinition<T extends IBase> ext
}
if (order < 0 && order != Child.ORDER_UNKNOWN) {
throw new ConfigurationException("Invalid order '" + order + "' on @Child for field '" + nextField.getName() + "' on target type: " + declaringClass);
throw new ConfigurationException(Msg.code(1703) + "Invalid order '" + order + "' on @Child for field '" + nextField.getName() + "' on target type: " + declaringClass);
}
if (order != Child.ORDER_UNKNOWN && !orderIsReplaceParent) {
@ -339,11 +340,11 @@ public abstract class BaseRuntimeElementCompositeDefinition<T extends IBase> ext
List<Class<? extends IBase>> choiceTypes = next.getChoiceTypes();
if (orderMap.containsKey(order)) {
throw new ConfigurationException("Detected duplicate field order '" + childAnnotation.order() + "' for element named '" + elementName + "' in type '" + declaringClass.getCanonicalName() + "' - Already had: " + orderMap.get(order).getElementName());
throw new ConfigurationException(Msg.code(1704) + "Detected duplicate field order '" + childAnnotation.order() + "' for element named '" + elementName + "' in type '" + declaringClass.getCanonicalName() + "' - Already had: " + orderMap.get(order).getElementName());
}
if (elementNames.contains(elementName)) {
throw new ConfigurationException("Detected duplicate field name '" + elementName + "' in type '" + declaringClass.getCanonicalName() + "'");
throw new ConfigurationException(Msg.code(1705) + "Detected duplicate field name '" + elementName + "' in type '" + declaringClass.getCanonicalName() + "'");
}
Class<?> nextElementType = next.getElementType();
@ -393,7 +394,7 @@ public abstract class BaseRuntimeElementCompositeDefinition<T extends IBase> ext
refTypesList.add(myContext.getVersion().getVersion().isRi() ? IAnyResource.class : IResource.class);
continue;
} else if (IBaseResource.class.isAssignableFrom(nextType) == false) {
throw new ConfigurationException("Field '" + nextField.getName() + "' in class '" + nextField.getDeclaringClass().getCanonicalName() + "' is of type " + BaseResourceReferenceDt.class + " but contains a non-resource type: " + nextType.getCanonicalName());
throw new ConfigurationException(Msg.code(1706) + "Field '" + nextField.getName() + "' in class '" + nextField.getDeclaringClass().getCanonicalName() + "' is of type " + BaseResourceReferenceDt.class + " but contains a non-resource type: " + nextType.getCanonicalName());
}
refTypesList.add((Class<? extends IBaseResource>) nextType);
}
@ -439,7 +440,7 @@ public abstract class BaseRuntimeElementCompositeDefinition<T extends IBase> ext
}
} else {
throw new ConfigurationException("Field '" + elementName + "' in type '" + declaringClass.getCanonicalName() + "' is not a valid child type: " + nextElementType);
throw new ConfigurationException(Msg.code(1707) + "Field '" + elementName + "' in type '" + declaringClass.getCanonicalName() + "' is not a valid child type: " + nextElementType);
}
Binding bindingAnnotation = ModelScanner.pullAnnotation(nextField, Binding.class);
@ -485,7 +486,7 @@ public abstract class BaseRuntimeElementCompositeDefinition<T extends IBase> ext
}
for (String nextName : next.getValidChildNames()) {
if (myNameToChild.containsKey(nextName)) {
throw new ConfigurationException("Duplicate child name[" + nextName + "] in Element[" + getName() + "]");
throw new ConfigurationException(Msg.code(1708) + "Duplicate child name[" + nextName + "] in Element[" + getName() + "]");
}
myNameToChild.put(nextName, next);
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.context;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.util.UrlUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
@ -28,7 +29,11 @@ import org.hl7.fhir.instance.model.api.IBase;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.lang.reflect.Constructor;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class BaseRuntimeElementDefinition<T extends IBase> {
@ -96,7 +101,7 @@ public abstract class BaseRuntimeElementDefinition<T extends IBase> {
}
}
if (retVal == null) {
throw new ConfigurationException("Class " + getImplementingClass() + " has no constructor with a single argument of type " + argumentType);
throw new ConfigurationException(Msg.code(1695) + "Class " + getImplementingClass() + " has no constructor with a single argument of type " + argumentType);
}
myConstructors.put(argumentType, retVal);
}
@ -169,7 +174,7 @@ public abstract class BaseRuntimeElementDefinition<T extends IBase> {
return getConstructor(theArgument).newInstance(theArgument);
} catch (Exception e) {
throw new ConfigurationException("Failed to instantiate type:" + getImplementingClass().getName(), e);
throw new ConfigurationException(Msg.code(1696) + "Failed to instantiate type:" + getImplementingClass().getName(), e);
}
}
@ -191,7 +196,7 @@ public abstract class BaseRuntimeElementDefinition<T extends IBase> {
for (RuntimeChildDeclaredExtensionDefinition next : myExtensions) {
String extUrl = next.getExtensionUrl();
if (myUrlToExtension.containsKey(extUrl)) {
throw new ConfigurationException("Duplicate extension URL[" + extUrl + "] in Element[" + getName() + "]");
throw new ConfigurationException(Msg.code(1697) + "Duplicate extension URL[" + extUrl + "] in Element[" + getName() + "]");
}
myUrlToExtension.put(extUrl, next);
if (next.isModifier()) {

View File

@ -5,6 +5,7 @@ import ca.uhn.fhir.context.support.DefaultProfileValidationSupport;
import ca.uhn.fhir.context.support.IValidationSupport;
import ca.uhn.fhir.fhirpath.IFhirPath;
import ca.uhn.fhir.i18n.HapiLocalizer;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IElement;
import ca.uhn.fhir.model.api.IFhirVersion;
import ca.uhn.fhir.model.api.IResource;
@ -179,7 +180,7 @@ public class FhirContext {
if (theVersion != null) {
if (!theVersion.isPresentOnClasspath()) {
throw new IllegalStateException(getLocalizer().getMessage(FhirContext.class, "noStructuresForSpecifiedVersion", theVersion.name()));
throw new IllegalStateException(Msg.code(1680) + getLocalizer().getMessage(FhirContext.class, "noStructuresForSpecifiedVersion", theVersion.name()));
}
myVersion = theVersion.getVersionImplementation();
} else if (FhirVersionEnum.DSTU2.isPresentOnClasspath()) {
@ -193,7 +194,7 @@ public class FhirContext {
} else if (FhirVersionEnum.R4.isPresentOnClasspath()) {
myVersion = FhirVersionEnum.R4.getVersionImplementation();
} else {
throw new IllegalStateException(getLocalizer().getMessage(FhirContext.class, "noStructures"));
throw new IllegalStateException(Msg.code(1681) + getLocalizer().getMessage(FhirContext.class, "noStructures"));
}
if (theVersion == null) {
@ -456,7 +457,7 @@ public class FhirContext {
Validate.notNull(theResourceType, "theResourceType can not be null");
if (Modifier.isAbstract(theResourceType.getModifiers())) {
throw new IllegalArgumentException("Can not scan abstract or interface class (resource definitions must be concrete classes): " + theResourceType.getName());
throw new IllegalArgumentException(Msg.code(1682) + "Can not scan abstract or interface class (resource definitions must be concrete classes): " + theResourceType.getName());
}
RuntimeResourceDefinition retVal = (RuntimeResourceDefinition) myClassToElementDefinition.get(theResourceType);
@ -489,7 +490,7 @@ public class FhirContext {
Class<? extends IBaseResource> resourceType = nameToType.get(theResourceName.toLowerCase());
if (resourceType == null) {
throw new DataFormatException(createUnknownResourceNameError(theResourceName, theVersion));
throw new DataFormatException(Msg.code(1683) + createUnknownResourceNameError(theResourceName, theVersion));
}
return getResourceDefinition(resourceType);
@ -556,7 +557,7 @@ public class FhirContext {
// Multiple spots in HAPI FHIR and Smile CDR depend on DataFormatException
// being thrown by this method, don't change that.
// ***********************************************************************
throw new DataFormatException(createUnknownResourceNameError(theResourceName, myVersion.getVersion()));
throw new DataFormatException(Msg.code(1684) + createUnknownResourceNameError(theResourceName, myVersion.getVersion()));
}
if (IBaseResource.class.isAssignableFrom(clazz)) {
retVal = scanResourceType(clazz);
@ -605,7 +606,7 @@ public class FhirContext {
try (InputStream propFile = myVersion.getFhirVersionPropertiesFile()) {
props.load(propFile);
} catch (IOException e) {
throw new ConfigurationException("Failed to load version properties file", e);
throw new ConfigurationException(Msg.code(1685) + "Failed to load version properties file", e);
}
Enumeration<?> propNames = props.propertyNames();
while (propNames.hasMoreElements()) {
@ -628,7 +629,7 @@ public class FhirContext {
try {
myRestfulClientFactory = (IRestfulClientFactory) ReflectionUtil.newInstance(Class.forName("ca.uhn.fhir.rest.client.apache.ApacheRestfulClientFactory"), FhirContext.class, this);
} catch (ClassNotFoundException e) {
throw new ConfigurationException("hapi-fhir-client does not appear to be on the classpath");
throw new ConfigurationException(Msg.code(1686) + "hapi-fhir-client does not appear to be on the classpath");
}
}
return myRestfulClientFactory;
@ -1024,7 +1025,7 @@ public class FhirContext {
if (next instanceof RuntimeResourceDefinition) {
if ("Bundle".equals(next.getName())) {
if (!IBaseBundle.class.isAssignableFrom(next.getImplementingClass())) {
throw new ConfigurationException("Resource type declares resource name Bundle but does not implement IBaseBundle");
throw new ConfigurationException(Msg.code(1687) + "Resource type declares resource name Bundle but does not implement IBaseBundle");
}
}
}
@ -1209,7 +1210,7 @@ public class FhirContext {
ArrayList<Class<? extends IBaseResource>> retVal = new ArrayList<Class<? extends IBaseResource>>(1);
for (Class<?> clazz : theResourceTypes) {
if (!IResource.class.isAssignableFrom(clazz)) {
throw new IllegalArgumentException(clazz.getCanonicalName() + " is not an instance of " + IResource.class.getSimpleName());
throw new IllegalArgumentException(Msg.code(1688) + clazz.getCanonicalName() + " is not an instance of " + IResource.class.getSimpleName());
}
retVal.add((Class<? extends IResource>) clazz);
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.context;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IFhirVersion;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
@ -66,13 +67,13 @@ public enum FhirVersionEnum {
public IFhirVersion getVersionImplementation() {
if (!isPresentOnClasspath()) {
throw new IllegalStateException("Version " + name() + " is not present on classpath");
throw new IllegalStateException(Msg.code(1709) + "Version " + name() + " is not present on classpath");
}
if (myVersionImplementation == null) {
try {
myVersionImplementation = (IFhirVersion) Class.forName(myVersionClass).newInstance();
} catch (Exception e) {
throw new InternalErrorException("Failed to instantiate FHIR version " + name(), e);
throw new InternalErrorException(Msg.code(1710) + "Failed to instantiate FHIR version " + name(), e);
}
}
return myVersionImplementation;
@ -139,7 +140,7 @@ public enum FhirVersionEnum {
case R5:
return FhirContext.forR5();
}
throw new IllegalStateException("Unknown version: " + this); // should not happen
throw new IllegalStateException(Msg.code(1711) + "Unknown version: " + this); // should not happen
}
private interface IVersionProvider {

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.context;
*/
import ca.uhn.fhir.context.RuntimeSearchParam.RuntimeSearchParamStatusEnum;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.BaseIdentifiableElement;
import ca.uhn.fhir.model.api.ExtensionDt;
import ca.uhn.fhir.model.api.IDatatype;
@ -178,8 +179,7 @@ class ModelScanner {
ResourceDef resourceDefinition = pullAnnotation(theClass, ResourceDef.class);
if (resourceDefinition != null) {
if (!IBaseResource.class.isAssignableFrom(theClass)) {
throw new ConfigurationException(
"Resource type contains a @" + ResourceDef.class.getSimpleName() + " annotation but does not implement " + IResource.class.getCanonicalName() + ": " + theClass.getCanonicalName());
throw new ConfigurationException(Msg.code(1714) + "Resource type contains a @" + ResourceDef.class.getSimpleName() + " annotation but does not implement " + IResource.class.getCanonicalName() + ": " + theClass.getCanonicalName());
}
@SuppressWarnings("unchecked")
Class<? extends IBaseResource> resClass = (Class<? extends IBaseResource>) theClass;
@ -208,8 +208,7 @@ class ModelScanner {
if (IResourceBlock.class.isAssignableFrom(theClass) || IBaseBackboneElement.class.isAssignableFrom(theClass) || IBaseDatatypeElement.class.isAssignableFrom(theClass)) {
scanBlock(theClass);
} else {
throw new ConfigurationException(
"Type contains a @" + Block.class.getSimpleName() + " annotation but does not implement " + IResourceBlock.class.getCanonicalName() + ": " + theClass.getCanonicalName());
throw new ConfigurationException(Msg.code(1715) + "Type contains a @" + Block.class.getSimpleName() + " annotation but does not implement " + IResourceBlock.class.getCanonicalName() + ": " + theClass.getCanonicalName());
}
}
@ -218,7 +217,7 @@ class ModelScanner {
return;
}
throw new ConfigurationException("Resource class[" + theClass.getName() + "] does not contain any valid HAPI-FHIR annotations");
throw new ConfigurationException(Msg.code(1716) + "Resource class[" + theClass.getName() + "] does not contain any valid HAPI-FHIR annotations");
}
}
@ -230,7 +229,7 @@ class ModelScanner {
// Just in case someone messes up when upgrading from DSTU2
if (myContext.getVersion().getVersion().isEqualOrNewerThan(FhirVersionEnum.DSTU3)) {
if (BaseIdentifiableElement.class.isAssignableFrom(theClass)) {
throw new ConfigurationException("@Block class for version " + myContext.getVersion().getVersion().name() + " should not extend " + BaseIdentifiableElement.class.getSimpleName() + ": " + theClass.getName());
throw new ConfigurationException(Msg.code(1717) + "@Block class for version " + myContext.getVersion().getVersion().name() + " should not extend " + BaseIdentifiableElement.class.getSimpleName() + ": " + theClass.getName());
}
}
@ -267,7 +266,7 @@ class ModelScanner {
String resourceName = theDatatypeDefinition.name();
if (isBlank(resourceName)) {
throw new ConfigurationException("Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name: " + theClass.getCanonicalName());
throw new ConfigurationException(Msg.code(1718) + "Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name: " + theClass.getCanonicalName());
}
BaseRuntimeElementDefinition<?> elementDef;
@ -314,7 +313,7 @@ class ModelScanner {
parent = parent.getSuperclass();
}
if (isBlank(resourceName)) {
throw new ConfigurationException("Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name(): " + theClass.getCanonicalName()
throw new ConfigurationException(Msg.code(1719) + "Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name(): " + theClass.getCanonicalName()
+ " - This is only allowed for types that extend other resource types ");
}
}
@ -331,7 +330,7 @@ class ModelScanner {
String resourceId = resourceDefinition.id();
if (!isBlank(resourceId)) {
if (myIdToResourceDefinition.containsKey(resourceId)) {
throw new ConfigurationException("The following resource types have the same ID of '" + resourceId + "' - " + theClass.getCanonicalName() + " and "
throw new ConfigurationException(Msg.code(1720) + "The following resource types have the same ID of '" + resourceId + "' - " + theClass.getCanonicalName() + " and "
+ myIdToResourceDefinition.get(resourceId).getImplementingClass().getCanonicalName());
}
}
@ -384,7 +383,7 @@ class ModelScanner {
if (searchParam != null) {
RestSearchParameterTypeEnum paramType = RestSearchParameterTypeEnum.forCode(searchParam.type().toLowerCase());
if (paramType == null) {
throw new ConfigurationException("Search param " + searchParam.name() + " has an invalid type: " + searchParam.type());
throw new ConfigurationException(Msg.code(1721) + "Search param " + searchParam.name() + " has an invalid type: " + searchParam.type());
}
Set<String> providesMembershipInCompartments;
providesMembershipInCompartments = new HashSet<>();
@ -453,7 +452,7 @@ class ModelScanner {
if (List.class.equals(nextElementType)) {
nextElementType = ReflectionUtil.getGenericCollectionTypeOfField(next);
} else if (Collection.class.isAssignableFrom(nextElementType)) {
throw new ConfigurationException("Field '" + next.getName() + "' in type '" + next.getClass().getCanonicalName() + "' is a Collection - Only java.util.List curently supported");
throw new ConfigurationException(Msg.code(1722) + "Field '" + next.getName() + "' in type '" + next.getClass().getCanonicalName() + "' is a Collection - Only java.util.List curently supported");
}
return nextElementType;
}
@ -462,7 +461,7 @@ class ModelScanner {
static IValueSetEnumBinder<Enum<?>> getBoundCodeBinder(Field theNext) {
Class<?> bound = getGenericCollectionTypeOfCodedField(theNext);
if (bound == null) {
throw new ConfigurationException("Field '" + theNext + "' has no parameter for " + BoundCodeDt.class.getSimpleName() + " to determine enum type");
throw new ConfigurationException(Msg.code(1723) + "Field '" + theNext + "' has no parameter for " + BoundCodeDt.class.getSimpleName() + " to determine enum type");
}
String fieldName = "VALUESET_BINDER";
@ -470,7 +469,7 @@ class ModelScanner {
Field bindingField = bound.getField(fieldName);
return (IValueSetEnumBinder<Enum<?>>) bindingField.get(null);
} catch (Exception e) {
throw new ConfigurationException("Field '" + theNext + "' has type parameter " + bound.getCanonicalName() + " but this class has no valueset binding field (must have a field called " + fieldName + ")", e);
throw new ConfigurationException(Msg.code(1724) + "Field '" + theNext + "' has type parameter " + bound.getCanonicalName() + " but this class has no valueset binding field (must have a field called " + fieldName + ")", e);
}
}
@ -540,7 +539,7 @@ class ModelScanner {
}
} catch (ClassNotFoundException e) {
throw new ConfigurationException("Unknown class[" + nextValue + "] for data type definition: " + nextKey.substring("datatype.".length()), e);
throw new ConfigurationException(Msg.code(1725) + "Unknown class[" + nextValue + "] for data type definition: " + nextKey.substring("datatype.".length()), e);
}
}
} else if (nextKey.startsWith("resource.")) {
@ -553,19 +552,19 @@ class ModelScanner {
continue;
}
if (!IBaseResource.class.isAssignableFrom(nextClass)) {
throw new ConfigurationException("Class is not assignable from " + IBaseResource.class.getSimpleName() + ": " + nextValue);
throw new ConfigurationException(Msg.code(1726) + "Class is not assignable from " + IBaseResource.class.getSimpleName() + ": " + nextValue);
}
theResourceTypes.put(resName, nextClass);
} catch (ClassNotFoundException e) {
throw new ConfigurationException("Unknown class[" + nextValue + "] for resource definition: " + nextKey.substring("resource.".length()), e);
throw new ConfigurationException(Msg.code(1727) + "Unknown class[" + nextValue + "] for resource definition: " + nextKey.substring("resource.".length()), e);
}
} else {
throw new ConfigurationException("Unexpected property in version property file: " + nextKey + "=" + nextValue);
throw new ConfigurationException(Msg.code(1728) + "Unexpected property in version property file: " + nextKey + "=" + nextValue);
}
}
} catch (IOException e) {
throw new ConfigurationException("Failed to load model property file from classpath: " + "/ca/uhn/fhir/model/dstu/model.properties");
throw new ConfigurationException(Msg.code(1729) + "Failed to load model property file from classpath: " + "/ca/uhn/fhir/model/dstu/model.properties");
}
return retVal;

View File

@ -20,14 +20,23 @@ package ca.uhn.fhir.context;
* #L%
*/
import java.lang.reflect.Field;
import java.util.*;
import org.apache.commons.lang3.StringUtils;
import org.hl7.fhir.instance.model.api.*;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import org.apache.commons.lang3.StringUtils;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.IBaseReference;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IPrimitiveType;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class RuntimeChildChoiceDefinition extends BaseRuntimeDeclaredChildDefinition {
@ -150,7 +159,7 @@ public class RuntimeChildChoiceDefinition extends BaseRuntimeDeclaredChildDefini
if (myDatatypeToElementName.containsKey(next)) {
String existing = myDatatypeToElementName.get(next);
if (!existing.equals(elementName)) {
throw new ConfigurationException("Already have element name " + existing + " for datatype " + next.getSimpleName() + " in " + getElementName() + ", cannot add " + elementName);
throw new ConfigurationException(Msg.code(1693) + "Already have element name " + existing + " for datatype " + next.getSimpleName() + " in " + getElementName() + ", cannot add " + elementName);
}
} else {
myDatatypeToElementName.put(next, elementName);

View File

@ -20,19 +20,19 @@ package ca.uhn.fhir.context;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.base.composite.BaseContainedDt;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseResource;
import java.lang.reflect.Field;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseResource;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.base.composite.BaseContainedDt;
public class RuntimeChildContainedResources extends BaseRuntimeDeclaredChildDefinition {
private BaseRuntimeElementDefinition<?> myElem;
@ -82,7 +82,7 @@ public class RuntimeChildContainedResources extends BaseRuntimeDeclaredChildDefi
} else if (List.class.isAssignableFrom(actualType)) {
myElem = new RuntimeElemContainedResourceList(IBaseResource.class, false);
} else {
throw new ConfigurationException("Fhir Version definition returned invalid contained type: " + actualType);
throw new ConfigurationException(Msg.code(1735) + "Fhir Version definition returned invalid contained type: " + actualType);
}
}

View File

@ -20,12 +20,12 @@ package ca.uhn.fhir.context;
* #L%
*/
import java.lang.reflect.Field;
import org.hl7.fhir.instance.model.api.IBase;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.IBase;
import java.lang.reflect.Field;
public class RuntimeChildPrimitiveEnumerationDatatypeDefinition extends RuntimeChildPrimitiveDatatypeDefinition {
@ -61,7 +61,7 @@ public class RuntimeChildPrimitiveEnumerationDatatypeDefinition extends RuntimeC
clazz = Class.forName(className);
retVal = clazz.newInstance();
} catch (Exception e) {
throw new ConfigurationException("Failed to instantiate " + className, e);
throw new ConfigurationException(Msg.code(1694) + "Failed to instantiate " + className, e);
}
return retVal;
}

View File

@ -20,6 +20,12 @@ package ca.uhn.fhir.context;
* #L%
*/
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseReference;
import org.hl7.fhir.instance.model.api.IBaseResource;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
@ -28,13 +34,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseReference;
import org.hl7.fhir.instance.model.api.IBaseResource;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.Description;
public class RuntimeChildResourceDefinition extends BaseRuntimeDeclaredChildDefinition {
private BaseRuntimeElementDefinition<?> myRuntimeDef;
@ -111,7 +110,7 @@ public class RuntimeChildResourceDefinition extends BaseRuntimeDeclaredChildDefi
// else {
// RuntimeResourceDefinition nextDef = (RuntimeResourceDefinition) theClassToElementDefinitions.get(next);
// if (nextDef == null) {
// throw new ConfigurationException("Can't find child of type: " + next.getCanonicalName() + " in " + getField().getDeclaringClass());
// throw new ConfigurationException(Msg.code(1691) + "Can't find child of type: " + next.getCanonicalName() + " in " + getField().getDeclaringClass());
// }
// myValidChildNames.add(getElementName() + nextDef.getName());
// }

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.context;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.ExtensionDt;
import ca.uhn.fhir.model.api.IDatatype;
import ca.uhn.fhir.model.base.composite.BaseResourceReferenceDt;
@ -180,7 +181,7 @@ public class RuntimeChildUndeclaredExtensionDefinition extends BaseRuntimeChildD
// CodeType should win. If we aren't in a situation like that, there is a problem with the
// model so we should bail.
if (!existing.isStandardType()) {
throw new ConfigurationException("More than one child of " + getElementName() + " matches attribute name " + attrName + ". Found [" + existing.getImplementingClass().getName() + "] and [" + next.getImplementingClass().getName() + "]");
throw new ConfigurationException(Msg.code(1734) + "More than one child of " + getElementName() + " matches attribute name " + attrName + ". Found [" + existing.getImplementingClass().getName() + "] and [" + next.getImplementingClass().getName() + "]");
}
}

View File

@ -19,16 +19,17 @@ package ca.uhn.fhir.context;
* limitations under the License.
* #L%
*/
import static org.apache.commons.lang3.StringUtils.isBlank;
import java.util.Map;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.ICompositeType;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import java.util.Map;
import static org.apache.commons.lang3.StringUtils.isBlank;
public class RuntimeCompositeDatatypeDefinition extends BaseRuntimeElementCompositeDefinition<ICompositeType> implements IRuntimeDatatypeDefinition {
@ -41,7 +42,7 @@ public class RuntimeCompositeDatatypeDefinition extends BaseRuntimeElementCompos
String resourceName = theDef.name();
if (isBlank(resourceName)) {
throw new ConfigurationException("Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name: " + theImplementingClass.getCanonicalName());
throw new ConfigurationException(Msg.code(1712) + "Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name: " + theImplementingClass.getCanonicalName());
}
mySpecialization = theDef.isSpecialization();
@ -59,7 +60,7 @@ public class RuntimeCompositeDatatypeDefinition extends BaseRuntimeElementCompos
if (myProfileOfType != null) {
myProfileOf = theClassToElementDefinitions.get(myProfileOfType);
if (myProfileOf == null) {
throw new ConfigurationException("Unknown profileOf value: " + myProfileOfType);
throw new ConfigurationException(Msg.code(1713) + "Unknown profileOf value: " + myProfileOfType);
}
}
}

View File

@ -19,7 +19,13 @@ package ca.uhn.fhir.context;
* limitations under the License.
* #L%
*/
import static org.apache.commons.lang3.StringUtils.isBlank;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.IPrimitiveType;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
@ -28,13 +34,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.IBaseHasExtensions;
import org.hl7.fhir.instance.model.api.IPrimitiveType;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import static org.apache.commons.lang3.StringUtils.isBlank;
public class RuntimePrimitiveDatatypeDefinition extends BaseRuntimeElementDefinition<IPrimitiveType<?>> implements IRuntimeDatatypeDefinition {
@ -50,7 +50,7 @@ public class RuntimePrimitiveDatatypeDefinition extends BaseRuntimeElementDefini
String resourceName = theDef.name();
if (isBlank(resourceName)) {
throw new ConfigurationException("Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name: " + theImplementingClass.getCanonicalName());
throw new ConfigurationException(Msg.code(1689) + "Resource type @" + ResourceDef.class.getSimpleName() + " annotation contains no resource name: " + theImplementingClass.getCanonicalName());
}
mySpecialization = theDef.isSpecialization();
@ -142,7 +142,7 @@ public class RuntimePrimitiveDatatypeDefinition extends BaseRuntimeElementDefini
b.append(getImplementingClass().getName());
b.append(" - Valid types: ");
b.append(theClassToElementDefinitions.keySet());
throw new ConfigurationException(b.toString());
throw new ConfigurationException(Msg.code(1690) + b.toString());
}
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.context;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.annotation.ResourceDef;
import ca.uhn.fhir.util.UrlUtil;
import org.hl7.fhir.instance.model.api.IAnyResource;
@ -60,11 +61,11 @@ public class RuntimeResourceDefinition extends BaseRuntimeElementCompositeDefini
try {
instance = theClass.getConstructor().newInstance();
} catch (Exception e) {
throw new ConfigurationException(myContext.getLocalizer().getMessage(getClass(), "nonInstantiableType", theClass.getName(), e.toString()), e);
throw new ConfigurationException(Msg.code(1730) + myContext.getLocalizer().getMessage(getClass(), "nonInstantiableType", theClass.getName(), e.toString()), e);
}
myStructureVersion = instance.getStructureFhirVersionEnum();
if (myStructureVersion != theContext.getVersion().getVersion()) {
throw new ConfigurationException(myContext.getLocalizer().getMessage(getClass(), "typeWrongVersion", theContext.getVersion().getVersion(), theClass.getName(), myStructureVersion));
throw new ConfigurationException(Msg.code(1731) + myContext.getLocalizer().getMessage(getClass(), "typeWrongVersion", theContext.getVersion().getVersion(), theClass.getName(), myStructureVersion));
}
}
@ -106,7 +107,7 @@ public class RuntimeResourceDefinition extends BaseRuntimeElementCompositeDefini
@SuppressWarnings("unchecked")
public <T> Class<T> getImplementingClass(Class<T> theClass) {
if (!theClass.isAssignableFrom(getImplementingClass())) {
throw new ConfigurationException("Unable to convert " + getImplementingClass() + " to " + theClass);
throw new ConfigurationException(Msg.code(1732) + "Unable to convert " + getImplementingClass() + " to " + theClass);
}
return (Class<T>) getImplementingClass();
}
@ -234,7 +235,7 @@ public class RuntimeResourceDefinition extends BaseRuntimeElementCompositeDefini
if (hasExtensions()) {
if (IAnyResource.class.isAssignableFrom(getImplementingClass())) {
if (!IDomainResource.class.isAssignableFrom(getImplementingClass())) {
throw new ConfigurationException("Class \"" + getImplementingClass() + "\" is invalid. This resource type is not a DomainResource, it must not have extensions");
throw new ConfigurationException(Msg.code(1733) + "Class \"" + getImplementingClass() + "\" is invalid. This resource type is not a DomainResource, it must not have extensions");
}
}
}

View File

@ -23,6 +23,7 @@ package ca.uhn.fhir.context.support;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.api.Constants;
import ca.uhn.fhir.util.BundleUtil;
import org.apache.commons.lang3.StringUtils;
@ -99,7 +100,7 @@ public class DefaultProfileValidationSupport implements IValidationSupport {
structureDefinitionResources.add("/org/hl7/fhir/instance/model/profile/" + nextKey);
}
} catch (IOException e) {
throw new ConfigurationException(e);
throw new ConfigurationException(Msg.code(1740) + e);
}
break;
case DSTU2_1:

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.context.support;
*/
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException;
import ca.uhn.fhir.util.ParametersUtil;
import org.apache.commons.lang3.Validate;
@ -711,7 +712,7 @@ public interface IValidationSupport {
public void throwNotFoundIfAppropriate() {
if (isFound() == false) {
throw new ResourceNotFoundException("Unable to find code[" + getSearchedForCode() + "] in system[" + getSearchedForSystem() + "]");
throw new ResourceNotFoundException(Msg.code(1738) + "Unable to find code[" + getSearchedForCode() + "] in system[" + getSearchedForSystem() + "]");
}
}
@ -755,7 +756,7 @@ public interface IValidationSupport {
IValidationSupport.CodingConceptProperty prop = (IValidationSupport.CodingConceptProperty) next;
ParametersUtil.addPartCoding(theContext, property, "value", prop.getCodeSystem(), prop.getCode(), prop.getDisplay());
} else {
throw new IllegalStateException("Don't know how to handle " + next.getClass());
throw new IllegalStateException(Msg.code(1739) + "Don't know how to handle " + next.getClass());
}
}
}

View File

@ -0,0 +1,26 @@
package ca.uhn.fhir.i18n;
/*-
* #%L
* HAPI FHIR - Core Library
* %%
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
* %%
* Licensed 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.
* #L%
*/
public final class HapiErrorCode {
}

View File

@ -5,10 +5,20 @@ import ca.uhn.fhir.util.UrlUtil;
import ca.uhn.fhir.util.VersionUtil;
import java.text.MessageFormat;
import java.util.*;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import static org.apache.commons.lang3.StringUtils.*;
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.apache.commons.lang3.StringUtils.trim;
@ -95,7 +105,7 @@ public class HapiLocalizer {
if (formatString == null) {
ourLog.warn("Unknown localization key: {}", theQualifiedKey);
if (ourFailOnMissingMessage) {
throw new ConfigurationException("Unknown localization key: " + theQualifiedKey);
throw new ConfigurationException(Msg.code(1908) + "Unknown localization key: " + theQualifiedKey);
}
formatString = UNKNOWN_I18N_KEY_MESSAGE;
}

View File

@ -0,0 +1,36 @@
package ca.uhn.fhir.i18n;
/*-
* #%L
* HAPI FHIR - Core Library
* %%
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
* %%
* Licensed 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.
* #L%
*/
public final class Msg {
private static final String ERROR_CODE_PREFIX = "HAPI";
/**
* IMPORTANT: Please update the following comment after you add a new code
* Last code value: 2018
*/
private Msg() {}
public static String code(int theCode) {
return String.format("%s-%04d: ", ERROR_CODE_PREFIX, theCode);
}
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.interceptor.executor;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.interceptor.api.HookParams;
import ca.uhn.fhir.interceptor.api.IBaseInterceptorBroadcaster;
import ca.uhn.fhir.interceptor.api.IBaseInterceptorService;
@ -404,7 +405,7 @@ public abstract class BaseInterceptorService<POINTCUT extends IPointcut> impleme
*/
boolean haveAppropriateParams(POINTCUT thePointcut, HookParams theParams) {
if (theParams.getParamsForType().values().size() != thePointcut.getParameterTypes().size()) {
throw new IllegalArgumentException(String.format("Wrong number of params for pointcut %s - Wanted %s but found %s", thePointcut.name(), toErrorString(thePointcut.getParameterTypes()), theParams.getParamsForType().values().stream().map(t -> t != null ? t.getClass().getSimpleName() : "null").sorted().collect(Collectors.toList())));
throw new IllegalArgumentException(Msg.code(1909) + String.format("Wrong number of params for pointcut %s - Wanted %s but found %s", thePointcut.name(), toErrorString(thePointcut.getParameterTypes()), theParams.getParamsForType().values().stream().map(t -> t != null ? t.getClass().getSimpleName() : "null").sorted().collect(Collectors.toList())));
}
List<String> wantedTypes = new ArrayList<>(thePointcut.getParameterTypes());
@ -574,10 +575,10 @@ public abstract class BaseInterceptorService<POINTCUT extends IPointcut> impleme
if (targetException instanceof RuntimeException) {
throw ((RuntimeException) targetException);
} else {
throw new InternalErrorException("Failure invoking interceptor for pointcut(s) " + getPointcut(), targetException);
throw new InternalErrorException(Msg.code(1910) + "Failure invoking interceptor for pointcut(s) " + getPointcut(), targetException);
}
} catch (Exception e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1911) + e);
}
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.model.api;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.parser.DataFormatException;
import ca.uhn.fhir.util.CoverageIgnore;
@ -94,13 +95,13 @@ public abstract class BaseIdentifiableElement extends BaseElement implements IId
@Override
@CoverageIgnore
public IdDt setValue(String theValue) throws DataFormatException {
throw new UnsupportedOperationException("Use IElement#setElementSpecificId(String) to set the element ID for an element");
throw new UnsupportedOperationException(Msg.code(1899) + "Use IElement#setElementSpecificId(String) to set the element ID for an element");
}
@Override
@CoverageIgnore
public void setValueAsString(String theValue) throws DataFormatException {
throw new UnsupportedOperationException("Use IElement#setElementSpecificId(String) to set the element ID for an element");
throw new UnsupportedOperationException(Msg.code(1900) + "Use IElement#setElementSpecificId(String) to set the element ID for an element");
}
}

View File

@ -20,18 +20,18 @@ package ca.uhn.fhir.model.api;
* #L%
*/
import java.util.ArrayList;
import java.util.List;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.primitive.StringDt;
import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.IBaseExtension;
import ca.uhn.fhir.model.api.annotation.Child;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.primitive.StringDt;
import java.util.ArrayList;
import java.util.List;
@DatatypeDef(name = "Extension")
public class ExtensionDt extends BaseIdentifiableElement implements ICompositeDatatype, IBaseExtension<ExtensionDt, IDatatype> {
@ -116,7 +116,7 @@ public class ExtensionDt extends BaseIdentifiableElement implements ICompositeDa
*/
public IPrimitiveDatatype<?> getValueAsPrimitive() {
if (!(getValue() instanceof IPrimitiveDatatype)) {
throw new ClassCastException("Extension with URL["+myUrl+"] can not be cast to primitive type, type is: "+ getClass().getCanonicalName());
throw new ClassCastException(Msg.code(1887) + "Extension with URL["+myUrl+"] can not be cast to primitive type, type is: "+ getClass().getCanonicalName());
}
return (IPrimitiveDatatype<?>) getValue();
}

View File

@ -1,13 +1,14 @@
package ca.uhn.fhir.model.api;
import ca.uhn.fhir.i18n.Msg;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.io.Serializable;
import static org.apache.commons.lang3.StringUtils.defaultString;
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import java.io.Serializable;
import org.apache.commons.lang3.builder.ToStringBuilder;
/*
* #%L
* HAPI FHIR - Core Library
@ -189,7 +190,7 @@ public class Include implements Serializable {
public void setValue(String theValue) {
if (myImmutable) {
throw new IllegalStateException("Can not change the value of this include");
throw new IllegalStateException(Msg.code(1888) + "Can not change the value of this include");
}
String value = defaultString(theValue);
@ -274,7 +275,7 @@ public class Include implements Serializable {
String paramType = getParamType();
String paramName = getParamName();
if (isBlank(paramType) || isBlank(paramName)) {
throw new IllegalStateException("This include does not contain a value in the format [ResourceType]:[paramName]");
throw new IllegalStateException(Msg.code(1889) + "This include does not contain a value in the format [ResourceType]:[paramName]");
}
b.append(paramType);
b.append(":");

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.model.api;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.base.composite.BaseCodingDt;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.model.primitive.InstantDt;
@ -31,7 +32,11 @@ import org.hl7.fhir.instance.model.api.IAnyResource;
import org.hl7.fhir.instance.model.api.IPrimitiveType;
import java.io.Serializable;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
@ -386,7 +391,7 @@ public abstract class ResourceMetadataKeyEnum<T> implements Serializable {
} else if (retValObj instanceof ExtensionDt) {
return (ExtensionDt) retValObj;
}
throw new InternalErrorException("Found an object of type '" + retValObj.getClass().getCanonicalName()
throw new InternalErrorException(Msg.code(1890) + "Found an object of type '" + retValObj.getClass().getCanonicalName()
+ "' in resource metadata for key " + this.name() + " - Expected "
+ ExtensionDt.class.getCanonicalName());
}
@ -409,7 +414,7 @@ public abstract class ResourceMetadataKeyEnum<T> implements Serializable {
} else if (retValObj instanceof String) {
return theBinder.fromCodeString((String) retValObj);
}
throw new InternalErrorException("Found an object of type '" + retValObj.getClass().getCanonicalName() + "' in resource metadata for key " + theKey.name() + " - Expected "
throw new InternalErrorException(Msg.code(1891) + "Found an object of type '" + retValObj.getClass().getCanonicalName() + "' in resource metadata for key " + theKey.name() + " - Expected "
+ InstantDt.class.getCanonicalName());
}
@ -452,7 +457,7 @@ public abstract class ResourceMetadataKeyEnum<T> implements Serializable {
}
return (InstantDt) retValObj;
}
throw new InternalErrorException("Found an object of type '" + retValObj.getClass().getCanonicalName() + "' in resource metadata for key " + theKey.name() + " - Expected "
throw new InternalErrorException(Msg.code(1892) + "Found an object of type '" + retValObj.getClass().getCanonicalName() + "' in resource metadata for key " + theKey.name() + " - Expected "
+ InstantDt.class.getCanonicalName());
}
@ -466,7 +471,7 @@ public abstract class ResourceMetadataKeyEnum<T> implements Serializable {
}
return (String) retValObj;
}
throw new InternalErrorException("Found an object of type '" + retValObj.getClass().getCanonicalName() + "' in resource metadata for key " + theKey.name() + " - Expected "
throw new InternalErrorException(Msg.code(1893) + "Found an object of type '" + retValObj.getClass().getCanonicalName() + "' in resource metadata for key " + theKey.name() + " - Expected "
+ String.class.getCanonicalName());
}
@ -486,7 +491,7 @@ public abstract class ResourceMetadataKeyEnum<T> implements Serializable {
} else if (retValObj instanceof Number) {
return new IdDt(retValObj.toString());
}
throw new InternalErrorException("Found an object of type '" + retValObj.getClass().getCanonicalName() + "' in resource metadata for key " + theKey.name() + " - Expected "
throw new InternalErrorException(Msg.code(1894) + "Found an object of type '" + retValObj.getClass().getCanonicalName() + "' in resource metadata for key " + theKey.name() + " - Expected "
+ IdDt.class.getCanonicalName());
}

View File

@ -20,6 +20,10 @@ package ca.uhn.fhir.model.api;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.util.CoverageIgnore;
import org.hl7.fhir.instance.model.api.IBase;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
@ -28,10 +32,6 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.hl7.fhir.instance.model.api.IBase;
import ca.uhn.fhir.util.CoverageIgnore;
/**
* A collection of tags present on a single resource. TagList is backed by a {@link LinkedHashSet}, so the order of
* added tags will be consistent, but duplicates will not be preserved.
@ -270,7 +270,7 @@ public class TagList implements Set<Tag>, Serializable, IBase {
@Override
@CoverageIgnore
public List<String> getFormatCommentsPre() {
throw new UnsupportedOperationException();
throw new UnsupportedOperationException(Msg.code(1895));
}
/**
@ -279,17 +279,17 @@ public class TagList implements Set<Tag>, Serializable, IBase {
@Override
@CoverageIgnore
public List<String> getFormatCommentsPost() {
throw new UnsupportedOperationException();
throw new UnsupportedOperationException(Msg.code(1896));
}
@Override
public Object getUserData(String theName) {
throw new UnsupportedOperationException();
throw new UnsupportedOperationException(Msg.code(1897));
}
@Override
public void setUserData(String theName, Object theValue) {
throw new UnsupportedOperationException();
throw new UnsupportedOperationException(Msg.code(1898));
}
}

View File

@ -20,9 +20,8 @@ package ca.uhn.fhir.model.base.composite;
* #L%
*/
import org.apache.commons.lang3.StringUtils;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.BaseIdentifiableElement;
import ca.uhn.fhir.model.api.ICompositeDatatype;
import ca.uhn.fhir.model.api.IQueryParameterType;
@ -31,6 +30,7 @@ import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.model.primitive.UriDt;
import ca.uhn.fhir.rest.param.ParameterUtil;
import ca.uhn.fhir.rest.param.TokenParam;
import org.apache.commons.lang3.StringUtils;
public abstract class BaseCodingDt extends BaseIdentifiableElement implements ICompositeDatatype, IQueryParameterType {
@ -196,7 +196,7 @@ public abstract class BaseCodingDt extends BaseIdentifiableElement implements IC
@Deprecated
@Override
public IQueryParameterType setMissing(Boolean theMissing) {
throw new UnsupportedOperationException("get/setMissing is not supported in StringDt. Use {@link StringParam} instead if you need this functionality");
throw new UnsupportedOperationException(Msg.code(1903) + "get/setMissing is not supported in StringDt. Use {@link StringParam} instead if you need this functionality");
}
}

View File

@ -1,11 +1,12 @@
package ca.uhn.fhir.model.base.composite;
import java.util.List;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IDatatype;
import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.util.CoverageIgnore;
import java.util.List;
/*
* #%L
* HAPI FHIR - Core Library
@ -38,7 +39,7 @@ public abstract class BaseContainedDt implements IDatatype {
@Override
@CoverageIgnore
public List<String> getFormatCommentsPost() {
throw new UnsupportedOperationException();
throw new UnsupportedOperationException(Msg.code(1901));
}
/**
@ -47,7 +48,7 @@ public abstract class BaseContainedDt implements IDatatype {
@Override
@CoverageIgnore
public List<String> getFormatCommentsPre() {
throw new UnsupportedOperationException();
throw new UnsupportedOperationException(Msg.code(1902));
}
/**

View File

@ -20,9 +20,8 @@ package ca.uhn.fhir.model.base.composite;
* #L%
*/
import org.apache.commons.lang3.StringUtils;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.BaseIdentifiableElement;
import ca.uhn.fhir.model.api.ICompositeDatatype;
import ca.uhn.fhir.model.api.IQueryParameterType;
@ -30,6 +29,7 @@ import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.model.primitive.UriDt;
import ca.uhn.fhir.rest.param.ParameterUtil;
import ca.uhn.fhir.rest.param.StringParam;
import org.apache.commons.lang3.StringUtils;
public abstract class BaseIdentifierDt extends BaseIdentifiableElement implements ICompositeDatatype, IQueryParameterType {
@ -137,7 +137,7 @@ public abstract class BaseIdentifierDt extends BaseIdentifiableElement implement
@Deprecated
@Override
public IQueryParameterType setMissing(Boolean theMissing) {
throw new UnsupportedOperationException("get/setMissing is not supported in StringDt. Use {@link StringParam} instead if you need this functionality");
throw new UnsupportedOperationException(Msg.code(1907) + "get/setMissing is not supported in StringDt. Use {@link StringParam} instead if you need this functionality");
}
}

View File

@ -20,15 +20,21 @@ package ca.uhn.fhir.model.base.composite;
* #L%
*/
import java.math.BigDecimal;
import org.apache.commons.lang3.StringUtils;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.*;
import ca.uhn.fhir.model.primitive.*;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.BaseIdentifiableElement;
import ca.uhn.fhir.model.api.ICompositeDatatype;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.model.primitive.BoundCodeDt;
import ca.uhn.fhir.model.primitive.CodeDt;
import ca.uhn.fhir.model.primitive.DecimalDt;
import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.model.primitive.UriDt;
import ca.uhn.fhir.rest.param.ParamPrefixEnum;
import ca.uhn.fhir.rest.param.QuantityParam;
import org.apache.commons.lang3.StringUtils;
import java.math.BigDecimal;
public abstract class BaseQuantityDt extends BaseIdentifiableElement implements ICompositeDatatype, IQueryParameterType {
@ -231,7 +237,7 @@ public abstract class BaseQuantityDt extends BaseIdentifiableElement implements
@Deprecated
@Override
public IQueryParameterType setMissing(Boolean theMissing) {
throw new UnsupportedOperationException("get/setMissing is not supported in StringDt. Use {@link StringParam} instead if you need this functionality");
throw new UnsupportedOperationException(Msg.code(1904) + "get/setMissing is not supported in StringDt. Use {@link StringParam} instead if you need this functionality");
}

View File

@ -20,19 +20,19 @@ package ca.uhn.fhir.model.base.composite;
* #L%
*/
import static org.apache.commons.lang3.StringUtils.isBlank;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.IBaseReference;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IIdType;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.BaseIdentifiableElement;
import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.rest.client.api.IRestfulClient;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.IBaseReference;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IIdType;
import static org.apache.commons.lang3.StringUtils.isBlank;
public abstract class BaseResourceReferenceDt extends BaseIdentifiableElement implements IBaseDatatype, IBaseReference {
@ -97,10 +97,10 @@ public abstract class BaseResourceReferenceDt extends BaseIdentifiableElement im
IdDt resourceId = getReference();
if (resourceId == null || isBlank(resourceId.getValue())) {
throw new IllegalStateException("Reference has no resource ID defined");
throw new IllegalStateException(Msg.code(1905) + "Reference has no resource ID defined");
}
if (isBlank(resourceId.getBaseUrl()) || isBlank(resourceId.getResourceType())) {
throw new IllegalStateException("Reference is not complete (must be in the form [baseUrl]/[resource type]/[resource ID]) - Reference is: " + resourceId.getValue());
throw new IllegalStateException(Msg.code(1906) + "Reference is not complete (must be in the form [baseUrl]/[resource type]/[resource ID]) - Reference is: " + resourceId.getValue());
}
String resourceUrl = resourceId.getValue();

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.model.primitive;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.BasePrimitive;
import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
import ca.uhn.fhir.parser.DataFormatException;
@ -31,8 +32,8 @@ import org.apache.commons.lang3.time.FastDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import java.util.Map;
import java.util.TimeZone;
import java.util.concurrent.ConcurrentHashMap;
import static org.apache.commons.lang3.StringUtils.isBlank;
@ -69,7 +70,7 @@ public abstract class BaseDateTimeDt extends BasePrimitive<Date> {
public BaseDateTimeDt(Date theDate, TemporalPrecisionEnum thePrecision) {
setValue(theDate, thePrecision);
if (isPrecisionAllowed(thePrecision) == false) {
throw new DataFormatException("Invalid date/time string (datatype " + getClass().getSimpleName() + " does not support " + thePrecision + " precision): " + theDate);
throw new DataFormatException(Msg.code(1880) + "Invalid date/time string (datatype " + getClass().getSimpleName() + " does not support " + thePrecision + " precision): " + theDate);
}
}
@ -549,7 +550,7 @@ public abstract class BaseDateTimeDt extends BasePrimitive<Date> {
*/
public BaseDateTimeDt setPrecision(TemporalPrecisionEnum thePrecision) throws DataFormatException {
if (thePrecision == null) {
throw new NullPointerException("Precision may not be null");
throw new NullPointerException(Msg.code(1881) + "Precision may not be null");
}
myPrecision = thePrecision;
updateStringValue();
@ -664,11 +665,11 @@ public abstract class BaseDateTimeDt extends BasePrimitive<Date> {
}
private void throwBadDateFormat(String theValue) {
throw new DataFormatException("Invalid date/time format: \"" + theValue + "\"");
throw new DataFormatException(Msg.code(1882) + "Invalid date/time format: \"" + theValue + "\"");
}
private void throwBadDateFormat(String theValue, String theMesssage) {
throw new DataFormatException("Invalid date/time format: \"" + theValue + "\": " + theMesssage);
throw new DataFormatException(Msg.code(1883) + "Invalid date/time format: \"" + theValue + "\": " + theMesssage);
}
/**
@ -731,13 +732,13 @@ public abstract class BaseDateTimeDt extends BasePrimitive<Date> {
private void validateValueInRange(long theValue, long theMinimum, long theMaximum) {
if (theValue < theMinimum || theValue > theMaximum) {
throw new IllegalArgumentException("Value " + theValue + " is not between allowable range: " + theMinimum + " - " + theMaximum);
throw new IllegalArgumentException(Msg.code(1884) + "Value " + theValue + " is not between allowable range: " + theMinimum + " - " + theMaximum);
}
}
private void validatePrecisionAndThrowDataFormatException(String theValue, TemporalPrecisionEnum thePrecision) {
if (isPrecisionAllowed(thePrecision) == false) {
throw new DataFormatException("Invalid date/time string (datatype " + getClass().getSimpleName() + " does not support " + thePrecision + " precision): " + theValue);
throw new DataFormatException(Msg.code(1885) + "Invalid date/time string (datatype " + getClass().getSimpleName() + " does not support " + thePrecision + " precision): " + theValue);
}
}

View File

@ -20,12 +20,12 @@ package ca.uhn.fhir.model.primitive;
* #L%
*/
import org.hl7.fhir.instance.model.api.IBaseBooleanDatatype;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.BasePrimitive;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.SimpleSetter;
import ca.uhn.fhir.parser.DataFormatException;
import org.hl7.fhir.instance.model.api.IBaseBooleanDatatype;
@DatatypeDef(name = "boolean")
public class BooleanDt extends BasePrimitive<Boolean> implements IBaseBooleanDatatype {
@ -52,7 +52,7 @@ public class BooleanDt extends BasePrimitive<Boolean> implements IBaseBooleanDat
} else if ("false".equals(theValue)) {
return Boolean.FALSE;
} else {
throw new DataFormatException("Invalid boolean string: '" + theValue + "'");
throw new DataFormatException(Msg.code(1872) + "Invalid boolean string: '" + theValue + "'");
}
}

View File

@ -1,5 +1,6 @@
package ca.uhn.fhir.model.primitive;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.SimpleSetter;
@ -192,13 +193,13 @@ public class IdDt extends UriDt implements /*IPrimitiveDatatype<String>, */IIdTy
@Override
public void applyTo(IBaseResource theResouce) {
if (theResouce == null) {
throw new NullPointerException("theResource can not be null");
throw new NullPointerException(Msg.code(1875) + "theResource can not be null");
} else if (theResouce instanceof IResource) {
((IResource) theResouce).setId(new IdDt(getValue()));
} else if (theResouce instanceof IAnyResource) {
((IAnyResource) theResouce).setId(getValue());
} else {
throw new IllegalArgumentException("Unknown resource class type, does not implement IResource or extend Resource");
throw new IllegalArgumentException(Msg.code(1876) + "Unknown resource class type, does not implement IResource or extend Resource");
}
}
@ -686,7 +687,7 @@ public class IdDt extends UriDt implements /*IPrimitiveDatatype<String>, */IIdTy
*/
public static IdDt of(IBaseResource theResouce) {
if (theResouce == null) {
throw new NullPointerException("theResource can not be null");
throw new NullPointerException(Msg.code(1877) + "theResource can not be null");
}
IIdType retVal = theResouce.getIdElement();
if (retVal == null) {
@ -700,14 +701,14 @@ public class IdDt extends UriDt implements /*IPrimitiveDatatype<String>, */IIdTy
private static String toPlainStringWithNpeThrowIfNeeded(BigDecimal theIdPart) {
if (theIdPart == null) {
throw new NullPointerException("BigDecimal ID can not be null");
throw new NullPointerException(Msg.code(1878) + "BigDecimal ID can not be null");
}
return theIdPart.toPlainString();
}
private static String toPlainStringWithNpeThrowIfNeeded(Long theIdPart) {
if (theIdPart == null) {
throw new NullPointerException("Long ID can not be null");
throw new NullPointerException(Msg.code(1879) + "Long ID can not be null");
}
return theIdPart.toString();
}

View File

@ -20,12 +20,12 @@ package ca.uhn.fhir.model.primitive;
* #L%
*/
import org.hl7.fhir.instance.model.api.IBaseIntegerDatatype;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.BasePrimitive;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.SimpleSetter;
import ca.uhn.fhir.parser.DataFormatException;
import org.hl7.fhir.instance.model.api.IBaseIntegerDatatype;
@DatatypeDef(name = "integer")
public class IntegerDt extends BasePrimitive<Integer> implements IBaseIntegerDatatype {
@ -62,7 +62,7 @@ public class IntegerDt extends BasePrimitive<Integer> implements IBaseIntegerDat
try {
return Integer.parseInt(theValue);
} catch (NumberFormatException e) {
throw new DataFormatException(e);
throw new DataFormatException(Msg.code(1873) + e);
}
}

View File

@ -20,14 +20,14 @@ package ca.uhn.fhir.model.primitive;
* #L%
*/
import org.apache.commons.lang3.StringUtils;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.BasePrimitive;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.model.api.annotation.DatatypeDef;
import ca.uhn.fhir.model.api.annotation.SimpleSetter;
import ca.uhn.fhir.rest.param.StringParam;
import org.apache.commons.lang3.StringUtils;
@DatatypeDef(name = "string")
public class StringDt extends BasePrimitive<String> implements IQueryParameterType {
@ -145,7 +145,7 @@ public class StringDt extends BasePrimitive<String> implements IQueryParameterTy
@Deprecated
@Override
public IQueryParameterType setMissing(Boolean theMissing) {
throw new UnsupportedOperationException("get/setMissing is not supported in StringDt. Use {@link StringParam} instead if you need this functionality");
throw new UnsupportedOperationException(Msg.code(1874) + "get/setMissing is not supported in StringDt. Use {@link StringParam} instead if you need this functionality");
}
}

View File

@ -20,8 +20,18 @@ package ca.uhn.fhir.model.view;
* #L%
*/
import ca.uhn.fhir.context.*;
import org.hl7.fhir.instance.model.api.*;
import ca.uhn.fhir.context.BaseRuntimeChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeChildDeclaredExtensionDefinition;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseExtension;
import org.hl7.fhir.instance.model.api.IBaseHasExtensions;
import org.hl7.fhir.instance.model.api.IBaseHasModifierExtensions;
import org.hl7.fhir.instance.model.api.IBaseResource;
import java.util.List;
@ -48,7 +58,7 @@ public class ViewGenerator {
try {
retVal = theTargetType.newInstance();
} catch (Exception e) {
throw new ConfigurationException("Failed to instantiate " + theTargetType, e);
throw new ConfigurationException(Msg.code(1886) + "Failed to instantiate " + theTargetType, e);
}
copyChildren(sourceDef, (IBase) theResource, targetDef, (IBase) retVal);

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.narrative;
*/
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.narrative2.NarrativeTemplateManifest;
import ca.uhn.fhir.narrative2.ThymeleafNarrativeGenerator;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
@ -61,7 +62,7 @@ public abstract class BaseThymeleafNarrativeGenerator extends ThymeleafNarrative
NarrativeTemplateManifest manifest = NarrativeTemplateManifest.forManifestFileLocation(propFileName);
setManifest(manifest);
} catch (IOException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1808) + e);
}
myInitialized = true;

View File

@ -25,6 +25,7 @@ import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.fhir.fhirpath.IFhirPath;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.narrative.INarrativeGenerator;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import org.hl7.fhir.instance.model.api.IBase;
@ -94,7 +95,7 @@ public abstract class BaseNarrativeGenerator implements INarrativeGenerator {
nextTargetNarrative.setStatusAsString("generated");
retVal = true;
} catch (Exception e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1865) + e);
}
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.narrative2;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import org.hl7.fhir.instance.model.api.IBase;
@ -111,7 +112,7 @@ public class NarrativeTemplate implements INarrativeTemplate {
try {
return NarrativeTemplateManifest.loadResource(getTemplateFileName());
} catch (IOException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1866) + e);
}
}

View File

@ -22,6 +22,7 @@ package ca.uhn.fhir.narrative2;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.narrative.DefaultThymeleafNarrativeGenerator;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import com.google.common.base.Charsets;
@ -163,7 +164,7 @@ public class NarrativeTemplateManifest implements INarrativeTemplateManifest {
try {
nextTemplate.addAppliesToClass((Class<? extends IBase>) Class.forName(className));
} catch (ClassNotFoundException theE) {
throw new InternalErrorException("Could not find class " + className + " declared in narative manifest");
throw new InternalErrorException(Msg.code(1867) + "Could not find class " + className + " declared in narative manifest");
}
}
} else if (nextKey.endsWith(".profile")) {
@ -201,7 +202,7 @@ public class NarrativeTemplateManifest implements INarrativeTemplateManifest {
} else if (nextKey.endsWith(".title")) {
ourLog.debug("Ignoring title property as narrative generator no longer generates titles: {}", nextKey);
} else {
throw new ConfigurationException("Invalid property name: " + nextKey
throw new ConfigurationException(Msg.code(1868) + "Invalid property name: " + nextKey
+ " - the key must end in one of the expected extensions "
+ "'.profile', '.resourceType', '.dataType', '.style', '.contextPath', '.narrative', '.title'");
}
@ -218,7 +219,7 @@ public class NarrativeTemplateManifest implements INarrativeTemplateManifest {
if (resource == null) {
try (InputStream resource2 = DefaultThymeleafNarrativeGenerator.class.getResourceAsStream("/" + cpName)) {
if (resource2 == null) {
throw new IOException("Can not find '" + cpName + "' on classpath");
throw new IOException(Msg.code(1869) + "Can not find '" + cpName + "' on classpath");
}
return IOUtils.toString(resource2, Charsets.UTF_8);
}
@ -228,13 +229,13 @@ public class NarrativeTemplateManifest implements INarrativeTemplateManifest {
} else if (name.startsWith("file:")) {
File file = new File(name.substring("file:".length()));
if (file.exists() == false) {
throw new IOException("File not found: " + file.getAbsolutePath());
throw new IOException(Msg.code(1870) + "File not found: " + file.getAbsolutePath());
}
try (FileInputStream inputStream = new FileInputStream(file)) {
return IOUtils.toString(inputStream, Charsets.UTF_8);
}
} else {
throw new IOException("Invalid resource name: '" + name + "' (must start with classpath: or file: )");
throw new IOException(Msg.code(1871) + "Invalid resource name: '" + name + "' (must start with classpath: or file: )");
}
}

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.narrative2;
*/
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import org.hl7.fhir.instance.model.api.IBase;
import org.thymeleaf.IEngineConfiguration;
@ -45,7 +46,10 @@ import org.thymeleaf.templateresolver.DefaultTemplateResolver;
import org.thymeleaf.templateresource.ITemplateResource;
import org.thymeleaf.templateresource.StringTemplateResource;
import java.util.*;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
@ -113,12 +117,12 @@ public class ThymeleafNarrativeGenerator extends BaseNarrativeGenerator {
if (isNotBlank(theName)) {
templateOpt = getManifest().getTemplateByName(theFhirContext, getStyle(), theName);
if (templateOpt.isEmpty()) {
throw new InternalErrorException("Unknown template name: " + theName);
throw new InternalErrorException(Msg.code(1863) + "Unknown template name: " + theName);
}
} else {
templateOpt = getManifest().getTemplateByElement(theFhirContext, getStyle(), elementValue);
if (templateOpt.isEmpty()) {
throw new InternalErrorException("No template for type: " + elementValue.getClass());
throw new InternalErrorException(Msg.code(1864) + "No template for type: " + elementValue.getClass());
}
}

View File

@ -32,6 +32,7 @@ import ca.uhn.fhir.context.RuntimeChildChoiceDefinition;
import ca.uhn.fhir.context.RuntimeChildContainedResources;
import ca.uhn.fhir.context.RuntimeChildNarrativeDefinition;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IIdentifiableElement;
import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.model.api.ISupportsUndeclaredExtensions;
@ -66,7 +67,6 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
@ -273,7 +273,7 @@ public abstract class BaseParser implements IParser {
try {
encodeResourceToWriter(theResource, stringWriter);
} catch (IOException e) {
throw new Error("Encountered IOException during write to string - This should not happen!");
throw new Error(Msg.code(1828) + "Encountered IOException during write to string - This should not happen!");
}
return stringWriter.toString();
}
@ -291,8 +291,7 @@ public abstract class BaseParser implements IParser {
Validate.notNull(theEncodeContext, "theEncodeContext can not be null");
if (theResource.getStructureFhirVersionEnum() != myContext.getVersion().getVersion()) {
throw new IllegalArgumentException(
"This parser is for FHIR version " + myContext.getVersion().getVersion() + " - Can not encode a structure for version " + theResource.getStructureFhirVersionEnum());
throw new IllegalArgumentException(Msg.code(1829) + "This parser is for FHIR version " + myContext.getVersion().getVersion() + " - Can not encode a structure for version " + theResource.getStructureFhirVersionEnum());
}
String resourceName = myContext.getResourceType(theResource);
@ -685,7 +684,7 @@ public abstract class BaseParser implements IParser {
try {
metaValue = (IBaseMetaType) metaValue.getClass().getMethod("copy").invoke(metaValue);
} catch (Exception e) {
throw new InternalErrorException("Failed to duplicate meta", e);
throw new InternalErrorException(Msg.code(1830) + "Failed to duplicate meta", e);
}
if (isBlank(metaValue.getVersionId())) {
@ -897,9 +896,9 @@ public abstract class BaseParser implements IParser {
RuntimeChildChoiceDefinition choice = (RuntimeChildChoiceDefinition) nextChild;
b.append(" - Expected one of: " + choice.getValidChildTypes());
}
throw new DataFormatException(b.toString());
throw new DataFormatException(Msg.code(1831) + b.toString());
}
throw new DataFormatException(nextChild + " has no child of type " + theType);
throw new DataFormatException(Msg.code(1832) + nextChild + " has no child of type " + theType);
}
protected boolean shouldEncodeResource(String theName) {

View File

@ -20,8 +20,18 @@ package ca.uhn.fhir.parser;
* #L%
*/
import ca.uhn.fhir.context.*;
import ca.uhn.fhir.context.BaseRuntimeChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeChildContainedResources;
import ca.uhn.fhir.context.RuntimeChildDeclaredExtensionDefinition;
import ca.uhn.fhir.context.RuntimeChildNarrativeDefinition;
import ca.uhn.fhir.context.RuntimeChildUndeclaredExtensionDefinition;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.ExtensionDt;
import ca.uhn.fhir.model.api.IPrimitiveDatatype;
import ca.uhn.fhir.model.api.IResource;
@ -45,11 +55,21 @@ import ca.uhn.fhir.parser.json.JsonLikeWriter;
import ca.uhn.fhir.parser.json.jackson.JacksonStructure;
import ca.uhn.fhir.rest.api.EncodingEnum;
import ca.uhn.fhir.util.ElementUtil;
import ca.uhn.fhir.util.FhirTerser;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
import org.apache.commons.text.WordUtils;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseBooleanDatatype;
import org.hl7.fhir.instance.model.api.IBaseDecimalDatatype;
import org.hl7.fhir.instance.model.api.IBaseExtension;
import org.hl7.fhir.instance.model.api.IBaseHasExtensions;
import org.hl7.fhir.instance.model.api.IBaseHasModifierExtensions;
import org.hl7.fhir.instance.model.api.IBaseIntegerDatatype;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IDomainResource;
import org.hl7.fhir.instance.model.api.IIdType;
import org.hl7.fhir.instance.model.api.INarrative;
import org.hl7.fhir.instance.model.api.IPrimitiveType;
import java.io.IOException;
import java.io.Reader;
@ -60,7 +80,6 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum.ID_DATATYPE;
import static ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum.PRIMITIVE_DATATYPE;
@ -150,11 +169,11 @@ public class JsonParser extends BaseParser implements IJsonLikeParser {
// private void assertObjectOfType(JsonLikeValue theResourceTypeObj, Object theValueType, String thePosition) {
// if (theResourceTypeObj == null) {
// throw new DataFormatException("Invalid JSON content detected, missing required element: '" + thePosition + "'");
// throw new DataFormatException(Msg.code(1836) + "Invalid JSON content detected, missing required element: '" + thePosition + "'");
// }
//
// if (theResourceTypeObj.getValueType() != theValueType) {
// throw new DataFormatException("Invalid content of element " + thePosition + ", expected " + theValueType);
// throw new DataFormatException(Msg.code(1837) + "Invalid content of element " + thePosition + ", expected " + theValueType);
// }
// }
@ -204,7 +223,7 @@ public class JsonParser extends BaseParser implements IJsonLikeParser {
JsonLikeValue resourceTypeObj = object.get("resourceType");
if (resourceTypeObj == null || !resourceTypeObj.isString() || isBlank(resourceTypeObj.getAsString())) {
throw new DataFormatException("Invalid JSON content detected, missing required element: 'resourceType'");
throw new DataFormatException(Msg.code(1838) + "Invalid JSON content detected, missing required element: 'resourceType'");
}
String resourceType = resourceTypeObj.getAsString();
@ -364,7 +383,7 @@ public class JsonParser extends BaseParser implements IJsonLikeParser {
break;
case UNDECL_EXT:
default:
throw new IllegalStateException("Should not have this state here: " + theChildDef.getChildType().name());
throw new IllegalStateException(Msg.code(1839) + "Should not have this state here: " + theChildDef.getChildType().name());
}
}
@ -621,8 +640,7 @@ public class JsonParser extends BaseParser implements IJsonLikeParser {
Validate.notNull(theJsonLikeWriter, "theJsonLikeWriter can not be null");
if (theResource.getStructureFhirVersionEnum() != getContext().getVersion().getVersion()) {
throw new IllegalArgumentException(
"This parser is for FHIR version " + getContext().getVersion().getVersion() + " - Can not encode a structure for version " + theResource.getStructureFhirVersionEnum());
throw new IllegalArgumentException(Msg.code(1840) + "This parser is for FHIR version " + getContext().getVersion().getVersion() + " - Can not encode a structure for version " + theResource.getStructureFhirVersionEnum());
}
EncodeContext encodeContext = new EncodeContext();
@ -911,7 +929,7 @@ public class JsonParser extends BaseParser implements IJsonLikeParser {
return null;
}
if (!object.isArray()) {
throw new DataFormatException("Syntax error parsing JSON FHIR structure: Expected ARRAY at element '" + thePosition + "', found '" + object.getJsonType() + "'");
throw new DataFormatException(Msg.code(1841) + "Syntax error parsing JSON FHIR structure: Expected ARRAY at element '" + thePosition + "', found '" + object.getJsonType() + "'");
}
return object.getAsArray();
}
@ -924,7 +942,7 @@ public class JsonParser extends BaseParser implements IJsonLikeParser {
if (theAlternateVal.isArray()) {
JsonLikeArray array = theAlternateVal.getAsArray();
if (array.size() > 1) {
throw new DataFormatException("Unexpected array of length " + array.size() + " (expected 0 or 1) for element: " + theElementName);
throw new DataFormatException(Msg.code(1842) + "Unexpected array of length " + array.size() + " (expected 0 or 1) for element: " + theElementName);
}
if (array.size() == 0) {
return;
@ -1074,7 +1092,7 @@ public class JsonParser extends BaseParser implements IJsonLikeParser {
if (theState.isPreResource()) {
JsonLikeValue resType = nextObject.get("resourceType");
if (resType == null || !resType.isString()) {
throw new DataFormatException("Missing required element 'resourceType' from JSON resource object, unable to parse");
throw new DataFormatException(Msg.code(1843) + "Missing required element 'resourceType' from JSON resource object, unable to parse");
}
theState.enteringNewElement(null, resType.getAsString());
preResource = true;
@ -1532,7 +1550,7 @@ public class JsonParser extends BaseParser implements IJsonLikeParser {
}
BaseRuntimeElementDefinition<?> childDef = extDef.getChildElementDefinitionByDatatype(value.getClass());
if (childDef == null) {
throw new ConfigurationException("Unable to encode extension, unrecognized child element type: " + value.getClass().getCanonicalName());
throw new ConfigurationException(Msg.code(1844) + "Unable to encode extension, unrecognized child element type: " + value.getClass().getCanonicalName());
}
encodeChildElementToStreamWriter(theResDef, theResource, theEventWriter, value, childDef, childName, false, myParent, false, theEncodeContext);
managePrimitiveExtension(value, theResDef, theResource, theEventWriter, childDef, childName, theEncodeContext, theContainedResource);

View File

@ -20,14 +20,16 @@ package ca.uhn.fhir.parser;
* #L%
*/
import ca.uhn.fhir.context.*;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.api.EncodingEnum;
import ca.uhn.fhir.util.BundleBuilder;
import ca.uhn.fhir.util.BundleUtil;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.instance.model.api.IBaseBundle;
import org.hl7.fhir.instance.model.api.IBaseResource;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.util.List;
@ -72,7 +74,7 @@ public class NDJsonParser extends BaseParser {
protected void doEncodeResourceToWriter(IBaseResource theResource, Writer theWriter, EncodeContext theEncodeContext) throws IOException {
// We only encode bundles to NDJSON.
if (!(IBaseBundle.class.isAssignableFrom(theResource.getClass()))) {
throw new IllegalArgumentException("NDJsonParser can only encode Bundle types. Received " + theResource.getClass().getName());
throw new IllegalArgumentException(Msg.code(1833) + "NDJsonParser can only encode Bundle types. Received " + theResource.getClass().getName());
}
// Ok, convert the bundle to a list of resources.
@ -95,7 +97,7 @@ public class NDJsonParser extends BaseParser {
public <T extends IBaseResource> T doParseResource(Class<T> theResourceType, Reader theReader) throws DataFormatException {
// We can only parse to bundles.
if ((theResourceType != null) && (!(IBaseBundle.class.isAssignableFrom(theResourceType)))) {
throw new DataFormatException("NDJsonParser can only parse to Bundle types. Received " + theResourceType.getName());
throw new DataFormatException(Msg.code(1834) + "NDJsonParser can only parse to Bundle types. Received " + theResourceType.getName());
}
try {
@ -114,7 +116,7 @@ public class NDJsonParser extends BaseParser {
return (T) myBuilder.getBundle();
} catch (IOException err) {
throw new DataFormatException(err.getMessage());
throw new DataFormatException(Msg.code(1835) + err.getMessage());
}
}
}

View File

@ -32,6 +32,7 @@ import ca.uhn.fhir.context.RuntimePrimitiveDatatypeNarrativeDefinition;
import ca.uhn.fhir.context.RuntimePrimitiveDatatypeXhtmlHl7OrgDefinition;
import ca.uhn.fhir.context.RuntimeResourceBlockDefinition;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.ExtensionDt;
import ca.uhn.fhir.model.api.IElement;
import ca.uhn.fhir.model.api.IIdentifiableElement;
@ -593,7 +594,7 @@ class ParserState<T> {
BaseRuntimeElementDefinition<?> target = child.getChildByName(theChildName);
if (target == null) {
// This is a bug with the structures and shouldn't happen..
throw new DataFormatException("Found unexpected element '" + theChildName + "' in parent element '" + myDefinition.getName() + "'. Valid names are: " + child.getValidChildNames());
throw new DataFormatException(Msg.code(1809) + "Found unexpected element '" + theChildName + "' in parent element '" + myDefinition.getName() + "'. Valid names are: " + child.getValidChildNames());
}
switch (target.getChildType()) {
@ -671,7 +672,7 @@ class ParserState<T> {
}
}
throw new DataFormatException("Illegal resource position: " + target.getChildType());
throw new DataFormatException(Msg.code(1810) + "Illegal resource position: " + target.getChildType());
}
@Override
@ -744,7 +745,7 @@ class ParserState<T> {
@Override
public void endingElement() throws DataFormatException {
if (myExtension.getValue() != null && myExtension.getExtension().size() > 0) {
throw new DataFormatException("Extension (URL='" + myExtension.getUrl() + "') must not have both a value and other contained extensions");
throw new DataFormatException(Msg.code(1811) + "Extension (URL='" + myExtension.getUrl() + "') must not have both a value and other contained extensions");
}
pop();
}
@ -904,7 +905,7 @@ class ParserState<T> {
} else if (metadataValue instanceof ExtensionDt) {
newExtension = (ExtensionDt) metadataValue;
} else {
throw new IllegalStateException("Expected ExtensionDt as custom resource metadata type, got: " + metadataValue.getClass().getSimpleName());
throw new IllegalStateException(Msg.code(1812) + "Expected ExtensionDt as custom resource metadata type, got: " + metadataValue.getClass().getSimpleName());
}
newExtension.setUrl(theUrlAttr);
myMap.put(resourceMetadataKeyEnum, newExtension);
@ -994,18 +995,18 @@ class ParserState<T> {
definition = myContext.getResourceDefinition(myParentVersion, theLocalPart);
}
if ((definition == null)) {
throw new DataFormatException("Element '" + theLocalPart + "' is not a known resource type, expected a resource at this position");
throw new DataFormatException(Msg.code(1813) + "Element '" + theLocalPart + "' is not a known resource type, expected a resource at this position");
}
} else {
definition = myContext.getResourceDefinition(myResourceType);
if (!StringUtils.equals(theLocalPart, definition.getName())) {
throw new DataFormatException(myContext.getLocalizer().getMessage(ParserState.class, "wrongResourceTypeFound", definition.getName(), theLocalPart));
throw new DataFormatException(Msg.code(1814) + myContext.getLocalizer().getMessage(ParserState.class, "wrongResourceTypeFound", definition.getName(), theLocalPart));
}
}
RuntimeResourceDefinition def = definition;
if (!definition.getName().equals(theLocalPart) && definition.getName().equalsIgnoreCase(theLocalPart)) {
throw new DataFormatException("Unknown resource type '" + theLocalPart + "': Resource names are case sensitive, found similar name: '" + definition.getName() + "'");
throw new DataFormatException(Msg.code(1815) + "Unknown resource type '" + theLocalPart + "': Resource names are case sensitive, found similar name: '" + definition.getName() + "'");
}
myInstance = newInstance(def);
@ -1283,7 +1284,7 @@ class ParserState<T> {
@Override
public void enteringNewElement(String theNamespaceUri, String theLocalPart) throws DataFormatException {
if (!TagList.ELEMENT_NAME_LC.equals(theLocalPart.toLowerCase())) {
throw new DataFormatException("resourceType does not appear to be 'TagList', found: " + theLocalPart);
throw new DataFormatException(Msg.code(1816) + "resourceType does not appear to be 'TagList', found: " + theLocalPart);
}
push(new TagListState(myTagList));
@ -1474,7 +1475,7 @@ class ParserState<T> {
if (TagList.ATTR_CATEGORY.equals(theLocalPart)) {
push(new TagState(myTagList));
} else {
throw new DataFormatException("Unexpected element: " + theLocalPart);
throw new DataFormatException(Msg.code(1817) + "Unexpected element: " + theLocalPart);
}
}
@ -1550,7 +1551,7 @@ class ParserState<T> {
} else if (Tag.ATTR_LABEL.equals(theLocalPart) || "display".equals(theLocalPart)) {
mySubState = LABEL;
} else {
throw new DataFormatException("Unexpected element: " + theLocalPart);
throw new DataFormatException(Msg.code(1818) + "Unexpected element: " + theLocalPart);
}
}

View File

@ -20,7 +20,17 @@ package ca.uhn.fhir.parser;
* #L%
*/
import ca.uhn.fhir.context.*;
import ca.uhn.fhir.context.BaseRuntimeChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeDeclaredChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementDefinition;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeChildContainedResources;
import ca.uhn.fhir.context.RuntimeChildDirectResource;
import ca.uhn.fhir.context.RuntimeChildExtension;
import ca.uhn.fhir.context.RuntimeChildNarrativeDefinition;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.narrative.INarrativeGenerator;
import ca.uhn.fhir.rest.api.EncodingEnum;
@ -28,17 +38,40 @@ import ca.uhn.fhir.util.rdf.RDFUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.jena.datatypes.xsd.XSDDatatype;
import org.apache.jena.irix.IRIs;
import org.apache.jena.irix.SetupJenaIRI;
import org.apache.jena.rdf.model.*;
import org.apache.jena.rdf.model.Literal;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.rdf.model.Statement;
import org.apache.jena.rdf.model.StmtIterator;
import org.apache.jena.riot.Lang;
import org.apache.jena.riot.system.IRIResolver;
import org.apache.jena.vocabulary.RDF;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.instance.model.api.IAnyResource;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.instance.model.api.IBaseDatatypeElement;
import org.hl7.fhir.instance.model.api.IBaseElement;
import org.hl7.fhir.instance.model.api.IBaseExtension;
import org.hl7.fhir.instance.model.api.IBaseHasExtensions;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IBaseXhtml;
import org.hl7.fhir.instance.model.api.IDomainResource;
import org.hl7.fhir.instance.model.api.IIdType;
import org.hl7.fhir.instance.model.api.INarrative;
import org.hl7.fhir.instance.model.api.IPrimitiveType;
import java.io.*;
import java.util.*;
import java.io.Reader;
import java.io.Writer;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum.*;
import static ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum.ID_DATATYPE;
import static ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum.PRIMITIVE_DATATYPE;
import static ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum.PRIMITIVE_XHTML;
import static ca.uhn.fhir.context.BaseRuntimeElementDefinition.ChildTypeEnum.PRIMITIVE_XHTML_HL7ORG;
/**
* This class is the FHIR RDF parser/encoder. Users should not interact with this class directly, but should use
@ -150,7 +183,7 @@ public class RDFParser extends BaseParser {
RuntimeResourceDefinition resDef = getContext().getResourceDefinition(resource);
if (resDef == null) {
throw new ConfigurationException("Unknown resource type: " + resource.getClass());
throw new ConfigurationException(Msg.code(1845) + "Unknown resource type: " + resource.getClass());
}
if (!containedResource) {
@ -158,7 +191,7 @@ public class RDFParser extends BaseParser {
}
if (!(resource instanceof IAnyResource)) {
throw new IllegalStateException("Unsupported resource found: " + resource.getClass().getName());
throw new IllegalStateException(Msg.code(1846) + "Unsupported resource found: " + resource.getClass().getName());
}
// Create absolute IRI for the resource
@ -399,7 +432,7 @@ public class RDFParser extends BaseParser {
case EXTENSION_DECLARED:
case UNDECL_EXT:
default: {
throw new IllegalStateException("Unexpected node - should not happen: " + childDef.getName());
throw new IllegalStateException(Msg.code(1847) + "Unexpected node - should not happen: " + childDef.getName());
}
}
} finally {

View File

@ -1,6 +1,7 @@
package ca.uhn.fhir.parser;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.parser.json.JsonLikeValue.ScalarType;
import ca.uhn.fhir.parser.json.JsonLikeValue.ValueType;
import ca.uhn.fhir.util.UrlUtil;
@ -36,18 +37,18 @@ public class StrictErrorHandler extends BaseErrorHandler implements IParserError
@Override
public void containedResourceWithNoId(IParseLocation theLocation) {
throw new DataFormatException("Resource has contained child resource with no ID");
throw new DataFormatException(Msg.code(1819) + "Resource has contained child resource with no ID");
}
@Override
public void incorrectJsonType(IParseLocation theLocation, String theElementName, ValueType theExpected, ScalarType theExpectedScalarType, ValueType theFound, ScalarType theFoundScalarType) {
String message = LenientErrorHandler.createIncorrectJsonTypeMessage(theElementName, theExpected, theExpectedScalarType, theFound, theFoundScalarType);
throw new DataFormatException(message);
throw new DataFormatException(Msg.code(1820) + message);
}
@Override
public void invalidValue(IParseLocation theLocation, String theValue, String theError) {
throw new DataFormatException(describeLocation(theLocation) + "Invalid attribute value \"" + UrlUtil.sanitizeUrlPart(theValue) + "\": " + theError);
throw new DataFormatException(Msg.code(1821) + describeLocation(theLocation) + "Invalid attribute value \"" + UrlUtil.sanitizeUrlPart(theValue) + "\": " + theError);
}
@Override
@ -61,32 +62,32 @@ public class StrictErrorHandler extends BaseErrorHandler implements IParserError
b.append(theLocation.getParentElementName());
b.append("'");
}
throw new DataFormatException(b.toString());
throw new DataFormatException(Msg.code(1822) + b.toString());
}
@Override
public void unexpectedRepeatingElement(IParseLocation theLocation, String theElementName) {
throw new DataFormatException(describeLocation(theLocation) + "Multiple repetitions of non-repeatable element '" + theElementName + "' found during parse");
throw new DataFormatException(Msg.code(1823) + describeLocation(theLocation) + "Multiple repetitions of non-repeatable element '" + theElementName + "' found during parse");
}
@Override
public void unknownAttribute(IParseLocation theLocation, String theAttributeName) {
throw new DataFormatException(describeLocation(theLocation) + "Unknown attribute '" + theAttributeName + "' found during parse");
throw new DataFormatException(Msg.code(1824) + describeLocation(theLocation) + "Unknown attribute '" + theAttributeName + "' found during parse");
}
@Override
public void unknownElement(IParseLocation theLocation, String theElementName) {
throw new DataFormatException(describeLocation(theLocation) + "Unknown element '" + theElementName + "' found during parse");
throw new DataFormatException(Msg.code(1825) + describeLocation(theLocation) + "Unknown element '" + theElementName + "' found during parse");
}
@Override
public void unknownReference(IParseLocation theLocation, String theReference) {
throw new DataFormatException(describeLocation(theLocation) + "Resource has invalid reference: " + theReference);
throw new DataFormatException(Msg.code(1826) + describeLocation(theLocation) + "Resource has invalid reference: " + theReference);
}
@Override
public void extensionContainsValueAndNestedExtensions(IParseLocation theLocation) {
throw new DataFormatException(describeLocation(theLocation) + "Extension contains both a value and nested extensions");
throw new DataFormatException(Msg.code(1827) + describeLocation(theLocation) + "Extension contains both a value and nested extensions");
}
}

View File

@ -20,8 +20,22 @@ package ca.uhn.fhir.parser;
* #L%
*/
import ca.uhn.fhir.context.*;
import ca.uhn.fhir.model.api.*;
import ca.uhn.fhir.context.BaseRuntimeChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeDeclaredChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementDefinition;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeChildContainedResources;
import ca.uhn.fhir.context.RuntimeChildExtension;
import ca.uhn.fhir.context.RuntimeChildNarrativeDefinition;
import ca.uhn.fhir.context.RuntimeChildUndeclaredExtensionDefinition;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IResource;
import ca.uhn.fhir.model.api.ISupportsUndeclaredExtensions;
import ca.uhn.fhir.model.api.ResourceMetadataKeyEnum;
import ca.uhn.fhir.model.api.Tag;
import ca.uhn.fhir.model.api.TagList;
import ca.uhn.fhir.model.base.composite.BaseCodingDt;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.model.primitive.InstantDt;
@ -33,11 +47,31 @@ import ca.uhn.fhir.util.NonPrettyPrintWriterWrapper;
import ca.uhn.fhir.util.PrettyPrintWriterWrapper;
import ca.uhn.fhir.util.XmlUtil;
import org.apache.commons.lang3.StringUtils;
import org.hl7.fhir.instance.model.api.*;
import org.hl7.fhir.instance.model.api.IAnyResource;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseBinary;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.IBaseExtension;
import org.hl7.fhir.instance.model.api.IBaseHasExtensions;
import org.hl7.fhir.instance.model.api.IBaseHasModifierExtensions;
import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IBaseXhtml;
import org.hl7.fhir.instance.model.api.IIdType;
import org.hl7.fhir.instance.model.api.IPrimitiveType;
import javax.xml.namespace.QName;
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.Characters;
import javax.xml.stream.events.Comment;
import javax.xml.stream.events.EntityReference;
import javax.xml.stream.events.Namespace;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import java.io.Reader;
import java.io.Writer;
import java.util.ArrayList;
@ -72,9 +106,9 @@ public class XmlParser extends BaseParser {
try {
return XmlUtil.createXmlReader(theReader);
} catch (FactoryConfigurationError e1) {
throw new ConfigurationException("Failed to initialize STaX event factory", e1);
throw new ConfigurationException(Msg.code(1848) + "Failed to initialize STaX event factory", e1);
} catch (XMLStreamException e1) {
throw new DataFormatException(e1);
throw new DataFormatException(Msg.code(1849) + e1);
}
}
@ -103,7 +137,7 @@ public class XmlParser extends BaseParser {
encodeResourceToXmlStreamWriter(theResource, eventWriter, false, theEncodeContext);
eventWriter.flush();
} catch (XMLStreamException e) {
throw new ConfigurationException("Failed to initialize STaX event factory", e);
throw new ConfigurationException(Msg.code(1850) + "Failed to initialize STaX event factory", e);
}
}
@ -194,12 +228,12 @@ public class XmlParser extends BaseParser {
parserState.xmlEvent(nextEvent);
} catch (DataFormatException e) {
throw new DataFormatException("DataFormatException at [" + nextEvent.getLocation().toString() + "]: " + e.getMessage(), e);
throw new DataFormatException(Msg.code(1851) + "DataFormatException at [" + nextEvent.getLocation().toString() + "]: " + e.getMessage(), e);
}
}
return parserState.getObject();
} catch (XMLStreamException e) {
throw new DataFormatException(e);
throw new DataFormatException(Msg.code(1852) + e);
}
}
@ -321,7 +355,7 @@ public class XmlParser extends BaseParser {
}
case EXTENSION_DECLARED:
case UNDECL_EXT: {
throw new IllegalStateException("state should not happen: " + childDef.getName());
throw new IllegalStateException(Msg.code(1853) + "state should not happen: " + childDef.getName());
}
}
@ -488,7 +522,7 @@ public class XmlParser extends BaseParser {
private void encodeResourceToXmlStreamWriter(IBaseResource theResource, XMLStreamWriter theEventWriter, boolean theContainedResource, IIdType theResourceId, EncodeContext theEncodeContext) throws XMLStreamException {
RuntimeResourceDefinition resDef = getContext().getResourceDefinition(theResource);
if (resDef == null) {
throw new ConfigurationException("Unknown resource type: " + theResource.getClass());
throw new ConfigurationException(Msg.code(1854) + "Unknown resource type: " + theResource.getClass());
}
if (!theContainedResource) {
@ -617,13 +651,13 @@ public class XmlParser extends BaseParser {
if (childName == null) {
childDef = getContext().getElementDefinition(value.getClass());
if (childDef == null) {
throw new ConfigurationException("Unable to encode extension, unrecognized child element type: " + value.getClass().getCanonicalName());
throw new ConfigurationException(Msg.code(1855) + "Unable to encode extension, unrecognized child element type: " + value.getClass().getCanonicalName());
}
childName = RuntimeChildUndeclaredExtensionDefinition.createExtensionChildName(childDef);
} else {
childDef = extDef.getChildElementDefinitionByDatatype(value.getClass());
if (childDef == null) {
throw new ConfigurationException("Unable to encode extension, unrecognized child element type: " + value.getClass().getCanonicalName());
throw new ConfigurationException(Msg.code(1856) + "Unable to encode extension, unrecognized child element type: " + value.getClass().getCanonicalName());
}
}
encodeChildElementToStreamWriter(theResource, theEventWriter, extDef, value, childName, childDef, null, theIncludedResource, null, theEncodeContext);

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.parser.json.jackson;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.parser.DataFormatException;
import ca.uhn.fhir.parser.json.JsonLikeArray;
import ca.uhn.fhir.parser.json.JsonLikeObject;
@ -84,7 +85,7 @@ public class JacksonStructure implements JsonLikeStructure {
while (true) {
nextInt = pbr.read();
if (nextInt == -1) {
throw new DataFormatException("Did not find any content to parse");
throw new DataFormatException(Msg.code(1857) + "Did not find any content to parse");
}
if (nextInt == '{') {
pbr.unread(nextInt);
@ -98,9 +99,9 @@ public class JacksonStructure implements JsonLikeStructure {
pbr.unread(nextInt);
break;
}
throw new DataFormatException("Content does not appear to be FHIR JSON, first non-whitespace character was: '" + (char) nextInt + "' (must be '{' or '[')");
throw new DataFormatException(Msg.code(1858) + "Content does not appear to be FHIR JSON, first non-whitespace character was: '" + (char) nextInt + "' (must be '{' or '[')");
}
throw new DataFormatException("Content does not appear to be FHIR JSON, first non-whitespace character was: '" + (char) nextInt + "' (must be '{')");
throw new DataFormatException(Msg.code(1859) + "Content does not appear to be FHIR JSON, first non-whitespace character was: '" + (char) nextInt + "' (must be '{')");
}
if (nextInt == '{') {
@ -110,10 +111,10 @@ public class JacksonStructure implements JsonLikeStructure {
}
} catch (Exception e) {
if (e.getMessage().startsWith("Unexpected char 39")) {
throw new DataFormatException("Failed to parse JSON encoded FHIR content: " + e.getMessage() + " - " +
throw new DataFormatException(Msg.code(1860) + "Failed to parse JSON encoded FHIR content: " + e.getMessage() + " - " +
"This may indicate that single quotes are being used as JSON escapes where double quotes are required", e);
}
throw new DataFormatException("Failed to parse JSON encoded FHIR content: " + e.getMessage(), e);
throw new DataFormatException(Msg.code(1861) + "Failed to parse JSON encoded FHIR content: " + e.getMessage(), e);
}
}
@ -144,7 +145,7 @@ public class JacksonStructure implements JsonLikeStructure {
return new JacksonJsonObject((ObjectNode) jsonLikeRoot);
}
throw new DataFormatException("Content must be a valid JSON Object. It must start with '{'.");
throw new DataFormatException(Msg.code(1862) + "Content must be a valid JSON Object. It must start with '{'.");
}
private enum ROOT_TYPE {OBJECT, ARRAY}

View File

@ -21,9 +21,9 @@ package ca.uhn.fhir.rest.api;
*/
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.annotation.Patch;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import ca.uhn.fhir.util.UrlUtil;
import javax.annotation.Nonnull;
import java.util.HashMap;
@ -76,11 +76,11 @@ public enum PatchTypeEnum {
if (retVal == null) {
if (isBlank(contentType)) {
String msg = theContext.getLocalizer().getMessage(PatchTypeEnum.class, "missingPatchContentType");
throw new InvalidRequestException(msg);
throw new InvalidRequestException(Msg.code(1964) + msg);
}
String msg = theContext.getLocalizer().getMessageSanitized(PatchTypeEnum.class, "invalidPatchContentType", contentType);
throw new InvalidRequestException(msg);
throw new InvalidRequestException(Msg.code(1965) + msg);
}
return retVal;

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.rest.api;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import ca.uhn.fhir.util.UrlUtil;
@ -67,7 +68,7 @@ public enum SearchContainedModeEnum {
SearchContainedModeEnum retVal = codeToEnum.get(theCode);
if (retVal == null) {
throw new InvalidRequestException("Invalid contained mode: " + UrlUtil.sanitizeUrlPart(theCode));
throw new InvalidRequestException(Msg.code(1963) + "Invalid contained mode: " + UrlUtil.sanitizeUrlPart(theCode));
}
return retVal;

View File

@ -1,5 +1,7 @@
package ca.uhn.fhir.rest.api;
import ca.uhn.fhir.i18n.Msg;
import java.io.Serializable;
/*
@ -114,7 +116,7 @@ public class SortSpec implements Serializable {
*/
public SortSpec setChain(SortSpec theChain) {
if (theChain == this) {
throw new IllegalArgumentException("Can not chain this to itself");
throw new IllegalArgumentException(Msg.code(1966) + "Can not chain this to itself");
}
myChain = theChain;
return this;

View File

@ -30,32 +30,31 @@ public class InvalidResponseException extends BaseServerResponseException {
/**
* Constructor
*
*
* @param theMessage
* The message
*/
public InvalidResponseException(int theStatusCode, String theMessage) {
public InvalidResponseException(String theMessage, int theStatusCode) {
super(theStatusCode, theMessage);
}
/**
* Constructor
*
* @param theMessage
* @param theMessage
* The message
* @param theCause The cause
*/
public InvalidResponseException(int theStatusCode, String theMessage, Throwable theCause) {
public InvalidResponseException(String theMessage, int theStatusCode, Throwable theCause) {
super(theStatusCode, theMessage, theCause);
}
/**
* Constructor
*
*
* @param theCause
* The underlying cause exception
*/
public InvalidResponseException(int theStatusCode, Throwable theCause) {
public InvalidResponseException(Throwable theCause, int theStatusCode) {
super(theStatusCode, theCause.toString(), theCause);
}

View File

@ -1,10 +1,6 @@
package ca.uhn.fhir.rest.param;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import ca.uhn.fhir.context.FhirContext;
/*
/*-
* #%L
* HAPI FHIR - Core Library
* %%
@ -14,7 +10,7 @@ import ca.uhn.fhir.context.FhirContext;
* 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
* 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,
@ -24,10 +20,14 @@ import ca.uhn.fhir.context.FhirContext;
* #L%
*/
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.rest.api.Constants;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
/**
* Base class for RESTful operation parameter types
*/
@ -94,7 +94,7 @@ public abstract class BaseParam implements IQueryParameterType {
if (isNotBlank(theQualifier) && theQualifier.charAt(0) == '.') {
if (!isSupportsChain()) {
String msg = theContext.getLocalizer().getMessage(BaseParam.class, "chainNotSupported", theParamName + theQualifier, theQualifier);
throw new InvalidRequestException(msg);
throw new InvalidRequestException(Msg.code(1935) + msg);
}
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.rest.param;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.parser.DataFormatException;
import static org.apache.commons.lang3.StringUtils.isBlank;
@ -57,7 +58,7 @@ public abstract class BaseParamWithPrefix<T extends BaseParam> extends BaseParam
}
if (offset > 0 && theString.length() == offset) {
throw new DataFormatException("Invalid date/time format: \"" + theString + "\"");
throw new DataFormatException(Msg.code(1940) + "Invalid date/time format: \"" + theString + "\"");
}
String prefix = theString.substring(0, offset);
@ -87,7 +88,7 @@ public abstract class BaseParamWithPrefix<T extends BaseParam> extends BaseParam
myPrefix = ParamPrefixEnum.EQUAL;
break;
default :
throw new DataFormatException("Invalid prefix: \"" + prefix + "\"");
throw new DataFormatException(Msg.code(1941) + "Invalid prefix: \"" + prefix + "\"");
}
ourLog.warn("Date parameter has legacy prefix '{}' which has been removed from FHIR. This should be replaced with '{}'", prefix, myPrefix.getValue());
}

View File

@ -19,18 +19,19 @@ package ca.uhn.fhir.rest.param;
* limitations under the License.
* #L%
*/
import static org.apache.commons.lang3.StringUtils.isBlank;
import java.util.List;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import java.util.List;
import static org.apache.commons.lang3.StringUtils.isBlank;
public class CompositeParam<A extends IQueryParameterType, B extends IQueryParameterType> extends BaseParam implements IQueryParameterType {
@ -48,16 +49,16 @@ public class CompositeParam<A extends IQueryParameterType, B extends IQueryParam
try {
myLeftType = theLeftType.newInstance();
} catch (InstantiationException e) {
throw new ConfigurationException("Failed to instantiate type: " + myLeftType, e);
throw new ConfigurationException(Msg.code(1943) + "Failed to instantiate type: " + myLeftType, e);
} catch (IllegalAccessException e) {
throw new ConfigurationException("Failed to instantiate type: " + myLeftType, e);
throw new ConfigurationException(Msg.code(1944) + "Failed to instantiate type: " + myLeftType, e);
}
try {
myRightType = theRightType.newInstance();
} catch (InstantiationException e) {
throw new ConfigurationException("Failed to instantiate type: " + myRightType, e);
throw new ConfigurationException(Msg.code(1945) + "Failed to instantiate type: " + myRightType, e);
} catch (IllegalAccessException e) {
throw new ConfigurationException("Failed to instantiate type: " + myRightType, e);
throw new ConfigurationException(Msg.code(1946) + "Failed to instantiate type: " + myRightType, e);
}
}
@ -87,7 +88,7 @@ public class CompositeParam<A extends IQueryParameterType, B extends IQueryParam
} else {
List<String> parts = ParameterUtil.splitParameterString(theValue, '$', false);
if (parts.size() > 2) {
throw new InvalidRequestException("Invalid value for composite parameter (only one '$' is valid for this parameter, others must be escaped). Value was: " + theValue);
throw new InvalidRequestException(Msg.code(1947) + "Invalid value for composite parameter (only one '$' is valid for this parameter, others must be escaped). Value was: " + theValue);
}
myLeftType.setValueAsQueryToken(theContext, theParamName, theQualifier, parts.get(0));
if (parts.size() > 1) {

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.rest.param;
*/
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterOr;
import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
import ca.uhn.fhir.model.primitive.BaseDateTimeDt;
@ -197,7 +198,7 @@ public class DateParam extends BaseParamWithPrefix<DateParam> implements /*IQuer
if (theParameters.size() == 1) {
setValueAsString(theParameters.get(0));
} else if (theParameters.size() > 1) {
throw new InvalidRequestException("This server does not support multi-valued dates for this parameter: " + theParameters);
throw new InvalidRequestException(Msg.code(1939) + "This server does not support multi-valued dates for this parameter: " + theParameters);
}
}

View File

@ -1,6 +1,7 @@
package ca.uhn.fhir.rest.param;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterAnd;
import ca.uhn.fhir.model.api.TemporalPrecisionEnum;
import ca.uhn.fhir.parser.DataFormatException;
@ -79,10 +80,10 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
public DateRangeParam(DateParam theDateParam) {
this();
if (theDateParam == null) {
throw new NullPointerException("theDateParam can not be null");
throw new NullPointerException(Msg.code(1919) + "theDateParam can not be null");
}
if (theDateParam.isEmpty()) {
throw new IllegalArgumentException("theDateParam can not be empty");
throw new IllegalArgumentException(Msg.code(1920) + "theDateParam can not be empty");
}
if (theDateParam.getPrefix() == null) {
setRangeFromDatesInclusive(theDateParam.getValueAsString(), theDateParam.getValueAsString());
@ -109,7 +110,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
break;
default:
// Should not happen
throw new InvalidRequestException("Invalid comparator for date range parameter:" + theDateParam.getPrefix() + ". This is a bug.");
throw new InvalidRequestException(Msg.code(1921) + "Invalid comparator for date range parameter:" + theDateParam.getPrefix() + ". This is a bug.");
}
}
}
@ -162,7 +163,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
private void addParam(DateParam theParsed) throws InvalidRequestException {
if (theParsed.getPrefix() == null || theParsed.getPrefix() == EQUAL) {
if (myLowerBound != null || myUpperBound != null) {
throw new InvalidRequestException("Can not have multiple date range parameters for the same param without a qualifier");
throw new InvalidRequestException(Msg.code(1922) + "Can not have multiple date range parameters for the same param without a qualifier");
}
if (theParsed.getMissing() != null) {
@ -179,19 +180,19 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
case GREATERTHAN:
case GREATERTHAN_OR_EQUALS:
if (myLowerBound != null) {
throw new InvalidRequestException("Can not have multiple date range parameters for the same param that specify a lower bound");
throw new InvalidRequestException(Msg.code(1923) + "Can not have multiple date range parameters for the same param that specify a lower bound");
}
myLowerBound = theParsed;
break;
case LESSTHAN:
case LESSTHAN_OR_EQUALS:
if (myUpperBound != null) {
throw new InvalidRequestException("Can not have multiple date range parameters for the same param that specify an upper bound");
throw new InvalidRequestException(Msg.code(1924) + "Can not have multiple date range parameters for the same param that specify an upper bound");
}
myUpperBound = theParsed;
break;
default:
throw new InvalidRequestException("Unknown comparator: " + theParsed.getPrefix());
throw new InvalidRequestException(Msg.code(1925) + "Unknown comparator: " + theParsed.getPrefix());
}
}
@ -299,7 +300,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
case LESSTHAN_OR_EQUALS:
case ENDS_BEFORE:
case NOT_EQUAL:
throw new IllegalStateException("Invalid lower bound comparator: " + myLowerBound.getPrefix());
throw new IllegalStateException(Msg.code(1926) + "Invalid lower bound comparator: " + myLowerBound.getPrefix());
}
}
return retVal;
@ -329,7 +330,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
case APPROXIMATE:
case NOT_EQUAL:
case STARTS_AFTER:
throw new IllegalStateException("Invalid upper bound comparator: " + myUpperBound.getPrefix());
throw new IllegalStateException(Msg.code(1927) + "Invalid upper bound comparator: " + myUpperBound.getPrefix());
}
}
return retVal;
@ -359,7 +360,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
case LESSTHAN_OR_EQUALS:
case ENDS_BEFORE:
case NOT_EQUAL:
throw new IllegalStateException("Invalid lower bound comparator: " + myLowerBound.getPrefix());
throw new IllegalStateException(Msg.code(1928) + "Invalid lower bound comparator: " + myLowerBound.getPrefix());
}
}
return retVal;
@ -423,7 +424,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
case APPROXIMATE:
case NOT_EQUAL:
case STARTS_AFTER:
throw new IllegalStateException("Invalid upper bound comparator: " + myUpperBound.getPrefix());
throw new IllegalStateException(Msg.code(1929) + "Invalid upper bound comparator: " + myUpperBound.getPrefix());
}
}
return retVal;
@ -551,7 +552,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
continue;
}
if (paramList.size() > 1) {
throw new InvalidRequestException("DateRange parameter does not support OR queries");
throw new InvalidRequestException(Msg.code(1930) + "DateRange parameter does not support OR queries");
}
String param = paramList.get(0);
@ -567,7 +568,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
if (parsed.getPrefix() == null) {
if (haveHadUnqualifiedParameter) {
throw new InvalidRequestException("Multiple date parameters with the same name and no qualifier (>, <, etc.) is not supported");
throw new InvalidRequestException(Msg.code(1931) + "Multiple date parameters with the same name and no qualifier (>, <, etc.) is not supported");
}
haveHadUnqualifiedParameter = true;
}
@ -616,7 +617,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
private void validateAndSet(DateParam lowerBound, DateParam upperBound) {
if (hasBound(lowerBound) && hasBound(upperBound)) {
if (lowerBound.getValue().getTime() > upperBound.getValue().getTime()) {
throw new DataFormatException(format(
throw new DataFormatException(Msg.code(1932) + format(
"Lower bound of %s is after upper bound of %s",
lowerBound.getValueAsString(), upperBound.getValueAsString()));
}
@ -633,7 +634,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
break;
case LESSTHAN:
case LESSTHAN_OR_EQUALS:
throw new DataFormatException("Lower bound comparator must be > or >=, can not be " + lowerBound.getPrefix().getValue());
throw new DataFormatException(Msg.code(1933) + "Lower bound comparator must be > or >=, can not be " + lowerBound.getPrefix().getValue());
}
}
@ -648,7 +649,7 @@ public class DateRangeParam implements IQueryParameterAnd<DateParam> {
break;
case GREATERTHAN:
case GREATERTHAN_OR_EQUALS:
throw new DataFormatException("Upper bound comparator must be < or <=, can not be " + upperBound.getPrefix().getValue());
throw new DataFormatException(Msg.code(1934) + "Upper bound comparator must be < or <=, can not be " + upperBound.getPrefix().getValue());
}
}

View File

@ -1,6 +1,7 @@
package ca.uhn.fhir.rest.param;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.rest.api.Constants;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
@ -104,7 +105,7 @@ public class HasParam extends BaseParam implements IQueryParameterType {
private static void throwInvalidSyntaxException(String theParameterName) {
throw new InvalidRequestException("Invalid _has parameter syntax: " + theParameterName);
throw new InvalidRequestException(Msg.code(1942) + "Invalid _has parameter syntax: " + theParameterName);
}
}

View File

@ -20,8 +20,7 @@ package ca.uhn.fhir.rest.param;
* #L%
*/
import java.util.List;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.ICompositeDatatype;
import ca.uhn.fhir.model.api.IElement;
import ca.uhn.fhir.model.api.IQueryParameterType;
@ -35,6 +34,8 @@ import ca.uhn.fhir.model.primitive.StringDt;
import ca.uhn.fhir.model.primitive.UriDt;
import ca.uhn.fhir.util.CoverageIgnore;
import java.util.List;
@CoverageIgnore
public class InternalCodingDt extends BaseCodingDt implements ICompositeDatatype {
@ -292,7 +293,7 @@ public class InternalCodingDt extends BaseCodingDt implements ICompositeDatatype
* </p>
*/
public BaseResourceReferenceDt getValueSet() {
throw new UnsupportedOperationException();
throw new UnsupportedOperationException(Msg.code(1949));
}
@Override
@ -303,13 +304,13 @@ public class InternalCodingDt extends BaseCodingDt implements ICompositeDatatype
@Deprecated //override deprecated method
@Override
public Boolean getMissing() {
throw new UnsupportedOperationException();
throw new UnsupportedOperationException(Msg.code(1950));
}
@Deprecated //override deprecated method
@Override
public IQueryParameterType setMissing(Boolean theMissing) {
throw new UnsupportedOperationException();
throw new UnsupportedOperationException(Msg.code(1951));
}
}

View File

@ -2,6 +2,7 @@ package ca.uhn.fhir.rest.param;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterOr;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.model.primitive.IdDt;
@ -123,7 +124,7 @@ public class ParameterUtil {
boolean isRi = theContext.getVersion().getVersion().isRi();
boolean usesHapiId = IdDt.class.equals(paramType);
if (isRi == usesHapiId) {
throw new ConfigurationException("Method uses the wrong Id datatype (IdDt / IdType) for the given context FHIR version: " + theMethod.toString());
throw new ConfigurationException(Msg.code(1936) + "Method uses the wrong Id datatype (IdDt / IdType) for the given context FHIR version: " + theMethod.toString());
}
}
return index;
@ -221,8 +222,7 @@ public class ParameterUtil {
return;
}
if (theParameters.size() > 1) {
throw new IllegalArgumentException(
"Type " + theParam.getClass().getCanonicalName() + " does not support multiple values");
throw new IllegalArgumentException(Msg.code(1937) + "Type " + theParam.getClass().getCanonicalName() + " does not support multiple values");
}
theParam.setValueAsQueryToken(theContext, theParamName, theParameters.getQualifier(),
theParameters.get(0));

View File

@ -20,20 +20,20 @@ package ca.uhn.fhir.rest.param;
* #L%
*/
import java.math.BigDecimal;
import java.util.List;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.model.base.composite.BaseQuantityDt;
import ca.uhn.fhir.model.primitive.DecimalDt;
import ca.uhn.fhir.model.primitive.UriDt;
import ca.uhn.fhir.util.CoverageIgnore;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.hl7.fhir.instance.model.api.IPrimitiveType;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.model.primitive.DecimalDt;
import ca.uhn.fhir.model.primitive.UriDt;
import ca.uhn.fhir.util.CoverageIgnore;
import java.math.BigDecimal;
import java.util.List;
public class QuantityParam extends BaseParamWithPrefix<QuantityParam> implements IQueryParameterType {
@ -317,7 +317,7 @@ public class QuantityParam extends BaseParamWithPrefix<QuantityParam> implements
} else if (theParam instanceof QuantityParam) {
return (QuantityParam) theParam;
} else {
throw new IllegalArgumentException("Invalid quantity type: " + theParam.getClass());
throw new IllegalArgumentException(Msg.code(1948) + "Invalid quantity type: " + theParam.getClass());
}
}
}

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.rest.param;
*/
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.base.composite.BaseCodingDt;
import ca.uhn.fhir.model.base.composite.BaseIdentifierDt;
import ca.uhn.fhir.model.primitive.UriDt;
@ -87,7 +88,7 @@ public class TokenParam extends BaseParam /*implements IQueryParameterType*/ {
public TokenParam(String theSystem, String theValue, boolean theText) {
if (theText && isNotBlank(theSystem)) {
throw new IllegalArgumentException("theSystem can not be non-blank if theText is true (:text searches do not include a system). In other words, set the first parameter to null for a text search");
throw new IllegalArgumentException(Msg.code(1938) + "theSystem can not be non-blank if theText is true (:text searches do not include a system). In other words, set the first parameter to null for a text search");
}
setSystem(theSystem);
setValue(theValue);

View File

@ -20,14 +20,15 @@ package ca.uhn.fhir.rest.param.binder;
* #L%
*/
import java.lang.reflect.Constructor;
import java.util.List;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.rest.param.CompositeParam;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import java.lang.reflect.Constructor;
import java.util.List;
class BaseBinder<T> {
private List<Class<? extends IQueryParameterType>> myCompositeTypes;
private Constructor<? extends T> myConstructor;
@ -40,7 +41,7 @@ class BaseBinder<T> {
if (myType.equals(CompositeParam.class)) {
if (myCompositeTypes.size() != 2) {
throw new ConfigurationException("Search parameter of type " + myType.getName() + " must have 2 composite types declared in parameter annotation, found " + theCompositeTypes.size());
throw new ConfigurationException(Msg.code(1959) + "Search parameter of type " + myType.getName() + " must have 2 composite types declared in parameter annotation, found " + theCompositeTypes.size());
}
}
@ -51,7 +52,7 @@ class BaseBinder<T> {
}
myConstructor = myType.getConstructor(types);
} catch (NoSuchMethodException e) {
throw new ConfigurationException("Query parameter type " + theType.getName() + " has no constructor with types " + theCompositeTypes);
throw new ConfigurationException(Msg.code(1960) + "Query parameter type " + theType.getName() + " has no constructor with types " + theCompositeTypes);
}
}
@ -65,7 +66,7 @@ class BaseBinder<T> {
T dt = myConstructor.newInstance(args);
return dt;
} catch (final Exception e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1961) + e);
}
}

View File

@ -20,17 +20,19 @@ package ca.uhn.fhir.rest.param.binder;
* #L%
*/
import static org.apache.commons.lang3.StringUtils.isBlank;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterOr;
import ca.uhn.fhir.rest.api.QualifiedParamList;
import ca.uhn.fhir.rest.param.ParameterUtil;
import ca.uhn.fhir.rest.param.StringParam;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import java.util.Collections;
import java.util.List;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.IQueryParameterOr;
import ca.uhn.fhir.rest.api.QualifiedParamList;
import ca.uhn.fhir.rest.param.*;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import static org.apache.commons.lang3.StringUtils.isBlank;
abstract class BaseJavaPrimitiveBinder<T>implements IParamBinder<T> {
@ -59,7 +61,7 @@ abstract class BaseJavaPrimitiveBinder<T>implements IParamBinder<T> {
return null;
}
if (theParams.size() > 1 || theParams.get(0).size() > 1) {
throw new InvalidRequestException("Multiple values detected for non-repeatable parameter '" + theName + "'. This server is not configured to allow multiple (AND) values for this param.");
throw new InvalidRequestException(Msg.code(1955) + "Multiple values detected for non-repeatable parameter '" + theName + "'. This server is not configured to allow multiple (AND) values for this param.");
}
T value = doParse(theParams.get(0).get(0));

View File

@ -20,14 +20,15 @@ package ca.uhn.fhir.rest.param.binder;
* #L%
*/
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.i18n.Msg;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import ca.uhn.fhir.context.ConfigurationException;
public class CollectionBinder
// implements IParamBinder
{
@ -44,7 +45,7 @@ public class CollectionBinder
} else if (theCollectionType.equals(Collection.class)) {
return (Class<? extends Collection>) ArrayList.class;
} else {
throw new ConfigurationException("Unsupported binding collection type '" + theCollectionType.getCanonicalName() + "' for " + thePositionDescription);
throw new ConfigurationException(Msg.code(1956) + "Unsupported binding collection type '" + theCollectionType.getCanonicalName() + "' for " + thePositionDescription);
}
}
@ -60,7 +61,7 @@ public class CollectionBinder
// } else if (theCollectionType == Collection.class) {
// myCollectionType = ArrayList.class;
// } else {
// throw new ConfigurationException("Unsupported binding collection type: " + theCollectionType.getCanonicalName());
// throw new ConfigurationException(Msg.code(1957) + "Unsupported binding collection type: " + theCollectionType.getCanonicalName());
// }
// }
@ -85,7 +86,7 @@ public class CollectionBinder
// try {
// retVal = (Collection<Object>) myCollectionType.newInstance();
// } catch (Exception e) {
// throw new InternalErrorException("Failed to instantiate " + myCollectionType, e);
// throw new InternalErrorException(Msg.code(1958) + "Failed to instantiate " + myCollectionType, e);
// }
//
// List<String> params = QueryUtil.splitQueryStringByCommasIgnoreEscape(theString);

View File

@ -20,14 +20,17 @@ package ca.uhn.fhir.rest.param.binder;
* #L%
*/
import java.util.List;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.model.api.*;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterAnd;
import ca.uhn.fhir.model.api.IQueryParameterOr;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.rest.api.QualifiedParamList;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import java.util.List;
public final class QueryParameterAndBinder extends BaseBinder<IQueryParameterAnd<?>> implements IParamBinder<IQueryParameterAnd<?>> {
public QueryParameterAndBinder(Class<? extends IQueryParameterAnd<?>> theType, List<Class<? extends IQueryParameterType>> theCompositeTypes) {
@ -48,7 +51,7 @@ public final class QueryParameterAndBinder extends BaseBinder<IQueryParameterAnd
dt = newInstance();
dt.setValuesAsQueryTokens(theContext, theParamName, theString);
} catch (SecurityException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1952) + e);
}
return dt;
}

View File

@ -20,16 +20,17 @@ package ca.uhn.fhir.rest.param.binder;
* #L%
*/
import java.util.Collections;
import java.util.List;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterOr;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.rest.api.QualifiedParamList;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import java.util.Collections;
import java.util.List;
public final class QueryParameterOrBinder extends BaseBinder<IQueryParameterOr<?>> implements IParamBinder<IQueryParameterOr<?>> {
public QueryParameterOrBinder(Class<? extends IQueryParameterOr<?>> theType, List<Class<? extends IQueryParameterType>> theCompositeTypes) {
@ -53,12 +54,12 @@ public final class QueryParameterOrBinder extends BaseBinder<IQueryParameterOr<?
return dt;
}
if (theString.size() > 1) {
throw new InvalidRequestException("Multiple values detected for non-repeatable parameter '" + theParamName + "'. This server is not configured to allow multiple (AND/OR) values for this param.");
throw new InvalidRequestException(Msg.code(1953) + "Multiple values detected for non-repeatable parameter '" + theParamName + "'. This server is not configured to allow multiple (AND/OR) values for this param.");
}
dt.setValuesAsQueryTokens(theContext, theParamName, theString.get(0));
} catch (SecurityException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1954) + e);
}
return dt;
}

View File

@ -20,18 +20,18 @@ package ca.uhn.fhir.rest.param.binder;
* #L%
*/
import java.util.Collections;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IQueryParameterOr;
import ca.uhn.fhir.model.api.IQueryParameterType;
import ca.uhn.fhir.rest.api.QualifiedParamList;
import ca.uhn.fhir.rest.param.ParameterUtil;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import org.apache.commons.lang3.StringUtils;
import java.util.Collections;
import java.util.List;
public final class QueryParameterTypeBinder extends BaseBinder<IQueryParameterType> implements IParamBinder<IQueryParameterType> {
@ -60,7 +60,7 @@ public final class QueryParameterTypeBinder extends BaseBinder<IQueryParameterTy
return dt;
}
if (theParams.size() > 1 || theParams.get(0).size() > 1) {
throw new InvalidRequestException("Multiple values detected for non-repeatable parameter '" + theParamName + "'. This server is not configured to allow multiple (AND/OR) values for this param.");
throw new InvalidRequestException(Msg.code(1962) + "Multiple values detected for non-repeatable parameter '" + theParamName + "'. This server is not configured to allow multiple (AND/OR) values for this param.");
}
dt.setValueAsQueryToken(theContext, theParamName, theParams.get(0).getQualifier(), value);

View File

@ -1,10 +1,15 @@
package ca.uhn.fhir.rest.server.exceptions;
import ca.uhn.fhir.i18n.Msg;
import org.apache.commons.lang3.Validate;
import org.hl7.fhir.instance.model.api.IBaseOperationOutcome;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*
@ -304,17 +309,17 @@ public abstract class BaseServerResponseException extends RuntimeException {
try {
return ourStatusCodeToExceptionType.get(theStatusCode).getConstructor(new Class[]{String.class}).newInstance(theMessage);
} catch (InstantiationException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1912) + e);
} catch (IllegalAccessException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1913) + e);
} catch (IllegalArgumentException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1914) + e);
} catch (InvocationTargetException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1915) + e);
} catch (NoSuchMethodException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1916) + e);
} catch (SecurityException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1917) + e);
}
}
return new UnclassifiedServerFailureException(theStatusCode, theMessage);
@ -322,7 +327,7 @@ public abstract class BaseServerResponseException extends RuntimeException {
static void registerExceptionType(int theStatusCode, Class<? extends BaseServerResponseException> theType) {
if (ourStatusCodeToExceptionType.containsKey(theStatusCode)) {
throw new Error("Can not register " + theType + " to status code " + theStatusCode + " because " + ourStatusCodeToExceptionType.get(theStatusCode) + " already registers that code");
throw new Error(Msg.code(1918) + "Can not register " + theType + " to status code " + theStatusCode + " because " + ourStatusCodeToExceptionType.get(theStatusCode) + " already registers that code");
}
ourStatusCodeToExceptionType.put(theStatusCode, theType);
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.rest.server.exceptions;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import org.hl7.fhir.instance.model.api.IBaseOperationOutcome;
import org.hl7.fhir.instance.model.api.IIdType;
@ -91,11 +92,11 @@ public class ResourceNotFoundException extends BaseServerResponseException {
}
private static String createErrorMessage(Class<? extends IResource> theClass, IIdType theId) {
return "Resource of type " + theClass.getSimpleName() + " with ID " + theId + " is not known";
return Msg.code(970) + "Resource of type " + theClass.getSimpleName() + " with ID " + theId + " is not known";
}
private static String createErrorMessage(IIdType theId) {
return "Resource " + (theId != null ? theId.getValue() : "") + " is not known";
return Msg.code(971) + "Resource " + (theId != null ? theId.getValue() : "") + " is not known";
}
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.util;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -58,7 +59,7 @@ public class AsyncUtil {
return theInitialCollectionLatch.await(theTime, theTimeUnit);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1805) + e);
}
}

View File

@ -5,6 +5,7 @@ import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementDefinition;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.api.PatchTypeEnum;
import ca.uhn.fhir.rest.api.RequestTypeEnum;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
@ -235,7 +236,7 @@ public class BundleUtil {
private static void validatePartsNotNull(LinkedHashSet<IBase> theDeleteParts) {
if (theDeleteParts == null) {
throw new IllegalStateException("This transaction contains a cycle, so it cannot be sorted.");
throw new IllegalStateException(Msg.code(1745) + "This transaction contains a cycle, so it cannot be sorted.");
}
}

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.util;
*/
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.api.EncodingEnum;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import com.google.common.base.Charsets;
@ -79,7 +80,7 @@ public class ClasspathUtil {
retVal = ClasspathUtil.class.getResourceAsStream("/" + classpath);
}
if (retVal == null) {
throw new InternalErrorException("Unable to find classpath resource: " + classpath);
throw new InternalErrorException(Msg.code(1758) + "Unable to find classpath resource: " + classpath);
}
}
return retVal;
@ -94,7 +95,7 @@ public class ClasspathUtil {
InputStream newStream = theStreamTransform.apply(stream);
return IOUtils.toString(newStream, Charsets.UTF_8);
} catch (IOException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1759) + e);
}
}
@ -104,7 +105,7 @@ public class ClasspathUtil {
try {
return new GZIPInputStream(t);
} catch (IOException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1760) + e);
}
};
return loadResource(theClasspath, streamTransform);
@ -135,7 +136,7 @@ public class ClasspathUtil {
try {
return IOUtils.toByteArray(stream);
} catch (IOException e) {
throw new InternalErrorException(e);
throw new InternalErrorException(Msg.code(1761) + e);
} finally {
close(stream);
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.util;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import com.google.common.io.CountingInputStream;
import java.io.IOException;
@ -52,7 +53,7 @@ public class CountingAndLimitingInputStream extends InputStream {
private void validateCount() throws IOException {
if (myWrap.getCount() > myMaxBytes) {
throw new IOException("Stream exceeds maximum allowable size: " + myMaxBytes);
throw new IOException(Msg.code(1807) + "Stream exceeds maximum allowable size: " + myMaxBytes);
}
}

View File

@ -20,6 +20,11 @@ package ca.uhn.fhir.util;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import java.lang.ref.SoftReference;
import java.text.ParseException;
import java.text.ParsePosition;
@ -31,10 +36,6 @@ import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
/**
* A utility class for parsing and formatting HTTP dates as used in cookies and
* other headers. This class handles dates as defined by RFC 2616 section
@ -222,7 +223,7 @@ public final class DateUtils {
public static <T> T notNull(final T argument, final String name) {
if (argument == null) {
throw new IllegalArgumentException(name + " may not be null");
throw new IllegalArgumentException(Msg.code(1783) + name + " may not be null");
}
return argument;
}

View File

@ -20,13 +20,13 @@ package ca.uhn.fhir.util;
* #L%
*/
import java.util.ArrayList;
import java.util.List;
import org.hl7.fhir.instance.model.api.IBase;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.ICompositeElement;
import ca.uhn.fhir.model.api.IElement;
import org.hl7.fhir.instance.model.api.IBase;
import java.util.ArrayList;
import java.util.List;
public class ElementUtil {
@ -87,7 +87,7 @@ public class ElementUtil {
} catch (ClassCastException e) {
List<?> elements = theElements;
String s = "Found instance of " + elements.get(i).getClass() + " - Did you set a field value to the incorrect type? Expected " + IBase.class.getName();
throw new ClassCastException(s);
throw new ClassCastException(Msg.code(1748) + s);
}
if (next != null && !next.isEmpty()) {
return false;
@ -109,12 +109,12 @@ public class ElementUtil {
} else if (next instanceof List) {
for (Object nextElement : ((List<?>)next)) {
if (!(nextElement instanceof IBase)) {
throw new IllegalArgumentException("Found element of "+nextElement.getClass());
throw new IllegalArgumentException(Msg.code(1749) + "Found element of "+nextElement.getClass());
}
addElement(retVal, (IElement) nextElement, theType);
}
} else {
throw new IllegalArgumentException("Found element of "+next.getClass());
throw new IllegalArgumentException(Msg.code(1750) + "Found element of "+next.getClass());
}
}

View File

@ -22,6 +22,7 @@ package ca.uhn.fhir.util;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseDatatype;
import org.hl7.fhir.instance.model.api.IBaseExtension;
@ -105,7 +106,7 @@ public class ExtensionUtil {
private static IBaseHasExtensions validateExtensionSupport(IBase theBase) {
if (!(theBase instanceof IBaseHasExtensions)) {
throw new IllegalArgumentException(String.format("Expected instance that supports extensions, but got %s", theBase));
throw new IllegalArgumentException(Msg.code(1747) + String.format("Expected instance that supports extensions, but got %s", theBase));
}
return (IBaseHasExtensions) theBase;
}

View File

@ -12,6 +12,7 @@ import ca.uhn.fhir.context.RuntimeChildDirectResource;
import ca.uhn.fhir.context.RuntimeExtensionDtDefinition;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.context.RuntimeSearchParam;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.ExtensionDt;
import ca.uhn.fhir.model.api.IIdentifiableElement;
import ca.uhn.fhir.model.api.IResource;
@ -183,7 +184,7 @@ public class FhirTerser {
if (theIgnoreMissingFields) {
return theSource;
}
throw new DataFormatException("Can not copy value from primitive of type " + theSource.getClass().getName() + " into type " + theTarget.getClass().getName());
throw new DataFormatException(Msg.code(1788) + "Can not copy value from primitive of type " + theSource.getClass().getName() + " into type " + theTarget.getClass().getName());
}
BaseRuntimeElementCompositeDefinition<?> sourceDef = (BaseRuntimeElementCompositeDefinition<?>) myContext.getElementDefinition(theSource.getClass());
@ -202,7 +203,7 @@ public class FhirTerser {
if (theIgnoreMissingFields) {
continue;
}
throw new DataFormatException("Type " + theTarget.getClass().getName() + " does not have a child with name " + elementName);
throw new DataFormatException(Msg.code(1789) + "Type " + theTarget.getClass().getName() + " does not have a child with name " + elementName);
}
BaseRuntimeElementDefinition<?> element = myContext.getElementDefinition(nextValue.getClass());
@ -288,7 +289,7 @@ public class FhirTerser {
List<String> parts = Arrays.asList(thePath.split("\\."));
List<String> subList = parts.subList(1, parts.size());
if (subList.size() < 1) {
throw new ConfigurationException("Invalid path: " + thePath);
throw new ConfigurationException(Msg.code(1790) + "Invalid path: " + thePath);
}
return getDefinition(def, subList);
@ -306,7 +307,7 @@ public class FhirTerser {
BaseRuntimeElementDefinition<?> def = myContext.getElementDefinition(theTarget.getClass());
if (!(def instanceof BaseRuntimeElementCompositeDefinition)) {
throw new IllegalArgumentException("Target is not a composite type: " + theTarget.getClass().getName());
throw new IllegalArgumentException(Msg.code(1791) + "Target is not a composite type: " + theTarget.getClass().getName());
}
BaseRuntimeElementCompositeDefinition<?> currentDef = (BaseRuntimeElementCompositeDefinition<?>) def;
@ -699,7 +700,7 @@ public class FhirTerser {
}
if (parts.size() < 1) {
throw new ConfigurationException("Invalid path: " + thePath);
throw new ConfigurationException(Msg.code(1792) + "Invalid path: " + thePath);
}
return parts;
}
@ -897,7 +898,7 @@ public class FhirTerser {
}
case EXTENSION_DECLARED:
case UNDECL_EXT: {
throw new IllegalStateException("state should not happen: " + theDefinition.getChildType());
throw new IllegalStateException(Msg.code(1793) + "state should not happen: " + theDefinition.getChildType());
}
case CONTAINED_RESOURCE_LIST: {
if (theElement != null) {
@ -1012,7 +1013,7 @@ public class FhirTerser {
nextValue = (IBase) nextValueObject;
} catch (ClassCastException e) {
String s = "Found instance of " + nextValueObject.getClass() + " - Did you set a field value to the incorrect type? Expected " + IBase.class.getName();
throw new ClassCastException(s);
throw new ClassCastException(Msg.code(1794) + s);
}
if (nextValue == null) {
continue;
@ -1051,7 +1052,7 @@ public class FhirTerser {
case CONTAINED_RESOURCE_LIST:
case EXTENSION_DECLARED:
case UNDECL_EXT: {
throw new IllegalStateException("state should not happen: " + def.getChildType());
throw new IllegalStateException(Msg.code(1795) + "state should not happen: " + def.getChildType());
}
}
@ -1269,7 +1270,7 @@ public class FhirTerser {
BaseRuntimeChildDefinition nextChild = def.getChildByName(nextPart);
if (nextChild == null) {
throw new DataFormatException("Invalid path " + thePath + ": Element of type " + def.getName() + " has no child named " + nextPart + ". Valid names: " + def.getChildrenAndExtension().stream().map(t -> t.getElementName()).sorted().collect(Collectors.joining(", ")));
throw new DataFormatException(Msg.code(1796) + "Invalid path " + thePath + ": Element of type " + def.getName() + " has no child named " + nextPart + ". Valid names: " + def.getChildrenAndExtension().stream().map(t -> t.getElementName()).sorted().collect(Collectors.joining(", ")));
}
List<IBase> childValues = nextChild.getAccessor().getValues(target);
@ -1283,7 +1284,7 @@ public class FhirTerser {
if (theElementsToAdd == -1) {
return (List<T>) Collections.singletonList(childValues.get(0));
} else if (nextChild.getMax() == 1 && !childValues.get(0).isEmpty()) {
throw new DataFormatException("Element at path " + thePath + " is not repeatable and not empty");
throw new DataFormatException(Msg.code(1797) + "Element at path " + thePath + " is not repeatable and not empty");
} else if (nextChild.getMax() == 1 && childValues.get(0).isEmpty()) {
return (List<T>) Collections.singletonList(childValues.get(0));
}
@ -1299,7 +1300,7 @@ public class FhirTerser {
return (List<T>) Collections.singletonList(childValue);
} else {
if (nextChild.getMax() == 1) {
throw new DataFormatException("Can not add multiple values at path " + thePath + ": Element does not repeat");
throw new DataFormatException(Msg.code(1798) + "Can not add multiple values at path " + thePath + ": Element does not repeat");
}
List<T> values = (List<T>) Lists.newArrayList(childValue);
@ -1320,7 +1321,7 @@ public class FhirTerser {
if (!lastPart) {
BaseRuntimeElementDefinition<?> nextDef = myContext.getElementDefinition(target.getClass());
if (!(nextDef instanceof BaseRuntimeElementCompositeDefinition)) {
throw new DataFormatException("Invalid path " + thePath + ": Element of type " + def.getName() + " has no child named " + nextPart + " (this is a primitive type)");
throw new DataFormatException(Msg.code(1799) + "Invalid path " + thePath + ": Element of type " + def.getName() + " has no child named " + nextPart + " (this is a primitive type)");
}
def = (BaseRuntimeElementCompositeDefinition<?>) nextDef;
}
@ -1350,7 +1351,7 @@ public class FhirTerser {
public <T extends IBase> T addElement(@Nonnull IBase theTarget, @Nonnull String thePath, @Nullable String theValue) {
T value = (T) doAddElement(theTarget, thePath, 1).get(0);
if (!(value instanceof IPrimitiveType)) {
throw new DataFormatException("Element at path " + thePath + " is not a primitive datatype. Found: " + myContext.getElementDefinition(value.getClass()).getName());
throw new DataFormatException(Msg.code(1800) + "Element at path " + thePath + " is not a primitive datatype. Found: " + myContext.getElementDefinition(value.getClass()).getName());
}
((IPrimitiveType<?>) value).setValueAsString(theValue);
@ -1381,7 +1382,7 @@ public class FhirTerser {
public <T extends IBase> T setElement(@Nonnull IBase theTarget, @Nonnull String thePath, @Nullable String theValue) {
T value = (T) doAddElement(theTarget, thePath, -1).get(0);
if (!(value instanceof IPrimitiveType)) {
throw new DataFormatException("Element at path " + thePath + " is not a primitive datatype. Found: " + myContext.getElementDefinition(value.getClass()).getName());
throw new DataFormatException(Msg.code(1801) + "Element at path " + thePath + " is not a primitive datatype. Found: " + myContext.getElementDefinition(value.getClass()).getName());
}
((IPrimitiveType<?>) value).setValueAsString(theValue);
@ -1405,7 +1406,7 @@ public class FhirTerser {
for (IBase target : targets) {
if (!(target instanceof IPrimitiveType)) {
throw new DataFormatException("Element at path " + thePath + " is not a primitive datatype. Found: " + myContext.getElementDefinition(target.getClass()).getName());
throw new DataFormatException(Msg.code(1802) + "Element at path " + thePath + " is not a primitive datatype. Found: " + myContext.getElementDefinition(target.getClass()).getName());
}
((IPrimitiveType<?>) target).setValueAsString(valuesIter.next());

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.util;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.IModelJson;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import com.fasterxml.jackson.annotation.JsonInclude;
@ -89,7 +90,7 @@ public class JsonUtil {
try {
return ourMapperNonPrettyPrint.writeValueAsString(theJson);
} catch (JsonProcessingException e) {
throw new InvalidRequestException("Failed to encode " + theJson.getClass(), e);
throw new InvalidRequestException(Msg.code(1741) + "Failed to encode " + theJson.getClass(), e);
}
}
}

View File

@ -24,6 +24,7 @@ import ca.uhn.fhir.context.BaseRuntimeChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.fhir.i18n.Msg;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseExtension;
import org.hl7.fhir.instance.model.api.IBaseHasExtensions;
@ -49,7 +50,7 @@ public class MetaUtil {
} else if (theContext.getVersion().getVersion().equals(FhirVersionEnum.DSTU3)) {
return getSourceDstu3((IBaseHasExtensions) theMeta);
} else {
throw new UnsupportedOperationException(MetaUtil.class.getSimpleName() + ".getSource() not supported on FHIR Version " + theContext.getVersion().getVersion());
throw new UnsupportedOperationException(Msg.code(1782) + MetaUtil.class.getSimpleName() + ".getSource() not supported on FHIR Version " + theContext.getVersion().getVersion());
}
}

View File

@ -1,5 +1,6 @@
package ca.uhn.fhir.util;
import ca.uhn.fhir.i18n.Msg;
import org.apache.commons.lang3.StringUtils;
/*
@ -36,13 +37,13 @@ public class ObjectUtil {
public static <T> T requireNonNull(T obj, String message) {
if (obj == null)
throw new NullPointerException(message);
throw new NullPointerException(Msg.code(1776) + message);
return obj;
}
public static void requireNotEmpty(String str, String message) {
if (StringUtils.isBlank(str)) {
throw new IllegalArgumentException(message);
throw new IllegalArgumentException(Msg.code(1777) + message);
}
}

View File

@ -20,7 +20,12 @@ package ca.uhn.fhir.util;
* #L%
*/
import ca.uhn.fhir.context.*;
import ca.uhn.fhir.context.BaseRuntimeChildDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementDefinition;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.server.exceptions.InternalErrorException;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseOperationOutcome;
@ -114,9 +119,9 @@ public class OperationOutcomeUtil {
try {
return (IBaseOperationOutcome) ooDef.getImplementingClass().newInstance();
} catch (InstantiationException e) {
throw new InternalErrorException("Unable to instantiate OperationOutcome", e);
throw new InternalErrorException(Msg.code(1803) + "Unable to instantiate OperationOutcome", e);
} catch (IllegalAccessException e) {
throw new InternalErrorException("Unable to instantiate OperationOutcome", e);
throw new InternalErrorException(Msg.code(1804) + "Unable to instantiate OperationOutcome", e);
}
}

View File

@ -25,6 +25,7 @@ import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition;
import ca.uhn.fhir.context.BaseRuntimeElementDefinition;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.api.annotation.Description;
import ca.uhn.fhir.model.primitive.StringDt;
import org.apache.commons.lang3.Validate;
@ -38,7 +39,6 @@ import org.hl7.fhir.instance.model.api.IPrimitiveType;
import javax.annotation.Nullable;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
@ -156,7 +156,7 @@ public class ParametersUtil {
addClientParameter(theContext, next, theTargetResource, paramChild, paramChildElem, theName);
}
} else {
throw new IllegalArgumentException("Don't know how to handle value of type " + theValue.getClass() + " for parameter " + theName);
throw new IllegalArgumentException(Msg.code(1806) + "Don't know how to handle value of type " + theValue.getClass() + " for parameter " + theName);
}
}

View File

@ -1,5 +1,25 @@
package ca.uhn.fhir.util;
/*-
* #%L
* HAPI FHIR - Core Library
* %%
* Copyright (C) 2014 - 2022 Smile CDR, Inc.
* %%
* Licensed 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.
* #L%
*/
import ca.uhn.fhir.context.phonetic.ApacheEncoder;
import ca.uhn.fhir.context.phonetic.IPhoneticEncoder;
import ca.uhn.fhir.context.phonetic.NumericEncoder;

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.util;
*/
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import org.apache.commons.lang3.StringUtils;
import org.hl7.fhir.instance.model.api.IBase;
@ -53,7 +54,7 @@ public class PropertyModifyingHelper {
*/
public PropertyModifyingHelper(FhirContext theFhirContext, IBase theBase) {
if (findGetPropertyMethod(theBase) == null) {
throw new IllegalArgumentException("Specified base instance does not support property retrieval.");
throw new IllegalArgumentException(Msg.code(1771) + "Specified base instance does not support property retrieval.");
}
myBase = theBase;
myFhirContext = theFhirContext;
@ -129,7 +130,7 @@ public class PropertyModifyingHelper {
int hashCode = thePropertyName.hashCode();
setPropertyMethod.invoke(myBase, hashCode, thePropertyName, value);
} catch (Exception e) {
throw new IllegalStateException(String.format("Unable to set property %s on %s", thePropertyName, myBase), e);
throw new IllegalStateException(Msg.code(1772) + String.format("Unable to set property %s on %s", thePropertyName, myBase), e);
}
}
@ -145,7 +146,7 @@ public class PropertyModifyingHelper {
try {
values = (Object[]) getPropertyMethod.invoke(myBase, thePropertyName.hashCode(), thePropertyName, true);
} catch (Exception e) {
throw new IllegalStateException(String.format("Instance %s does not supply property %s", myBase, thePropertyName), e);
throw new IllegalStateException(Msg.code(1773) + String.format("Instance %s does not supply property %s", myBase, thePropertyName), e);
}
return Arrays.stream(values)

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.util;
*/
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.i18n.Msg;
import org.apache.commons.lang3.Validate;
import java.lang.reflect.Constructor;
@ -35,8 +36,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@ -202,7 +201,7 @@ public class ReflectionUtil {
try {
return theType.getConstructor().newInstance();
} catch (Exception e) {
throw new ConfigurationException("Failed to instantiate " + theType.getName(), e);
throw new ConfigurationException(Msg.code(1784) + "Failed to instantiate " + theType.getName(), e);
}
}
@ -212,7 +211,7 @@ public class ReflectionUtil {
Constructor<T> constructor = theType.getConstructor(theArgumentType);
return constructor.newInstance(theArgument);
} catch (Exception e) {
throw new ConfigurationException("Failed to instantiate " + theType.getName(), e);
throw new ConfigurationException(Msg.code(1785) + "Failed to instantiate " + theType.getName(), e);
}
}
@ -231,7 +230,7 @@ public class ReflectionUtil {
Validate.isTrue(serverType.isAssignableFrom(type));
fhirServerVersion = type.getConstructor(theParameterArgTypes).newInstance(theConstructorArgs);
} catch (Exception e) {
throw new ConfigurationException(errorMessage, e);
throw new ConfigurationException(Msg.code(1786) + errorMessage, e);
}
ourFhirServerVersions.put(theKey, fhirServerVersion);
@ -248,7 +247,7 @@ public class ReflectionUtil {
try {
Class<?> clazz = Class.forName(theClassName);
if (!theType.isAssignableFrom(clazz)) {
throw new ConfigurationException(theClassName + " is not assignable to " + theType);
throw new ConfigurationException(Msg.code(1787) + theClassName + " is not assignable to " + theType);
}
return (T) clazz.getConstructor(theArgTypes).newInstance(theArgs);
} catch (ConfigurationException e) {

View File

@ -24,6 +24,7 @@ import ca.uhn.fhir.context.BaseRuntimeChildDefinition;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.context.RuntimeSearchParam;
import ca.uhn.fhir.i18n.Msg;
import org.apache.commons.lang3.Validate;
import org.hl7.fhir.instance.model.api.IBase;
import org.hl7.fhir.instance.model.api.IBaseResource;
@ -87,12 +88,12 @@ public class SearchParameterUtil {
List<RuntimeSearchParam> searchParams = runtimeResourceDefinition.getSearchParamsForCompartmentName("Patient");
if (searchParams == null || searchParams.size() == 0) {
String errorMessage = String.format("Resource type [%s] is not eligible for this type of export, as it contains no Patient compartment, and no `patient` or `subject` search parameter", runtimeResourceDefinition.getId());
throw new IllegalArgumentException(errorMessage);
throw new IllegalArgumentException(Msg.code(1774) + errorMessage);
} else if (searchParams.size() == 1) {
patientSearchParam = searchParams.get(0);
} else {
String errorMessage = String.format("Resource type %s has more than one Search Param which references a patient compartment. We are unable to disambiguate which patient search parameter we should be searching by.", runtimeResourceDefinition.getId());
throw new IllegalArgumentException(errorMessage);
throw new IllegalArgumentException(Msg.code(1775) + errorMessage);
}
return patientSearchParam;
}

View File

@ -26,6 +26,7 @@ import ca.uhn.fhir.context.BaseRuntimeElementDefinition;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeChildChoiceDefinition;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.tuple.Triple;
import org.hl7.fhir.instance.model.api.IBase;
@ -230,7 +231,7 @@ public final class TerserUtil {
try {
return (Boolean) theMethod.invoke(theItem1, theItem2);
} catch (Exception e) {
throw new RuntimeException(String.format("Unable to compare equality via %s", EQUALS_DEEP), e);
throw new RuntimeException(Msg.code(1746) + String.format("Unable to compare equality via %s", EQUALS_DEEP), e);
}
}
return theItem1.equals(theItem2);

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.util;
*/
import ca.uhn.fhir.i18n.HapiLocalizer;
import ca.uhn.fhir.i18n.Msg;
import java.util.Locale;
import java.util.TimeZone;
@ -91,11 +92,11 @@ public class TestUtil {
try {
Thread.sleep(50);
} catch (InterruptedException theE) {
throw new Error(theE);
throw new Error(Msg.code(1778) + theE);
}
}
if ((System.currentTimeMillis() - start) >= 15000) {
throw new IllegalStateException("Size " + theInteger.get() + " is != target " + theTarget);
throw new IllegalStateException(Msg.code(1779) + "Size " + theInteger.get() + " is != target " + theTarget);
}
}
@ -110,11 +111,11 @@ public class TestUtil {
try {
Thread.sleep(50);
} catch (InterruptedException theE) {
throw new Error(theE);
throw new Error(Msg.code(1780) + theE);
}
}
if ((System.currentTimeMillis() - start) >= 15000) {
throw new IllegalStateException("Size " + theSource.call() + " is != target " + theTarget);
throw new IllegalStateException(Msg.code(1781) + "Size " + theSource.call() + " is != target " + theTarget);
}
}

View File

@ -2,6 +2,7 @@ package ca.uhn.fhir.util;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.context.RuntimeResourceDefinition;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.model.primitive.IdDt;
import ca.uhn.fhir.parser.DataFormatException;
import ca.uhn.fhir.rest.api.Constants;
@ -9,7 +10,6 @@ import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import com.google.common.escape.Escaper;
import com.google.common.net.PercentEscaper;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.StringSubstitutor;
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.message.BasicNameValuePair;
@ -394,7 +394,7 @@ public class UrlUtil {
if (nextSubstring.equals(Constants.URL_TOKEN_HISTORY)) {
nextIsHistory = true;
} else {
throw new InvalidRequestException("Invalid FHIR resource URL: " + url);
throw new InvalidRequestException(Msg.code(1742) + "Invalid FHIR resource URL: " + url);
}
}
if (nextChar == '?') {
@ -522,7 +522,7 @@ public class UrlUtil {
// method that takes Charset is JDK10+ only... sigh....
return URLDecoder.decode(theString, "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new Error("UTF-8 not supported, this shouldn't happen", e);
throw new Error(Msg.code(1743) + "UTF-8 not supported, this shouldn't happen", e);
}
}
}
@ -555,7 +555,7 @@ public class UrlUtil {
};
matchUrl = StringUtils.replaceEach(matchUrl, searchList, replacementList);
if (matchUrl.contains(" ")) {
throw new InvalidRequestException("Failed to parse match URL[" + theMatchUrl + "] - URL is invalid (must not contain spaces)");
throw new InvalidRequestException(Msg.code(1744) + "Failed to parse match URL[" + theMatchUrl + "] - URL is invalid (must not contain spaces)");
}
parameters = URLEncodedUtils.parse((matchUrl), Constants.CHARSET_UTF8, '&');

View File

@ -20,10 +20,12 @@ package ca.uhn.fhir.util;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
import ca.uhn.fhir.rest.server.exceptions.UnprocessableEntityException;
import static org.apache.commons.lang3.StringUtils.*;
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.length;
public class ValidateUtil {
@ -32,7 +34,7 @@ public class ValidateUtil {
*/
public static void isGreaterThan(long theValue, long theMinimum, String theMessage) {
if (theValue <= theMinimum) {
throw new IllegalArgumentException(theMessage);
throw new IllegalArgumentException(Msg.code(1762) + theMessage);
}
}
@ -41,43 +43,43 @@ public class ValidateUtil {
*/
public static void isGreaterThanOrEqualTo(long theValue, long theMinimum, String theMessage) {
if (theValue < theMinimum) {
throw new IllegalArgumentException(theMessage);
throw new IllegalArgumentException(Msg.code(1763) + theMessage);
}
}
public static void isNotBlankOrThrowIllegalArgument(String theString, String theMessage) {
if (isBlank(theString)) {
throw new IllegalArgumentException(theMessage);
throw new IllegalArgumentException(Msg.code(1764) + theMessage);
}
}
public static void isNotBlankOrThrowInvalidRequest(String theString, String theMessage) {
if (isBlank(theString)) {
throw new InvalidRequestException(theMessage);
throw new InvalidRequestException(Msg.code(1765) + theMessage);
}
}
public static void isNotBlankOrThrowUnprocessableEntity(String theString, String theMessage) {
if (isBlank(theString)) {
throw new UnprocessableEntityException(theMessage);
throw new UnprocessableEntityException(Msg.code(1766) + theMessage);
}
}
public static void isNotNullOrThrowUnprocessableEntity(Object theObject, String theMessage, Object... theValues) {
if (theObject == null) {
throw new UnprocessableEntityException(String.format(theMessage, theValues));
throw new UnprocessableEntityException(Msg.code(1767) + String.format(theMessage, theValues));
}
}
public static void isNotTooLongOrThrowIllegalArgument(String theString, int theMaxLength, String theMessage) {
if (length(theString) > theMaxLength) {
throw new IllegalArgumentException(theMessage);
throw new IllegalArgumentException(Msg.code(1768) + theMessage);
}
}
public static void isTrueOrThrowInvalidRequest(boolean theSuccess, String theMessage, Object... theValues) {
if (!theSuccess) {
throw new InvalidRequestException(String.format(theMessage, theValues));
throw new InvalidRequestException(Msg.code(1769) + String.format(theMessage, theValues));
}
}
@ -89,7 +91,7 @@ public class ValidateUtil {
}
}
if (count != 1) {
throw new InvalidRequestException(theMessage);
throw new InvalidRequestException(Msg.code(1770) + theMessage);
}
}

View File

@ -20,6 +20,7 @@ package ca.uhn.fhir.util;
* #L%
*/
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.context.ConfigurationException;
import ca.uhn.fhir.model.primitive.XhtmlDt;
import ca.uhn.fhir.parser.DataFormatException;
@ -1684,9 +1685,9 @@ public class XmlUtil {
ew.close();
return w.toString();
} catch (XMLStreamException e) {
throw new DataFormatException("Problem with the contained XML events", e);
throw new DataFormatException(Msg.code(1751) + "Problem with the contained XML events", e);
} catch (FactoryConfigurationError e) {
throw new ConfigurationException(e);
throw new ConfigurationException(Msg.code(1752) + e);
}
}
@ -1788,7 +1789,7 @@ public class XmlUtil {
}
throwUnitTestExceptionIfConfiguredToDoSo();
} catch (Throwable e) {
throw new ConfigurationException("Unable to initialize StAX - XML processing is disabled", e);
throw new ConfigurationException(Msg.code(1753) + "Unable to initialize StAX - XML processing is disabled", e);
}
return inputFactory;
}
@ -1799,7 +1800,7 @@ public class XmlUtil {
outputFactory = XMLOutputFactory.newInstance();
throwUnitTestExceptionIfConfiguredToDoSo();
} catch (Throwable e) {
throw new ConfigurationException("Unable to initialize StAX - XML processing is disabled", e);
throw new ConfigurationException(Msg.code(1754) + "Unable to initialize StAX - XML processing is disabled", e);
}
return outputFactory;
}
@ -1841,9 +1842,9 @@ public class XmlUtil {
return value;
} catch (XMLStreamException e) {
throw new DataFormatException("String does not appear to be valid XML/XHTML (error is \"" + e.getMessage() + "\"): " + theValue, e);
throw new DataFormatException(Msg.code(1755) + "String does not appear to be valid XML/XHTML (error is \"" + e.getMessage() + "\"): " + theValue, e);
} catch (FactoryConfigurationError e) {
throw new ConfigurationException(e);
throw new ConfigurationException(Msg.code(1756) + e);
}
}
@ -1892,7 +1893,7 @@ public class XmlUtil {
builder = docBuilderFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
throw new ConfigurationException(e);
throw new ConfigurationException(Msg.code(1757) + e);
}
InputSource src = new InputSource(theReader);

View File

@ -21,6 +21,7 @@ package ca.uhn.fhir.validation;
*/
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.i18n.Msg;
import ca.uhn.fhir.interceptor.api.HookParams;
import ca.uhn.fhir.interceptor.api.IInterceptorBroadcaster;
import ca.uhn.fhir.interceptor.api.Pointcut;
@ -147,7 +148,7 @@ public class FhirValidator {
*/
public synchronized FhirValidator setValidateAgainstStandardSchematron(boolean theValidateAgainstStandardSchematron) {
if (theValidateAgainstStandardSchematron && !ourPhPresentOnClasspath) {
throw new IllegalArgumentException(myContext.getLocalizer().getMessage(I18N_KEY_NO_PH_ERROR));
throw new IllegalArgumentException(Msg.code(1970) + myContext.getLocalizer().getMessage(I18N_KEY_NO_PH_ERROR));
}
if (!theValidateAgainstStandardSchematron && !ourPhPresentOnClasspath) {
return this;
@ -332,7 +333,7 @@ public class FhirValidator {
retval.addAll(messages);
}
} catch (InterruptedException | ExecutionException exp) {
throw new InternalErrorException(exp);
throw new InternalErrorException(Msg.code(1975) + exp);
}
return retval;
}

Some files were not shown because too many files have changed in this diff Show More