public <T> T getClonedVersion(final Class<T> clazz, final Object originalId) { return IdentityExecutionUtils.runOperationByIdentifier(new IdentityOperation<T, RuntimeException>() { @Override @SuppressWarnings("unchecked") public T execute() { Object cloneId = getEquivalentId(clazz.getName(), originalId); if (cloneId == null) { return null; } return (T) genericEntityService.readGenericEntity(clazz.getName(), cloneId); } }, getToSite(), getToSite(), getToCatalog()); }
/** * Saves the specified object in the toSite and toCatalog of the given context. * * @param context * @param object * @return the saved entity * @throws ServiceException */ protected <T> T save(MultiTenantCopyContext context, final T object) throws ServiceException { return IdentityExecutionUtils.runOperationByIdentifier(new IdentityOperation<T, ServiceException>() { @Override public T execute() throws ServiceException { return genericEntityService.save(object); } }, context.getToSite(), context.getToSite(), context.getToCatalog()); }
protected BroadleafRequestContext setupContext() { BroadleafRequestContext context = BroadleafRequestContext.getBroadleafRequestContext(); context.setCurrentCatalog(getToCatalog()); context.setCurrentProfile(getToSite()); context.setSite(getToSite()); return context; }
protected void persistNode(final Object copy, final MultiTenantCopyContext context) { if (!genericEntityService.sessionContains(copy) && !genericEntityService.idAssigned(copy)) { final Object original = genericEntityService.readGenericEntity(copy.getClass().getName(), context.removeOriginalIdentifier(copy)); extensionManager.getProxy().transformCopy(context, original, copy); extensionManager.getProxy().prepareForSave(context, original, copy); IdentityExecutionUtils.runOperationByIdentifier(new IdentityOperation<Void, RuntimeException>() { @Override public Void execute() { genericEntityService.persist(copy); extensionManager.getProxy().postSave(context, original, copy); return null; } }, context.getToSite(), context.getToSite(), context.getToCatalog()); context.storeEquivalentMapping(original.getClass().getName(), context.getIdentifier(original), context.getIdentifier(copy)); } }