@Override protected boolean payload(AppendableByteWriter<?> payload, GraphManager gm, ChannelReader params, HTTPVerbDefaults verb) { jsonRenderer.render(payload, params.structured()); return true; }
public boolean jsonRestRequest(HTTPRequestReader request) { //this check is to postpone the work if the network has become saturated if (responseService.hasRoomFor(1)) { //NOTE: this is only done here for the framework test // in a normal production deployment this JSONRender will only // be created once and held as a member. JSONRenderer<HTTPRequestReader> renderJSON = new JSONRenderer<HTTPRequestReader>() .startObject() .string(messageBytes, (o,t) -> t.write(FrameworkTest.payload) ) .endObject(); return responseService.publishHTTPResponse(request, HTTPContentTypeDefaults.JSON, w -> renderJSON.render(w,request) ); } else { return false; } }
private static void readData(AppendableByteWriter<?> target) throws SQLException { Connection connection = getDBConnection(); Statement stmt = null; try { stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("select * from PERSON"); while (rs.next()) { jsonRenderer.render(target, rs); target.append('\n'); } stmt.close(); connection.commit(); } catch (SQLException e) { logger.info("unable to read",e); } catch (Exception e) { logger.info("unable to read",e); } finally { connection.close(); } }
JSONObject<HTTPRouterStageConfig, HTTPRouterStageConfig, JSONObject<HTTPRouterStageConfig, HTTPRouterStageConfig, JSONRenderer<HTTPRouterStageConfig>>> paths = new JSONRenderer<HTTPRouterStageConfig>() .startObject() .string("openapi".getBytes(),(f,w)->{w.write("3.0.1".getBytes());}) .startObject("paths"); rend.render(builder, this); return builder.toBytes();//NOTE: may want to return builder instead?
private boolean publishMultiResponseDBUpdate(long conId, long seqCode) { boolean result = service.publishHTTPResponse(conId, seqCode, 200, HTTPContentTypeDefaults.JSON, w-> { Templates.multiTemplate.render(w, collectorDBUpdate); int c = collectorDBUpdate.size(); while (--c>=0) { assert(collectorDBUpdate.get(c).getConnectionId() == conId); assert(collectorDBUpdate.get(c).getSequenceId() == seqCode); collectorDBUpdate.get(c).setStatus(-1); } collectorDBUpdate.clear(); DBUpdateInFlight.publishTailPosition(); }); collectionPendingDBUpdate = !result; return result; }
@Override public boolean restRequest(HTTPRequestReader request) { StructuredReader record = request.structured(); int age = record.readInt(Field.PERSON_AGE); isLegal = age>=21; name.setLength(0); record.readText(Field.PERSON_NAME, name); return responseService.publishHTTPResponse(request, 200, HTTPContentTypeDefaults.JSON, w-> { jsonRenderer.render(w, this); }); }
public boolean productQuery(HTTPRequestReader request) { selectedId = request.structured().readInt(Field.ID); return responseService.publishHTTPResponse(request, 200, HTTPContentTypeDefaults.JSON, w-> renderSelected.render(w, this)); }
public boolean productAll(HTTPRequestReader request) { return responseService.publishHTTPResponse(request, 200, HTTPContentTypeDefaults.JSON, w-> { w.append('['); boolean isFirst = true; for(int i = 0; i<names.length; i++) { if (names[i].length()>0) { if (!isFirst) { w.append(",\n"); } isFirst=false; selectedId = i; renderSelected.render(w, this); } } w.append(']'); }); }
private boolean publishMultiDBResponse(long conId, long seqCode) { final boolean result = service.publishHTTPResponse(conId, seqCode, 200, HTTPContentTypeDefaults.JSON, w-> { Templates.multiTemplateDBRest.render(w, collectorDBRest); int c = collectorDBRest.size(); assert(collectorDBRest.get(0).getGroupSize()==c); while (--c >= 0) { assert(collectorDBRest.get(0).getGroupSize()==collectorDBRest.size()); assert(collectorDBRest.get(c).getConnectionId() == conId) : c+" expected conId "+conId+" error: "+showCollection(collectorDBRest); assert(collectorDBRest.get(c).getSequenceId() == seqCode) : c+" sequence error: "+showCollection(collectorDBRest); collectorDBRest.get(c).setStatus(-1); } collectorDBRest.clear(); DBRestInFlight.publishTailPosition(); }); collectionPendingDBRest = !result; return result; }
public void renderWithLengthPrefix(T source, ChannelWriter target) { int startPos = target.absolutePosition(); target.writeShort(-1);//hold these 2 for later int startTextPos = target.absolutePosition(); render(target, source); int stopTextPos = target.absolutePosition(); int length = stopTextPos-startTextPos; if (length>Short.MAX_VALUE) { throw new ArrayIndexOutOfBoundsException(); } target.absolutePosition(startPos); target.writeShort(length); //set the actual length now that we know. target.absolutePosition(stopTextPos); }
public void renderWithLengthPrefix(T source, ChannelWriter target) { int startPos = target.absolutePosition(); target.writeShort(-1);//hold these 2 for later int startTextPos = target.absolutePosition(); render(target, source); int stopTextPos = target.absolutePosition(); int length = stopTextPos-startTextPos; if (length>Short.MAX_VALUE) { throw new ArrayIndexOutOfBoundsException(); } target.absolutePosition(startPos); target.writeShort(length); //set the actual length now that we know. target.absolutePosition(stopTextPos); }
@Override public boolean restRequest(HTTPRequestReader request) { if (request.isVerbPost()) { request.openPayloadData((reader)->{ console.append("POST: "); reader.readUTFOfLength(reader.available(),console); }); } //if this can not be published then we will get the request again later to be reattempted. return cmd.publishHTTPResponse(request, 200, false, HTTPContentTypeDefaults.TXT, (writer)-> { renderer.render(writer, this); }); }
private boolean consumeResultObjectDBRest(final ResultObject t) { boolean ok; /////////////////////////////// if (0 == t.getGroupSize()) { ok = service.publishHTTPResponse(t.getConnectionId(), t.getSequenceId(), 200, HTTPContentTypeDefaults.JSON, w-> { Templates.singleTemplateDBRest.render(w, t); t.setStatus(-1); DBRestInFlight.moveTailForward();//only move forward when it is consumed. DBRestInFlight.publishTailPosition(); }); } else { //collect all the objects assert(isValidToAdd(t, collectorDBRest)); collectorDBRest.add(t); DBRestInFlight.moveTailForward(); if (collectorDBRest.size() == t.getGroupSize()) { //now ready to send, we have all the data ok =publishMultiDBResponse(t.getConnectionId(), t.getSequenceId()); } else { ok = true;//added to list } //moved forward so we can read next but write logic will still be blocked by state not -1 } return ok; }