@RolesAllowed("user") public void saveObject(IObject graph) { doAction(graph, new UpdateAction<IObject>() { @Override public IObject run(IObject value, UpdateFilter filter, Session s) { return internalMerge(value, filter, s); } }); }
@RolesAllowed("user") public IObject saveAndReturnObject(IObject graph) { return doAction(graph, new UpdateAction<IObject>() { @Override public IObject run(IObject value, UpdateFilter filter, Session s) { return internalMerge(value, filter, s); } }); }
@RolesAllowed("user") public void saveArray(IObject[] graph) { doAction(graph, new UpdateAction<IObject[]>() { @Override public IObject[] run(IObject[] value, UpdateFilter filter, Session s) { IObject[] copy = new IObject[value.length]; for (int i = 0; i < value.length; i++) { copy[i] = internalMerge(value[i], filter, s); } return copy; } }); }
@RolesAllowed("user") public IObject[] saveAndReturnArray(IObject[] graph) { return doAction(graph, new UpdateAction<IObject[]>() { @Override public IObject[] run(IObject[] value, UpdateFilter filter, Session s) { IObject[] copy = new IObject[value.length]; for (int i = 0; i < value.length; i++) { copy[i] = internalMerge(value[i], filter, s); } return copy; } }); }
private <T> T doAction(final T graph, final UpdateAction<T> action) { final UpdateFilter filter = new UpdateFilter(); return doAction(graph, filter, action); }
@RolesAllowed("user") public void saveCollection(Collection graph) { doAction(graph, new UpdateAction<Collection>() { @Override public Collection run(Collection value, UpdateFilter filter, Session s) { for (Object o : value) { IObject obj = (IObject) o; obj = internalMerge(obj, filter, s); } return null; } }); }
@RolesAllowed("user") public List<Long> saveAndReturnIds(IObject[] graph) { if (graph == null || graph.length == 0) { return Collections.emptyList(); // EARLY EXIT! } final List<Long> ids = new ArrayList<Long>(graph.length); final ReloadFilter filter = new ReloadFilter(session()); doAction(graph, filter, new UpdateAction<IObject[]>() { @Override public IObject[] run(IObject[] value, UpdateFilter filter, Session s) { for (int i = 0; i < value.length; i++) { ids.add(i, internalSave(value[i], (ReloadFilter) filter, s)); } return null; } }); return ids; }
@RolesAllowed("user") public void deleteObject(IObject row) { if (row == null) { return; } if (row.getId() == null) { throw new ApiUsageException( "Non-managed IObject entity cannot be deleted. Must have an id."); } try { doAction(row, new UpdateAction<IObject>() { @Override public IObject run(IObject value, UpdateFilter filter, Session s) { internalDelete(value, filter, s); return null; } }); } catch (InvalidDataAccessApiUsageException idaaue) { throw new ApiUsageException("Cannot delete " + row + "\n" + "Original message: " + idaaue.getMessage() + "\n" + "Consider using IDelete instead."); } }