Package ca.uhn.fhir.rest.client

Examples of ca.uhn.fhir.rest.client.GenericClient$OutcomeResponseHandler


    if (DEBUGMODE) {
      myTemplateEngine.getCacheManager().clearAllCaches();
    }

    try {
      GenericClient client = (GenericClient) myCtx.newRestfulGenericClient(myServerBase);
      client.setKeepResponses(true);
      String method = theReq.getParameter("method");

      String prettyParam = theReq.getParameter("configPretty");
      if ("on".equals(prettyParam)) {
        client.setPrettyPrint(true);
      }
      if ("xml".equals(theReq.getParameter("configEncoding"))) {
        client.setEncoding(EncodingEnum.XML);
      } else if ("json".equals(theReq.getParameter("configEncoding"))) {
        client.setEncoding(EncodingEnum.JSON);
      }

      String requestUrl;
      String action;
      String resultStatus;
      String resultBody;
      String resultSyntaxHighlighterClass;
      boolean returnsResource;

      try {
        if ("conformance".equals(method)) {
          returnsResource = true;
          client.conformance();
        } else if ("read".equals(method)) {
          RuntimeResourceDefinition def = getResourceType(theReq);
          String id = StringUtils.defaultString(theReq.getParameter("id"));
          if (StringUtils.isBlank(id)) {
            theResp.sendError(Constants.STATUS_HTTP_400_BAD_REQUEST, "No ID specified");
          }
          returnsResource = true;

          client.read(def.getImplementingClass(), new IdDt(id));

        } else if ("vread".equals(method)) {
          RuntimeResourceDefinition def = getResourceType(theReq);
          String id = StringUtils.defaultString(theReq.getParameter("id"));
          if (StringUtils.isBlank(id)) {
            theResp.sendError(Constants.STATUS_HTTP_400_BAD_REQUEST, "No ID specified");
          }

          String versionId = StringUtils.defaultString(theReq.getParameter("versionid"));
          if (StringUtils.isBlank(versionId)) {
            theResp.sendError(Constants.STATUS_HTTP_400_BAD_REQUEST, "No Version ID specified");
          }
          returnsResource = true;

          client.vread(def.getImplementingClass(), new IdDt(id), new IdDt(versionId));

        } else if ("delete".equals(method)) {
          RuntimeResourceDefinition def = getResourceType(theReq);
          String id = StringUtils.defaultString(theReq.getParameter("id"));
          if (StringUtils.isBlank(id)) {
            theResp.sendError(Constants.STATUS_HTTP_400_BAD_REQUEST, "No ID specified");
          }

          returnsResource = false;

          client.delete(def.getImplementingClass(), new IdDt(id));

        } else if ("history-instance".equals(method)) {
          RuntimeResourceDefinition def = getResourceType(theReq);
          String id = StringUtils.defaultString(theReq.getParameter("id"));
          if (StringUtils.isBlank(id)) {
            theResp.sendError(Constants.STATUS_HTTP_400_BAD_REQUEST, "No ID specified");
          }

          returnsResource = false;

          client.history(def.getImplementingClass(), new IdDt(id));

        } else if ("create".equals(method)) {
          RuntimeResourceDefinition def = getResourceType(theReq);
          String resourceText = StringUtils.defaultString(theReq.getParameter("resource"));
          if (StringUtils.isBlank(resourceText)) {
            theResp.sendError(Constants.STATUS_HTTP_400_BAD_REQUEST, "No resource content specified");
          }

          IResource resource;
          if (client.getEncoding() == null || client.getEncoding() == EncodingEnum.XML) {
            resource = myCtx.newXmlParser().parseResource(def.getImplementingClass(), resourceText);
          } else {
            resource = myCtx.newJsonParser().parseResource(def.getImplementingClass(), resourceText);
          }
          returnsResource = false;

          client.create(resource);

        } else if ("validate".equals(method)) {
          RuntimeResourceDefinition def = getResourceType(theReq);
          String resourceText = StringUtils.defaultString(theReq.getParameter("resource"));
          if (StringUtils.isBlank(resourceText)) {
            theResp.sendError(Constants.STATUS_HTTP_400_BAD_REQUEST, "No resource content specified");
          }

          IResource resource;
          if (client.getEncoding() == null || client.getEncoding() == EncodingEnum.XML) {
            resource = myCtx.newXmlParser().parseResource(def.getImplementingClass(), resourceText);
          } else {
            resource = myCtx.newJsonParser().parseResource(def.getImplementingClass(), resourceText);
          }
          returnsResource = false;

          client.validate(resource);

        } else if ("update".equals(method)) {
          RuntimeResourceDefinition def = getResourceType(theReq);
          String resourceText = StringUtils.defaultString(theReq.getParameter("resource"));
          if (StringUtils.isBlank(resourceText)) {
            theResp.sendError(Constants.STATUS_HTTP_400_BAD_REQUEST, "No resource content specified");
          }

          String id = StringUtils.defaultString(theReq.getParameter("id"));
          if (StringUtils.isBlank(id)) {
            theResp.sendError(Constants.STATUS_HTTP_400_BAD_REQUEST, "No ID specified");
          }

          IResource resource;
          if (client.getEncoding() == null || client.getEncoding() == EncodingEnum.XML) {
            resource = myCtx.newXmlParser().parseResource(def.getImplementingClass(), resourceText);
          } else {
            resource = myCtx.newJsonParser().parseResource(def.getImplementingClass(), resourceText);
          }
          returnsResource = false;

          client.update(new IdDt(id), resource);

        } else if ("searchType".equals(method)) {
          Map<String, List<IQueryParameterType>> params = new HashMap<String, List<IQueryParameterType>>();

          HashSet<String> hashSet = new HashSet<String>(theReq.getParameterMap().keySet());
          String paramName = null;
          IQueryParameterType paramValue = null;
          while (hashSet.isEmpty() == false) {

            String nextKey = hashSet.iterator().next();
            String nextValue = theReq.getParameter(nextKey);
            paramName = null;
            paramValue = null;

            if (nextKey.startsWith("param.token.")) {
              int prefixLength = "param.token.".length();
              paramName = nextKey.substring(prefixLength + 2);
              String systemKey = "param.token." + "1." + paramName;
              String valueKey = "param.token." + "2." + paramName;
              String system = theReq.getParameter(systemKey);
              String value = theReq.getParameter(valueKey);
              paramValue = new IdentifierDt(system, value);
              hashSet.remove(systemKey);
              hashSet.remove(valueKey);
            } else if (nextKey.startsWith("param.string.")) {
              paramName = nextKey.substring("param.string.".length());
              paramValue = new StringDt(nextValue);
            }

            if (paramName != null) {
              if (params.containsKey(paramName) == false) {
                params.put(paramName, new ArrayList<IQueryParameterType>());
              }
              params.get(paramName).add(paramValue);
            }

            hashSet.remove(nextKey);
          }

          RuntimeResourceDefinition def = getResourceType(theReq);

          returnsResource = false;
          client.search(def.getImplementingClass(), params);

        } else {
          theResp.sendError(Constants.STATUS_HTTP_400_BAD_REQUEST, "Invalid method: " + method);
          return;
        }
      } catch (BaseServerResponseException e) {
        ourLog.error("Failed to invoke method", e);
        returnsResource = false;
      }

      HttpRequestBase lastRequest = client.getLastRequest();
      String requestBody = null;
      String requestSyntaxHighlighterClass = null;

      if (lastRequest instanceof HttpEntityEnclosingRequest) {
        HttpEntityEnclosingRequest lastEERequest = (HttpEntityEnclosingRequest) lastRequest;
        HttpEntity lastEE = lastEERequest.getEntity();
        if (lastEE.isRepeatable()) {
          StringWriter requestCapture = new StringWriter();
          lastEE.writeTo(new WriterOutputStream(requestCapture, "UTF-8"));
          requestBody = requestCapture.toString();
          ContentType ct = ContentType.get(lastEE);
          String mimeType = ct.getMimeType();
          EncodingEnum ctEnum = EncodingEnum.forContentType(mimeType);
          if (ctEnum == null) {
            requestSyntaxHighlighterClass = "brush: plain";
          } else {
            switch (ctEnum) {
            case JSON:
              requestSyntaxHighlighterClass = "brush: jscript";
              break;
            case XML:
            default:
              requestSyntaxHighlighterClass = "brush: xml";
              break;
            }
          }
        }
      }
      requestUrl = lastRequest.getURI().toASCIIString();
      action = client.getLastRequest().getMethod();
      resultStatus = client.getLastResponse().getStatusLine().toString();
      resultBody = client.getLastResponseBody();

      HttpResponse lastResponse = client.getLastResponse();
      ContentType ct = ContentType.get(lastResponse.getEntity());
      String mimeType = ct != null ? ct.getMimeType() : null;
      EncodingEnum ctEnum = EncodingEnum.forContentType(mimeType);
      String narrativeString = "";
View Full Code Here

TOP

Related Classes of ca.uhn.fhir.rest.client.GenericClient$OutcomeResponseHandler

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.