Exemple #1
0
    @SuppressWarnings({"UnusedDeclaration"})
    @GET
    public String getBasic(
        @Context UriInfo info,
        @QueryParam("pId") @DefaultValue("") String pId,
        @QueryParam("context") @DefaultValue("") String ctx,
        @QueryParam("name") @DefaultValue("") String name,
        @QueryParam("value") @DefaultValue("") String value,
        @QueryParam("query") @DefaultValue("pUrl") String query,
        @QueryParam("arg") @DefaultValue("") String arg,
        @QueryParam("twoPhaseAware") @DefaultValue("true") String twoPhaseAware,
        @QueryParam("isVolatile") @DefaultValue("false") String isVolatileParticipant,
        @QueryParam("register") @DefaultValue("true") String register) {
      Work work = faults.get(pId);
      String res = null;
      boolean isVolatile = "true".equals(isVolatileParticipant);
      boolean isTwoPhaseAware = "true".equals(twoPhaseAware);

      if (name.length() != 0) {
        if (value.length() != 0) {
          if (work == null) {
            work =
                makeWork(
                    new TxSupport(),
                    TxSupport.extractUri(info),
                    String.valueOf(++pid),
                    null,
                    null,
                    isTwoPhaseAware,
                    isVolatile,
                    null,
                    null);
            work.oldState.put(name, value);
            faults.put(work.id, work);
            return work.id;
          }

          work.newState.put(name, value);
        }

        if (work != null) {
          if ("syncCount".equals(name)) res = String.valueOf(work.syncCount);
          else if ("commitCnt".equals(name)) res = String.valueOf(work.commitCnt);
          else if ("prepareCnt".equals(name)) res = String.valueOf(work.prepareCnt);
          else if ("rollbackCnt".equals(name)) res = String.valueOf(work.rollbackCnt);
          else if ("commmitOnePhaseCnt".equals(name)) res = String.valueOf(work.commmitOnePhaseCnt);
          else if (work.inTxn()) res = work.newState.get(name);
          else res = work.oldState.get(name);
        }
      }

      if (work == null) throw new WebApplicationException(HttpURLConnection.HTTP_NOT_FOUND);

      if ("move".equals(query))
        res = moveParticipant(work, arg, register, isTwoPhaseAware, isVolatile);
      else if ("recoveryUrl".equals(query)) res = work.recoveryUrl;
      else if ("status".equals(query)) res = work.status;
      else if (res == null) res = work.pLinks;

      return res; // null will generate a 204 status code (no content)
    }