/** * Note if we use anything other than merge here, functionality from * {@link ome.security.basic.MergeEventListener} needs to be moved to * {@link UpdateFilter} or to another event listener. */ protected Long internalSave(IObject obj, ReloadFilter filter, Session session) { if (getBeanHelper().getLogger().isDebugEnabled()) { getBeanHelper().getLogger().debug(" Internal save. "); } IObject result = (IObject) filter.filter(null, obj); Long id = (Long) session.save(result); return id; }
@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; }