Work on #105 - Should have it working

This commit is contained in:
jamesagnew 2015-02-16 22:37:47 -05:00
parent e845ab7a40
commit 54be2634cd
6 changed files with 77 additions and 65 deletions

View File

@ -12,7 +12,7 @@
<bean class="ca.uhn.fhir.to.TesterConfig">
<property name="servers">
<list>
<value>home , DSTU2 , Local Server , http://localhost:8080/hapi-fhir-jpaserver-example/base</value>
<value>home , DSTU2 , Local Server , ${serverBase}/base</value>
</list>
</property>
</bean>

View File

@ -12,7 +12,7 @@
/WEB-INF/hapi-fhir-server-database-config.xml
/WEB-INF/hapi-fhir-server-config.xml
classpath:hapi-fhir-server-resourceproviders-dstu1.xml
classpath:hapi-fhir-server-resourceproviders-dev.xml
classpath:hapi-fhir-server-resourceproviders-dstu2.xml
/WEB-INF/hapi-fhir-tester-application-context.xml
/WEB-INF/hapi-fhir-tester-config.xml
</param-value>

View File

@ -1,9 +1,6 @@
package ca.uhn.fhir.to;
import static org.apache.commons.lang3.StringUtils.defaultIfEmpty;
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 static org.apache.commons.lang3.StringUtils.*;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@ -94,8 +91,8 @@ public class Controller {
private TemplateEngine myTemplateEngine;
@RequestMapping(value = { "/about" })
public String actionAbout(final HomeRequest theRequest, final ModelMap theModel) {
addCommonParams(theRequest, theModel);
public String actionAbout(HttpServletRequest theServletRequest, final HomeRequest theRequest, final ModelMap theModel) {
addCommonParams(theServletRequest, theRequest, theModel);
theModel.put("notHome", true);
theModel.put("extraBreadcrumb", "About");
@ -106,11 +103,11 @@ public class Controller {
}
@RequestMapping(value = { "/conformance" })
public String actionConformance(final HomeRequest theRequest, final BindingResult theBindingResult, final ModelMap theModel) {
addCommonParams(theRequest, theModel);
public String actionConformance(HttpServletRequest theServletRequest, final HomeRequest theRequest, final BindingResult theBindingResult, final ModelMap theModel) {
addCommonParams(theServletRequest, theRequest, theModel);
CaptureInterceptor interceptor = new CaptureInterceptor();
GenericClient client = theRequest.newClient(getContext(theRequest), myConfig, interceptor);
GenericClient client = theRequest.newClient(theServletRequest, getContext(theRequest), myConfig, interceptor);
ResultType returnsResource = ResultType.RESOURCE;
long start = System.currentTimeMillis();
@ -137,10 +134,10 @@ public class Controller {
@SuppressWarnings("unchecked")
@RequestMapping(value = { "/delete" })
public String actionDelete(HttpServletRequest theReq, HomeRequest theRequest, BindingResult theBindingResult, ModelMap theModel) {
addCommonParams(theRequest, theModel);
addCommonParams(theReq, theRequest, theModel);
CaptureInterceptor interceptor = new CaptureInterceptor();
GenericClient client = theRequest.newClient(getContext(theRequest), myConfig, interceptor);
GenericClient client = theRequest.newClient(theReq, getContext(theRequest), myConfig, interceptor);
RuntimeResourceDefinition def;
try {
@ -175,10 +172,10 @@ public class Controller {
@RequestMapping(value = { "/get-tags" })
public String actionGetTags(HttpServletRequest theReq, HomeRequest theRequest, BindingResult theBindingResult, ModelMap theModel) {
addCommonParams(theRequest, theModel);
addCommonParams(theReq, theRequest, theModel);
CaptureInterceptor interceptor = new CaptureInterceptor();
GenericClient client = theRequest.newClient(getContext(theRequest), myConfig, interceptor);
GenericClient client = theRequest.newClient(theReq, getContext(theRequest), myConfig, interceptor);
Class<? extends IResource> resType = null;
ResultType returnsResource = ResultType.TAGLIST;
@ -238,17 +235,17 @@ public class Controller {
@RequestMapping(value = { "/", "/home" })
public String actionHome(HttpServletRequest theServletRequest, final HomeRequest theRequest, final BindingResult theBindingResult, final ModelMap theModel) {
addCommonParams(theRequest, theModel);
addCommonParams(theServletRequest, theRequest, theModel);
ourLog.info(theServletRequest.toString());
return "home";
}
@RequestMapping(value = { "/page" })
public String actionPage(HttpServletRequest theReq, HomeRequest theRequest, BindingResult theBindingResult, ModelMap theModel) {
addCommonParams(theRequest, theModel);
addCommonParams(theReq, theRequest, theModel);
CaptureInterceptor interceptor = new CaptureInterceptor();
GenericClient client = theRequest.newClient(getContext(theRequest), myConfig, interceptor);
GenericClient client = theRequest.newClient(theReq, getContext(theRequest), myConfig, interceptor);
String url = defaultString(theReq.getParameter("page-url"));
if (!url.startsWith(theModel.get("base").toString())) {
@ -279,10 +276,10 @@ public class Controller {
@RequestMapping(value = { "/read" })
public String actionRead(HttpServletRequest theReq, HomeRequest theRequest, BindingResult theBindingResult, ModelMap theModel) {
addCommonParams(theRequest, theModel);
addCommonParams(theReq, theRequest, theModel);
CaptureInterceptor interceptor = new CaptureInterceptor();
GenericClient client = theRequest.newClient(getContext(theRequest), myConfig, interceptor);
GenericClient client = theRequest.newClient(theReq, getContext(theRequest), myConfig, interceptor);
RuntimeResourceDefinition def;
try {
@ -323,11 +320,11 @@ public class Controller {
}
@RequestMapping({ "/resource" })
public String actionResource(final ResourceRequest theRequest, final BindingResult theBindingResult, final ModelMap theModel) {
IResource conformance = addCommonParams(theRequest, theModel);
public String actionResource(HttpServletRequest theServletRequest, final ResourceRequest theRequest, final BindingResult theBindingResult, final ModelMap theModel) {
IResource conformance = addCommonParams(theServletRequest, theRequest, theModel);
CaptureInterceptor interceptor = new CaptureInterceptor();
GenericClient client = theRequest.newClient(getContext(theRequest), myConfig, interceptor);
GenericClient client = theRequest.newClient(null, getContext(theRequest), myConfig, interceptor);
String resourceName = theRequest.getResource();
RuntimeResourceDefinition def = getContext(theRequest).getResourceDefinition(theRequest.getResource());
@ -447,7 +444,7 @@ public class Controller {
@SuppressWarnings("unchecked")
@RequestMapping(value = { "/search" })
public String actionSearch(HttpServletRequest theReq, HomeRequest theRequest, BindingResult theBindingResult, ModelMap theModel) {
addCommonParams(theRequest, theModel);
addCommonParams(theReq, theRequest, theModel);
StringWriter clientCodeJsonStringWriter = new StringWriter();
JsonGenerator clientCodeJsonWriter = Json.createGenerator(clientCodeJsonStringWriter);
@ -456,7 +453,7 @@ public class Controller {
clientCodeJsonWriter.write("base", (String) theModel.get("base"));
CaptureInterceptor interceptor = new CaptureInterceptor();
GenericClient client = theRequest.newClient(getContext(theRequest), myConfig, interceptor);
GenericClient client = theRequest.newClient(theReq, getContext(theRequest), myConfig, interceptor);
IUntypedQuery search = client.search();
IQuery query;
@ -548,11 +545,11 @@ public class Controller {
}
@RequestMapping(value = { "/transaction" })
public String actionTransaction(final TransactionRequest theRequest, final BindingResult theBindingResult, final ModelMap theModel) {
addCommonParams(theRequest, theModel);
public String actionTransaction(HttpServletRequest theServletRequest, final TransactionRequest theRequest, final BindingResult theBindingResult, final ModelMap theModel) {
addCommonParams(theServletRequest, theRequest, theModel);
CaptureInterceptor interceptor = new CaptureInterceptor();
GenericClient client = theRequest.newClient(getContext(theRequest), myConfig, interceptor);
GenericClient client = theRequest.newClient(theServletRequest, getContext(theRequest), myConfig, interceptor);
String body = preProcessMessageBody(theRequest.getTransactionBody());
@ -599,13 +596,13 @@ public class Controller {
return "result";
}
private IResource addCommonParams(final HomeRequest theRequest, final ModelMap theModel) {
private IResource addCommonParams(HttpServletRequest theServletRequest, final HomeRequest theRequest, final ModelMap theModel) {
if (myConfig.getDebugTemplatesMode()) {
myTemplateEngine.getCacheManager().clearAllCaches();
}
final String serverId = theRequest.getServerIdWithDefault(myConfig);
final String serverBase = theRequest.getServerBase(myConfig);
final String serverBase = theRequest.getServerBase(theServletRequest, myConfig);
final String serverName = theRequest.getServerName(myConfig);
theModel.put("serverId", serverId);
theModel.put("base", serverBase);
@ -615,7 +612,7 @@ public class Controller {
theModel.put("pretty", theRequest.getPretty());
theModel.put("serverEntries", myConfig.getIdToServerName());
return loadAndAddConf(theRequest, theModel);
return loadAndAddConf(theServletRequest, theRequest, theModel);
}
private Header[] applyHeaderFilters(Header[] theAllHeaders) {
@ -634,10 +631,10 @@ public class Controller {
private void doActionCreateOrValidate(HttpServletRequest theReq, HomeRequest theRequest, BindingResult theBindingResult, ModelMap theModel, String theMethod) {
boolean validate = "validate".equals(theMethod);
addCommonParams(theRequest, theModel);
addCommonParams(theReq, theRequest, theModel);
CaptureInterceptor interceptor = new CaptureInterceptor();
GenericClient client = theRequest.newClient(getContext(theRequest), myConfig, interceptor);
GenericClient client = theRequest.newClient(theReq, getContext(theRequest), myConfig, interceptor);
Class<? extends IResource> type = null; // def.getImplementingClass();
if ("history-type".equals(theMethod)) {
@ -716,10 +713,10 @@ public class Controller {
}
private void doActionHistory(HttpServletRequest theReq, HomeRequest theRequest, BindingResult theBindingResult, ModelMap theModel, String theMethod, String theMethodDescription) {
addCommonParams(theRequest, theModel);
addCommonParams(theReq, theRequest, theModel);
CaptureInterceptor interceptor = new CaptureInterceptor();
GenericClient client = theRequest.newClient(getContext(theRequest), myConfig, interceptor);
GenericClient client = theRequest.newClient(theReq, getContext(theRequest), myConfig, interceptor);
String id = null;
Class<? extends IResource> type = null; // def.getImplementingClass();
@ -1009,20 +1006,20 @@ public class Controller {
return true;
}
private IResource loadAndAddConf(final HomeRequest theRequest, final ModelMap theModel) {
private IResource loadAndAddConf(HttpServletRequest theServletRequest, final HomeRequest theRequest, final ModelMap theModel) {
switch (theRequest.getFhirVersion(myConfig)) {
case DEV:
return loadAndAddConfDev(theRequest, theModel);
return loadAndAddConfDev(theServletRequest, theRequest, theModel);
case DSTU1:
return loadAndAddConfDstu1(theRequest, theModel);
return loadAndAddConfDstu1(theServletRequest, theRequest, theModel);
case DSTU2:
return loadAndAddConfDev(theRequest, theModel);
return loadAndAddConfDev(theServletRequest, theRequest, theModel);
}
throw new IllegalStateException("Unknown version: " + theRequest.getFhirVersion(myConfig));
}
private Conformance loadAndAddConfDstu1(final HomeRequest theRequest, final ModelMap theModel) {
IGenericClient client = getContext(theRequest).newRestfulGenericClient(theRequest.getServerBase(myConfig));
private Conformance loadAndAddConfDstu1(HttpServletRequest theServletRequest, final HomeRequest theRequest, final ModelMap theModel) {
IGenericClient client = getContext(theRequest).newRestfulGenericClient(theRequest.getServerBase(theServletRequest, myConfig));
Conformance conformance;
try {
@ -1080,8 +1077,8 @@ public class Controller {
return conformance;
}
private IResource loadAndAddConfDev(final HomeRequest theRequest, final ModelMap theModel) {
IGenericClient client = getContext(theRequest).newRestfulGenericClient(theRequest.getServerBase(myConfig));
private IResource loadAndAddConfDev(HttpServletRequest theServletRequest, final HomeRequest theRequest, final ModelMap theModel) {
IGenericClient client = getContext(theRequest).newRestfulGenericClient(theRequest.getServerBase(theServletRequest, myConfig));
ca.uhn.fhir.model.dstu2.resource.Conformance conformance;
try {

View File

@ -1,7 +1,8 @@
package ca.uhn.fhir.to.model;
import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank;
import static org.apache.commons.lang3.StringUtils.*;
import javax.servlet.http.HttpServletRequest;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpRequestBase;
@ -38,12 +39,23 @@ public class HomeRequest {
return myResource;
}
public String getServerBase(TesterConfig theConfig) {
public String getServerBase(HttpServletRequest theRequest, TesterConfig theConfig) {
String retVal;
if (isBlank(myServerId) && !theConfig.getIdToServerBase().containsKey(myServerId)) {
return theConfig.getIdToServerBase().entrySet().iterator().next().getValue();
retVal = theConfig.getIdToServerBase().entrySet().iterator().next().getValue();
} else {
return theConfig.getIdToServerBase().get(myServerId);
retVal = theConfig.getIdToServerBase().get(myServerId);
}
if (retVal.contains("${serverBase}")) {
String base = theRequest.getRequestURL().toString();
if (base.endsWith("/")) {
base = base.substring(0, base.length() - 1);
}
retVal = retVal.replace("${serverBase}", base);
}
return retVal;
}
@ModelAttribute("serverId")
@ -91,32 +103,32 @@ public class HomeRequest {
myServerId = theServerId;
}
public GenericClient newClient(FhirContext theContext, TesterConfig theConfig, Controller.CaptureInterceptor theInterceptor) {
GenericClient retVal = (GenericClient) theContext.newRestfulGenericClient(getServerBase(theConfig));
public GenericClient newClient(HttpServletRequest theRequest, FhirContext theContext, TesterConfig theConfig, Controller.CaptureInterceptor theInterceptor) {
GenericClient retVal = (GenericClient) theContext.newRestfulGenericClient(getServerBase(theRequest, theConfig));
retVal.setKeepResponses(true);
if ("true".equals(getPretty())) {
retVal.setPrettyPrint(true);
} else if ("false".equals(getPretty())) {
retVal.setPrettyPrint(false);
}
if ("xml".equals(getEncoding())) {
retVal.setEncoding( EncodingEnum.XML);
retVal.setEncoding(EncodingEnum.XML);
} else if ("json".equals(getEncoding())) {
retVal.setEncoding( EncodingEnum.JSON);
}
retVal.setEncoding(EncodingEnum.JSON);
}
retVal.registerInterceptor(theInterceptor);
final String remoteAddr = org.slf4j.MDC.get("req.remoteAddr");
retVal.registerInterceptor(new IClientInterceptor() {
@Override
public void interceptResponse(HttpResponse theRequest) {
// nothing
}
@Override
public void interceptRequest(HttpRequestBase theRequest) {
if (isNotBlank(remoteAddr)) {
@ -124,17 +136,15 @@ public class HomeRequest {
}
}
});
return retVal;
}
public IParser newParser(FhirContext theCtx) {
if ("json".equals(getEncoding())) {
return theCtx.newJsonParser();
}
}
return theCtx.newXmlParser();
}
}

8
vagrant/Vagrantfile vendored
View File

@ -84,7 +84,8 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
base_version: 7,
proxy_port: 80,
# ssl_port: 443,
authbind: 'yes'
authbind: 'yes',
java_options: '-Dfhir.logdir=/var/log/fhir -Dfhir.db.location=/var/fhirdb'
},
mysql: {
version: '5.6',
@ -107,6 +108,11 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
FileUtils.cp(f, 'build')
end
config.vm.provision 'shell', inline: 'mkdir /var/log/fhir'
config.vm.provision 'shell', inline: 'chmod 777 /var/log/fhir'
config.vm.provision 'shell', inline: 'mkdir /var/fhirdb'
config.vm.provision 'shell', inline: 'chmod 777 /var/fhirdb'
# puts "Deploying any/all built .war files.""
config.vm.provision 'shell', inline: 'cp /build/*.war /var/lib/tomcat7/webapps'

View File

@ -43,7 +43,6 @@ v0.15.4 (2014-02-18)
### Bug
- **[COOK-4257](https://tickets.opscode.com/browse/COOK-4257)** - tomcat: broken on SmartOS SmartMachine images 13.3.0+
- **[COOK-4097](https://tickets.opscode.com/browse/COOK-4097)** - default["tomcat"]["keytool"] is set to non-existent file on Debian/Ubuntu
v0.15.2