package http.resource; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.util.Map; import javax.servlet.http.HttpServletRequest; import nebula.data.DataRepos; import nebula.data.DataStore; import nebula.data.Entity; import nebula.data.impl.EditableEntity; import nebula.data.json.DataHelper; import nebula.lang.NebulaNative; import nebula.lang.RuntimeContext; import nebula.lang.Type; public class AttachedEntityNewResouce extends AbstractResouce { private final DataHelper<Entity, Reader, Writer> jsonHolder; // private final Broker<DataStore<Entity>> datastoreHolder; final RuntimeContext context; final DataRepos dataRepos; final Type typeBroker; final String attachedToTypeName; final String attachToID; public AttachedEntityNewResouce(final RuntimeContext context, final DataRepos dataRepos, DataHelper<Entity, Reader, Writer> json, Type typeBroker, DataStore<Entity> datas, final String attachedToTypeName, final String attachToID) { super("text/json", 0, 0); this.jsonHolder = json; this.context = context; this.dataRepos = dataRepos; this.typeBroker = typeBroker; this.attachedToTypeName = attachedToTypeName; this.attachToID = attachToID; } @Override protected void get(HttpServletRequest req) throws IOException { Entity data = new EditableEntity(); for (Map.Entry<String, String[]> entry : req.getParameterMap().entrySet()) { data.put(entry.getKey(), entry.getValue()[0]); } NebulaNative.ctor(context, dataRepos, data, typeBroker); // long newModified = (Long) data.get("LastModified_"); // if (newModified == this.lastModified) return; /* * StringBuilder sb = new StringBuilder(); sb.append('{'); for * (Map.Entry<String, String[]> entry : * req.getParameterMap().entrySet()) { sb.append('\"'); * sb.append(entry.getKey()); sb.append('\"'); sb.append(':'); * sb.append('\"'); sb.append(entry.getValue()[0]); sb.append('\"'); * sb.append(','); } sb.setCharAt(sb.length() - 1, '}'); */ ByteArrayOutputStream bout = null; try { bout = new ByteArrayOutputStream(); Writer write = new OutputStreamWriter(bout); jsonHolder.stringifyTo(data, new OutputStreamWriter(bout)); write.flush(); // this.lastModified = newModified; this.cache = bout.toByteArray(); } finally { try { if (bout != null) bout.close(); } catch (Exception e) { } } } @Override protected void put(HttpServletRequest req) throws IOException { throw new RuntimeException("Cann't find object "); } @Override protected void delete(HttpServletRequest req) { throw new RuntimeException("Cann't find object "); } }