diff --git a/hapi-fhir-base/pom.xml b/hapi-fhir-base/pom.xml
index 2d735d6f822..93c91bf3b0f 100644
--- a/hapi-fhir-base/pom.xml
+++ b/hapi-fhir-base/pom.xml
@@ -225,6 +225,13 @@
9.1.1.v20140108
test
+
+ org.eclipse.jetty
+ jetty-http
+ 9.1.1.v20140108
+ test
+
+
diff --git a/hapi-fhir-base/src/changes/changes.xml b/hapi-fhir-base/src/changes/changes.xml
index d9e3a896b0d..04190064134 100644
--- a/hapi-fhir-base/src/changes/changes.xml
+++ b/hapi-fhir-base/src/changes/changes.xml
@@ -15,7 +15,7 @@
Bernard Gitaadji for reporting and diagnosing the issue!
-
+
+
+ Add server interceptor framework, and new interceptor for logging incoming
+ requests.
+
+
+ Add server validation framework for validating resources against the FHIR schemas and schematrons
+
+
+ Tester UI created double _format and _pretty param entries in searches. Thanks to Gered King of University
+ Health Network for reporting!
+
+
+ Create method was incorrectly returning an HTTP 204 on sucessful completion, but
+ should be returning an HTTP 200 per the FHIR specification. Thanks to wanghaisheng
+ for reporting!
+
+
+ FHIR Tester UI now correctly sends UTF-8 charset in responses so that message payloads containing
+ non US-ASCII characters will correctly display in the browser
+
+
+ JSON parser was incorrectly encoding extensions on composite elements outside the element itself
+ (as is done correctly for non-composite elements) instead of inside of them. Thanks to David Hay of
+ Orion for reporting this!
+
+
+ Contained/included resource instances received by a client are now automatically
+ added to any ResourceReferenceDt instancea in other resources which reference them.
+
+
+ Add documentation on how to use eBay CORS Filter to support Cross Origin Resource
+ Sharing (CORS) to server. CORS support that was built in to the server itself has
+ been removed, as it did not work correctly (and was reinventing a wheel that others
+ have done a great job inventing). Thanks to Peter Bernhardt of Relay Health for all the assistance
+ in testing this!
+
+
+ IResource interface did not expose the getLanguage/setLanguage methods from BaseResource,
+ so the resource language was difficult to access.
+
+
+ JSON Parser now gives a more friendly error message if it tries to parse JSON with invalid use
+ of single quotes
+
+
+ Transaction server method is now allowed to return an OperationOutcome in addition to the
+ incoming resources. The public test server now does this in order to return status information
+ about the transaction processing.
+
+
+ Update method in the server can now flag (via a field on the MethodOutcome object being returned)
+ that the result was actually a creation, and Create method can indicate that it was actually an
+ update. This has no effect other than to switch between the HTTP 200 and HTTP 201 status codes on the
+ response, but this may be useful in some circumstances.
+
+
+ Annotation client search methods with a specific resource type (e.g. List<Patient> search())
+ won't return any resources that aren't of the correct type that are received in a response
+ bundle (generally these are referenced resources, so they are populated in the reference fields instead).
+ Thanks to Tahura Chaudhry of University Health Network for the unit test!
+
+
+ Added narrative generator template for OperationOutcome resource
+
+
+ Date/time types did not correctly parse values in the format "yyyymmdd" (although the FHIR-defined format
+ is "yyyy-mm-dd" anyhow, and this is correctly handled). Thanks to Jeffrey Ting of Systems Made Simple
+ for reporting!
+
+
+ Server search method for an unnamed query gets called if the client requests a named query
+ with the same parameter list. Thanks to Neal Acharya of University Health Network for reporting!
+
+
+ Category header (for tags) is correctly read in client for "read" operation
+
+
+ Transaction method in server can now have parameter type Bundle instead of
+ List<IResource>
+
+
+ HAPI parsers now use field access to get/set values instead of method accessors and mutators.
+ This should give a small performance boost.
+
+
+ JSON parser encodes resource references incorrectly, using the name "resource" instead
+ of the name "reference" for the actual reference. Thanks to
+ Ricky Nguyen for reporting and tracking down the issue!
+
+
+ Rename NotImpementedException to NotImplementedException (to correct typo)
+
+
+ Server setUseBrowserFriendlyContentType setting also respected for errors (e.g. OperationOutcome with 4xx/5xx status)
+
+
+ Fix performance issue in date/time datatypes where pattern matchers were not static
+
+
+ Server now gives a more helpful error message if a @Read method has a search parameter (which is invalid, but
+ previously lead to a very unhelpful error message). Thanks to Tahura Chaudhry of UHN for reporting!
+
+
+ Resource of type "List" failed to parse from a bundle correctly. Thanks to David Hay of Orion Health
+ for reporting!
+
+
+ QuantityParam correctly encodes approximate (~) prefix to values
+
+
+ If a server defines a method with parameter "_id", incoming search requests for that method may
+ get delegated to the wrong method. Thanks to Neal Acharya for reporting!
+
+
+ SecurityEvent.Object structural element has been renamed to
+ SecurityEvent.ObjectElement to avoid conflicting names with the
+ java Object class. Thanks to Laurie Macdougall-Sookraj of UHN for
+ reporting!
+
+
+ Text/narrative blocks that were created with a non-empty
+ namespace prefix (e.g. <xhtml:div xmlns:xhtml="...">...</xhtml:div>)
+ failed to encode correctly (prefix was missing in encoded resource)
+
+
+ Resource references previously encoded their children (display and reference)
+ in the wrong order so references with both would fail schema validation.
+
+
+ SecurityEvent resource's enums now use friendly enum names instead of the unfriendly
+ numeric code values. Thanks to Laurie MacDougall-Sookraj of UHN for the
+ suggestion!
+
+
+
+
+ having multiple ways of accomplishing the same thing. This means that a number of existing classes
+ have been deprocated in favour of new naming schemes.
+
]]>
+ All annotation-based clients and all server search method parameters are now named
+ (type)Param, for example: StringParam, TokenParam, etc.
+
]]>
+ All generic/fluent client method parameters are now named
+ (type)ClientParam, for example: StringClientParam, TokenClientParam, etc.
+
]]>
+ All renamed classes have been retained and deprocated, so this change should not cause any issues
+ for existing applications but those applications should be refactored to use the
+ new parameters when possible.
+
+
+ Allow server methods to return wildcard generic types (e.g. List<? extends IResource>)
+
+
+ Search parameters are not properly escaped and unescaped. E.g. for a token parameter such as
+ "&identifier=system|codepart1\|codepart2"
+
+
+ Add support for OPTIONS verb (which returns the server conformance statement)
+
+
+ Add support for CORS headers in server
+
+
+ Bump SLF4j dependency to latest version (1.7.7)
+
+
+ Add interceptor framework for clients (annotation based and generic), and add interceptors
+ for configurable logging, capturing requests and responses, and HTTP basic auth.
+
+
+ Transaction client invocations with XML encoding were using the wrong content type ("application/xml+fhir" instead
+ of the correct "application/atom+xml"). Thanks to David Hay of Orion Health for surfacing this one!
+
+
+ Bundle entries now support a link type of "search". Thanks to David Hay for the suggestion!
+
+
+ If a client receives a non 2xx response (e.g. HTTP 500) and the response body is a text/plain message or
+ an OperationOutcome resource, include the message in the exception message so that it will be
+ more conveniently displayed in logs and other places. Thanks to Neal Acharya for the suggestion!
+
+
+ Read invocations in the client now process the "Content-Location" header and use it to
+ populate the ID of the returned resource. Thanks to Neal Acharya for the suggestion!
+
+
+ Fix issue where vread invocations on server incorrectly get routed to instance history method if one is
+ defined. Thanks to Neal Acharya from UHN for surfacing this one!
+
+
+ Binary reads on a server not include the Content-Disposition header, to prevent HTML in binary
+ blobs from being used for nefarious purposes. See
+ FHIR Tracker Bug 3298]]>
+ for more information.
+
+
+ Support has been added for using an HTTP proxy for outgoing requests.
+
+
+ Fix: Primitive extensions declared against custom resource types
+ are encoded even if they have no value. Thanks to David Hay of Orion for
+ reporting this!
+
+
+ Fix: RESTful server deployed to a location where the URL to access it contained a
+ space (e.g. a WAR file with a space in the name) failed to work correctly.
+ Thanks to David Hay of Orion for reporting this!
+
+
+
+
+ BREAKING CHANGE:]]>: IdDt has been modified so that it
+ contains a partial or complete resource identity. Previously it contained
+ only the simple alphanumeric id of the resource (the part at the end of the "read" URL for
+ that resource) but it can now contain a complete URL or even a partial URL (e.g. "Patient/123")
+ and can optionally contain a version (e.g. "Patient/123/_history/456"). New methods have
+ been added to this datatype which provide just the numeric portion. See the JavaDoc
+ for more information.
+
+
+ API CHANGE:]]>: Most elements in the HAPI FHIR model contain
+ a getId() and setId() method. This method is confusing because it is only actually used
+ for IDREF elements (which are rare) but its name makes it easy to confuse with more
+ important identifiers. For this reason, these methods have been deprocated and replaced with
+ get/setElementSpecificId() methods. The old methods will be removed at some point. Resource
+ types are unchanged and retain their get/setId methods.
+
+
+ Allow use of QuantityDt as a service parameter to support the "quantity" type. Previously
+ QuantityDt did not implement IQueryParameterType so it was not valid, and there was no way to
+ support quantity search parameters on the server (e.g. Observation.value-quantity)
+
+
+ Introduce StringParameter type which can be used as a RESTful operation search parameter
+ type. StringParameter allows ":exact" matches to be specified in clients, and handled in servers.
+
+
+ Parsers (XML/JSON) now support deleted entries in bundles
+
+
+ Transaction method now supported in servers
+
+
+ Support for Binary resources added (in servers, clients, parsers, etc.)
+
+
+ Support for Query resources fixed (in parser)
+
+
+ Nested contained resources (e.g. encoding a resource with a contained resource that itself contains a resource)
+ now parse and encode correctly, meaning that all contained resources are placed in the "contained" element
+ of the root resource, and the parser looks in the root resource for all container levels when stitching
+ contained resources back together.
+
+
+ Server methods with @Include parameter would sometimes fail when no _include was actually
+ specified in query strings.
+
+
+ Client requests for IdentifierDt types (such as Patient.identifier) did not create the correct
+ query string if the system is null.
+
+
+ Add support for paging responses from RESTful servers.
+
+
+ Don't fail on narrative blocks in JSON resources with only an XML declaration but no content (these are
+ produced by the Health Intersections server)
+
+
+ Server now automatically compresses responses if the client indicates support
+
+
+ Server failed to support optional parameters when type is String and :exact qualifier is used
+
+
+ Read method in client correctly populated resource ID in returned object
+
+
+ Support added for deleted-entry by/name, by/email, and comment from Tombstones spec
+
+
+
+
+