@Override protected String doPostCommitProcessing(FacesContext context, String outcome) { clearUpload(); // as we were successful, go to the set properties dialog if asked // to otherwise just return if (this.showOtherProperties) { // check whether the created node is checked out, if a 'check out' // rule is present in the space the new node will be and an // attempt to modify the properties will cause an error (ALF-438) if (getNodeService().hasAspect(this.createdNode, ContentModel.ASPECT_LOCKABLE)) { Utils.addErrorMessage( Application.getMessage(FacesContext.getCurrentInstance(), MSG_NODE_LOCKED)); return outcome; } else { // we are going to immediately edit the properties so we need // to setup the BrowseBean context appropriately this.browseBean.setDocument(new Node(this.createdNode)); return "dialog:setContentProperties"; } } else { return outcome; } }
/** @param p The person context to set. */ public void setPerson(final Node p) { // perform the set in a txn as certain bean calls require it FacesContext context = FacesContext.getCurrentInstance(); RetryingTransactionHelper txnHelper = Repository.getRetryingTransactionHelper(context); RetryingTransactionCallback callback = new RetryingTransactionCallback() { public Object execute() throws Throwable { person = p; userName = (String) person.getProperties().get(ContentModel.PROP_USERNAME); // rebuild the property immutability map helper object immutabilty = new PropertyImmutabilityMap( getUserRegistrySynchronizer().getPersonMappedProperties(userName)); return null; } }; try { txnHelper.doInTransaction(callback, false); } catch (Throwable e) { // reset the flag so we can re-attempt the operation if (e instanceof ReportedException == false) { Utils.addErrorMessage(e.getMessage(), e); } ReportedException.throwIfNecessary(e); } }
public boolean checkTenantUserName() { try { this.userName = PersonServiceImpl.updateUsernameForTenancy(this.userName, getTenantService()); return true; } catch (TenantDomainMismatchException e) { Utils.addErrorMessage( MessageFormat.format( Application.getMessage(FacesContext.getCurrentInstance(), ERROR_DOMAIN_MISMATCH), e.getTenantA(), e.getTenantB())); return false; } }
/** * Checkout document to the same space as original one and then add the OFFLINE_EDITING property. */ private void checkoutFile(Node node) { UserTransaction tx = null; FacesContext context = FacesContext.getCurrentInstance(); if (node != null) { try { tx = Repository.getUserTransaction(context, false); tx.begin(); if (logger.isDebugEnabled()) logger.debug("Trying to checkout content node Id: " + node.getId()); NodeRef workingCopyRef = null; // checkout the content to the current space workingCopyRef = property.getVersionOperationsService().checkout(node.getNodeRef()); getNodeService() .setProperty(workingCopyRef, ContentModel.PROP_WORKING_COPY_MODE, OFFLINE_EDITING); // set the working copy Node instance Node workingCopy = new Node(workingCopyRef); property.setWorkingDocument(workingCopy); // create content URL to the content download servlet with ID and // expected filename String url = DownloadContentServlet.generateDownloadURL(workingCopyRef, workingCopy.getName()); workingCopy.getProperties().put("url", url); workingCopy .getProperties() .put("fileType32", FileTypeImageUtils.getFileTypeImage(workingCopy.getName(), false)); // commit the transaction tx.commit(); } catch (Throwable err) { try { if (tx != null) { tx.rollback(); } } catch (Exception tex) { } Utils.addErrorMessage( Application.getMessage(FacesContext.getCurrentInstance(), MSG_ERROR_CHECKOUT) + err.getMessage(), err); } } else { logger.warn("WARNING: checkoutFile called without a current Document!"); } }
@Override protected String finishImpl(FacesContext context, String outcome) throws Throwable { // TODO: implement create new Person object from specified details try { if (!this.password.equals(this.confirm)) { Utils.addErrorMessage(Application.getMessage(context, UsersDialog.ERROR_PASSWORD_MATCH)); outcome = null; } if (checkTenantUserName() == false) { outcome = null; } if (outcome != null) { // create properties for Person type from submitted Form data Map<QName, Serializable> props = new HashMap<QName, Serializable>(7, 1.0f); setPersonPropertiesAndCreateHomeSpaceIfNeeded(props, null, context); // create the node to represent the Person getPersonService().createPerson(props); // ensure the user can access their own Person object // getPermissionService().setPermission(newPerson, this.userName, // getPermissionService().getAllPermission(), true); // Not required - now done by the person service. if (logger.isDebugEnabled()) logger.debug("Created Person node for username: "******"Created User Authentication instance for username: " + this.userName); if ((this.sizeQuota != null) && (this.sizeQuota < 0L)) { Utils.addErrorMessage( MessageFormat.format( Application.getMessage(context, UsersDialog.ERROR_NEGATIVE_QUOTA), this.sizeQuota)); outcome = null; } else { putSizeQuotaProperty(this.userName, this.sizeQuota, this.sizeQuotaUnits); } } invalidateUserList(); } catch (Throwable e) { Utils.addErrorMessage( MessageFormat.format( Application.getMessage(FacesContext.getCurrentInstance(), ERROR), e.getMessage()), e); outcome = null; this.isFinished = false; ReportedException.throwIfNecessary(e); } if (outcome == null) { this.isFinished = false; } return outcome; }