/* =============================================================================== * * Part of the InfoGlue Content Management Platform (www.infoglue.org) * * =============================================================================== * * Copyright (C) * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 2, as published by the * Free Software Foundation. See the file LICENSE.html for more information. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc. / 59 Temple * Place, Suite 330 / Boston, MA 02111-1307 / USA. * * =============================================================================== */ package org.infoglue.cms.webservices; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.infoglue.cms.controllers.kernel.impl.simple.CategoryController; import org.infoglue.cms.controllers.kernel.impl.simple.ContentController; import org.infoglue.cms.controllers.kernel.impl.simple.ContentControllerProxy; import org.infoglue.cms.controllers.kernel.impl.simple.ContentStateController; import org.infoglue.cms.controllers.kernel.impl.simple.ContentTypeDefinitionController; import org.infoglue.cms.controllers.kernel.impl.simple.ContentVersionController; import org.infoglue.cms.controllers.kernel.impl.simple.LanguageController; import org.infoglue.cms.controllers.kernel.impl.simple.RepositoryController; import org.infoglue.cms.controllers.kernel.impl.simple.ServerNodeController; import org.infoglue.cms.controllers.kernel.impl.simple.UserControllerProxy; import org.infoglue.cms.controllers.kernel.impl.simple.WorkflowDefinitionController; import org.infoglue.cms.entities.content.ContentVO; import org.infoglue.cms.entities.content.ContentVersionVO; import org.infoglue.cms.entities.management.CategoryVO; import org.infoglue.cms.entities.management.ContentTypeDefinitionVO; import org.infoglue.cms.entities.management.LanguageVO; import org.infoglue.cms.entities.management.RepositoryVO; import org.infoglue.cms.entities.workflow.WorkflowDefinitionVO; import org.infoglue.cms.exception.SystemException; import org.infoglue.cms.security.InfoGluePrincipal; import org.infoglue.deliver.util.webservices.DynamicWebserviceSerializer; /** * This class is responsible for all deployment actions. * * @author Mattias Bogeblad */ public class RemoteDeploymentServiceImpl extends RemoteInfoGlueService { private final static Logger logger = Logger.getLogger(RemoteDeploymentServiceImpl.class.getName()); /** * The principal executing the workflow. */ private InfoGluePrincipal principal; private static ContentTypeDefinitionController contentTypeDefinitionController = ContentTypeDefinitionController.getController(); private static WorkflowDefinitionController workflowDefinitionController = WorkflowDefinitionController.getController(); private static CategoryController categoryController = CategoryController.getController(); private static ContentControllerProxy contentControllerProxy = ContentControllerProxy.getController(); private static RepositoryController repositoryController = RepositoryController.getController(); //private static ContentVersionControllerProxy contentVersionControllerProxy = ContentVersionControllerProxy.getController(); /** * Gets all content type definitions from the cms. */ public List<ContentTypeDefinitionVO> getContentTypeDefinitions(final String principalName) { if(!ServerNodeController.getController().getIsIPAllowed(getRequest())) { logger.error("A client with IP " + getRequest().getRemoteAddr() + " was denied access to the webservice. Could be a hack attempt or you have just not configured the allowed IP-addresses correct."); return null; } if(logger.isInfoEnabled()) { logger.info("******************************************************"); logger.info("* Getting content type definition through webservice *"); logger.info("******************************************************"); } List<ContentTypeDefinitionVO> contentTypeDefinitionVOList = new ArrayList<ContentTypeDefinitionVO>(); try { final DynamicWebserviceSerializer serializer = new DynamicWebserviceSerializer(); if(logger.isInfoEnabled()) { logger.info("principalName:" + principalName); } contentTypeDefinitionVOList = contentTypeDefinitionController.getContentTypeDefinitionVOList(); } catch(Throwable t) { logger.error("En error occurred when we tried to get the contentVersionVO:" + t.getMessage(), t); } return contentTypeDefinitionVOList; } /** * Gets all content type definitions from the cms. */ public Boolean updateContentTypeDefinitions(final String principalName, final Object[] input) { if(!ServerNodeController.getController().getIsIPAllowed(getRequest())) { logger.error("A client with IP " + getRequest().getRemoteAddr() + " was denied access to the webservice. Could be a hack attempt or you have just not configured the allowed IP-addresses correct."); return new Boolean(false); } Boolean status = new Boolean(true); if(logger.isInfoEnabled()) { logger.info("*******************************************************"); logger.info("* Updating content type definition through webservice *"); logger.info("*******************************************************"); } try { final DynamicWebserviceSerializer serializer = new DynamicWebserviceSerializer(); Map arguments = (Map)serializer.deserialize(input); logger.info("arguments:" + arguments); if(logger.isInfoEnabled()) { logger.info("principalName:" + principalName); } List remoteContentTypeDefinitionVOList = (List)arguments.get("contentTypeDefinitionVOList"); List missingContentTypeNameArray = (List)arguments.get("missingContentTypeNameArray"); List deviatingContentTypeNameArray = (List)arguments.get("deviatingContentTypeNameArray"); logger.info("remoteContentTypeDefinitionVOList:" + remoteContentTypeDefinitionVOList); logger.info("missingContentTypeNameArray:" + missingContentTypeNameArray); logger.info("deviatingContentTypeNameArray:" + deviatingContentTypeNameArray); if(missingContentTypeNameArray != null) { Iterator missingContentTypeNameArrayIterator = missingContentTypeNameArray.iterator(); while(missingContentTypeNameArrayIterator.hasNext()) { String missingContentTypeName = (String)missingContentTypeNameArrayIterator.next(); logger.info("Updating missingContentTypeName:" + missingContentTypeName); Iterator remoteContentTypeDefinitionVOListIterator = remoteContentTypeDefinitionVOList.iterator(); while(remoteContentTypeDefinitionVOListIterator.hasNext()) { ContentTypeDefinitionVO remoteContentTypeDefinitionVO = (ContentTypeDefinitionVO)remoteContentTypeDefinitionVOListIterator.next(); //logger.info("remoteContentTypeDefinitionVO:" + remoteContentTypeDefinitionVO.getName()); if(remoteContentTypeDefinitionVO.getName().equals(missingContentTypeName)) { logger.info("Creating remoteContentTypeDefinitionVO:" + remoteContentTypeDefinitionVO.getName()); ContentTypeDefinitionController.getController().create(remoteContentTypeDefinitionVO); } } } } if(deviatingContentTypeNameArray != null) { Iterator deviatingContentTypeNameArrayIterator = deviatingContentTypeNameArray.iterator(); while(deviatingContentTypeNameArrayIterator.hasNext()) { String deviatingContentTypeName = (String)deviatingContentTypeNameArrayIterator.next(); //logger.info("Updating deviatingContentTypeName:" + deviatingContentTypeName); Map deviationArguments = (Map)arguments.get("deviationArguments_" + deviatingContentTypeName); logger.info("deviationArguments:" + deviationArguments); Iterator remoteContentTypeDefinitionVOListIterator = remoteContentTypeDefinitionVOList.iterator(); while(remoteContentTypeDefinitionVOListIterator.hasNext()) { ContentTypeDefinitionVO remoteContentTypeDefinitionVO = (ContentTypeDefinitionVO)remoteContentTypeDefinitionVOListIterator.next(); //logger.info("remoteContentTypeDefinitionVO:" + remoteContentTypeDefinitionVO.getName()); if(remoteContentTypeDefinitionVO.getName().equals(deviatingContentTypeName)) { ContentTypeDefinitionVO localContentTypeDefinitionVO = ContentTypeDefinitionController.getController().getContentTypeDefinitionVOWithName(remoteContentTypeDefinitionVO.getName()); String newSchemaValue = localContentTypeDefinitionVO.getSchemaValue(); //Enkelt - vid push till�ter vi bara push av hela inneh�llstypen newSchemaValue = remoteContentTypeDefinitionVO.getSchemaValue(); /* logger.info("deviationArguments:" + deviationArguments); List attributes = (List)deviationArguments.get("attributes"); List categories = (List)deviationArguments.get("categories"); List assets = (List)deviationArguments.get("assets"); if(attributes != null) { Iterator attributesIterator = attributes.iterator(); while(attributesIterator.hasNext()) { String attributeName = (String)attributesIterator.next(); logger.info(" * Updating attributeName:" + attributeName); newSchemaValue = contentTypeDefinitionController.copyAttribute(remoteContentTypeDefinitionVO.getSchemaValue(), newSchemaValue, attributeName); } } if(categories != null) { Iterator categoryIterator = categories.iterator(); while(categoryIterator.hasNext()) { String categoryName = (String)categoryIterator.next(); logger.info(" * Updating categoryName:" + categoryName); newSchemaValue = contentTypeDefinitionController.copyCategory(remoteContentTypeDefinitionVO.getSchemaValue(), newSchemaValue, categoryName); } } if(assets != null) { Iterator assetsIterator = assets.iterator(); while(assetsIterator.hasNext()) { String assetKey = (String)assetsIterator.next(); logger.info(" * Updating assetKey:" + assetKey); newSchemaValue = contentTypeDefinitionController.copyAssetKey(remoteContentTypeDefinitionVO.getSchemaValue(), newSchemaValue, assetKey); } } */ localContentTypeDefinitionVO.setSchemaValue(newSchemaValue); logger.info("Updating localContentTypeDefinitionVO:" + localContentTypeDefinitionVO.getName()); ContentTypeDefinitionController.getController().update(localContentTypeDefinitionVO); } } } } } catch(Throwable t) { status = new Boolean(false); logger.error("En error occurred when we tried to get the contentVersionVO:" + t.getMessage(), t); } updateCaches(); return status; } /** * Gets all content type definitions from the cms. */ public Boolean updateCategories(final String principalName, final Object[] input) { if(!ServerNodeController.getController().getIsIPAllowed(getRequest())) { logger.error("A client with IP " + getRequest().getRemoteAddr() + " was denied access to the webservice. Could be a hack attempt or you have just not configured the allowed IP-addresses correct."); return new Boolean(false); } Boolean status = new Boolean(true); if(logger.isInfoEnabled()) { logger.info("*******************************************************"); logger.info("* Updating categories through webservice *"); logger.info("*******************************************************"); } try { logger.info("input:" + input); final DynamicWebserviceSerializer serializer = new DynamicWebserviceSerializer(); Map arguments = (Map)serializer.deserialize(input); logger.info("arguments:" + arguments); List remoteCategoryVOList = (List)arguments.get("categoryVOList"); Map requestMap = (Map)arguments.get("requestMap"); logger.info("remoteCategoryVOList:" + remoteCategoryVOList); if(logger.isInfoEnabled()) { logger.info("principalName:" + principalName); } List<CategoryVO> allLocalCategories = CategoryController.getController().getAllActiveCategories(); //logger.info("allLocalCategories:" + allLocalCategories.size()); Map handledRemoteCategoryPaths = new HashMap(); categoryController.compareAndCompleteCategoryLists(remoteCategoryVOList, allLocalCategories, null, handledRemoteCategoryPaths, requestMap); } catch(Throwable t) { status = new Boolean(false); logger.error("En error occurred when we tried to update categories:" + t.getMessage(), t); } updateCaches(); return status; } /** * Gets all content type definitions from the cms. */ public Boolean updateWorkflows(final String principalName, final Object[] input) { if(!ServerNodeController.getController().getIsIPAllowed(getRequest())) { logger.error("A client with IP " + getRequest().getRemoteAddr() + " was denied access to the webservice. Could be a hack attempt or you have just not configured the allowed IP-addresses correct."); return new Boolean(false); } Boolean status = new Boolean(true); if(logger.isInfoEnabled()) { logger.info("*******************************************************"); logger.info("* Updating categories through webservice *"); logger.info("*******************************************************"); } try { logger.info("input:" + input); final DynamicWebserviceSerializer serializer = new DynamicWebserviceSerializer(); Map arguments = (Map)serializer.deserialize(input); logger.info("arguments:" + arguments); List remoteWorkflowDefinitionVOList = (List)arguments.get("workflowDefinitionVOList"); Map requestMap = (Map)arguments.get("requestMap"); logger.info("remoteWorkflowDefinitionVOList:" + remoteWorkflowDefinitionVOList); if(logger.isInfoEnabled()) { logger.info("principalName:" + principalName); } Iterator remoteWorkflowDefinitionVOListIterator = remoteWorkflowDefinitionVOList.iterator(); while(remoteWorkflowDefinitionVOListIterator.hasNext()) { WorkflowDefinitionVO remoteWorkflowDefinitionVO = (WorkflowDefinitionVO)remoteWorkflowDefinitionVOListIterator.next(); WorkflowDefinitionVO localWorkflowDefinitionVO = WorkflowDefinitionController.getController().getWorkflowDefinitionVOWithName(remoteWorkflowDefinitionVO.getName()); if(localWorkflowDefinitionVO == null) WorkflowDefinitionController.getController().create(remoteWorkflowDefinitionVO); else WorkflowDefinitionController.getController().update(remoteWorkflowDefinitionVO); } } catch(Throwable t) { status = new Boolean(false); logger.error("En error occurred when we tried to update categories:" + t.getMessage(), t); } updateCaches(); return status; } /** * Gets all content type definitions from the cms. */ public Boolean updateComponents(final String principalName, final Object[] input) { if(!ServerNodeController.getController().getIsIPAllowed(getRequest())) { logger.error("A client with IP " + getRequest().getRemoteAddr() + " was denied access to the webservice. Could be a hack attempt or you have just not configured the allowed IP-addresses correct."); return new Boolean(false); } Boolean status = new Boolean(true); if(logger.isInfoEnabled()) { logger.info("*******************************************************"); logger.info("* Updating components through webservice *"); logger.info("*******************************************************"); } try { initializePrincipal(principalName); logger.info("input:" + input); final DynamicWebserviceSerializer serializer = new DynamicWebserviceSerializer(); Map arguments = (Map)serializer.deserialize(input); logger.info("arguments:" + arguments); List components = ContentController.getContentController().getContentVOWithContentTypeDefinition("HTMLTemplate"); ContentTypeDefinitionVO contentTypeDefinitionVO = ContentTypeDefinitionController.getController().getContentTypeDefinitionVOWithName("HTMLTemplate"); if(logger.isInfoEnabled()) { logger.info("principalName:" + principalName); } InfoGluePrincipal principal = UserControllerProxy.getController().getUser(principalName); List missingRemoteComponents = (List)arguments.get("missingComponents"); logger.info("missingRemoteComponents:" + missingRemoteComponents); Iterator missingRemoteComponentsIterator = missingRemoteComponents.iterator(); while(missingRemoteComponentsIterator.hasNext()) { ContentVO missingRemoteContentVO = (ContentVO)missingRemoteComponentsIterator.next(); if(missingRemoteContentVO != null) missingRemoteContentVO.setIsBranch(Boolean.FALSE); logger.info("missingRemoteContentVO:" + missingRemoteContentVO + ":" + missingRemoteContentVO.getFullPath()); String fullPath = missingRemoteContentVO.getFullPath(); logger.info("fullPath:" + fullPath); int siteNodeEnd = fullPath.indexOf(" - /"); String repositoryString = fullPath.substring(0, siteNodeEnd); String restString = fullPath.substring(siteNodeEnd + 4); restString = restString.substring(0, restString.lastIndexOf("/")); if(restString.indexOf("/") > -1) restString = restString.substring(restString.indexOf("/") + 1); else restString = ""; logger.info("repositoryString:" + repositoryString); logger.info("restString:" + restString); try { RepositoryVO repositoryVO = RepositoryController.getController().getRepositoryVOWithName(repositoryString); logger.info("repositoryVO:" + repositoryVO); if(repositoryVO == null && components != null && components.size() > 0) { ContentVO contentVO = (ContentVO)components.get(0); repositoryVO = RepositoryController.getController().getRepositoryVOWithId(contentVO.getRepositoryId()); logger.info("repositoryVO:" + repositoryVO); } if(repositoryVO != null) { LanguageVO languageVO = LanguageController.getController().getMasterLanguage(repositoryVO.getRepositoryId()); ContentVO parentContent = ContentController.getContentController().getContentVOWithPath(repositoryVO.getId(), restString, true, principal); logger.info("parentContent:" + parentContent); ContentVO newContentVO = ContentController.getContentController().create(parentContent.getId(), contentTypeDefinitionVO.getContentTypeDefinitionId(), parentContent.getRepositoryId(), missingRemoteContentVO); logger.info("Now we want to create the version also on:" + newContentVO.getName()); ContentVersionVO contentVersionVO = new ContentVersionVO(); contentVersionVO.setVersionComment("deployment"); contentVersionVO.setVersionModifier(principal.getName()); logger.info("missingRemoteContentVO.getVersions():" + missingRemoteContentVO.getVersions()); if(missingRemoteContentVO.getVersions() != null && missingRemoteContentVO.getVersions().length > 0) { contentVersionVO.setVersionValue(missingRemoteContentVO.getVersions()[0]); logger.info("Creating version on content: " + newContentVO.getId() + " in language: " + languageVO.getId()); ContentVersionController.getContentVersionController().create(newContentVO.getId(), languageVO.getId(), contentVersionVO, null); } } } catch (Exception e) { e.printStackTrace(); } } //Getting ready to handle deviating ones List remoteComponents = (List)arguments.get("deviatingComponents"); logger.info("remoteComponents:" + remoteComponents); Iterator remoteComponentsIterator = remoteComponents.iterator(); while(remoteComponentsIterator.hasNext()) { ContentVO remoteContentVO = (ContentVO)remoteComponentsIterator.next(); logger.info("remoteContentVO:" + remoteContentVO + ":" + remoteContentVO.getFullPath()); if(remoteContentVO.getFullPath() != null && remoteContentVO.getFullPath().startsWith("deviatingRemoteVersionId=")) { String remoteVersionId = remoteContentVO.getFullPath().substring(remoteContentVO.getFullPath().indexOf("=") + 1); logger.info("Looking for version in remoteVersionId:" + remoteVersionId); ContentVO contentVO = ContentControllerProxy.getController().getACContentVOWithId(principal, new Integer(remoteVersionId)); LanguageVO languageVO = LanguageController.getController().getMasterLanguage(contentVO.getRepositoryId()); ContentVersionVO contentVersionVO = ContentVersionController.getContentVersionController().getLatestActiveContentVersionVO(contentVO.getId(), languageVO.getId()); if(contentVersionVO != null) { if(remoteContentVO.getVersions() != null && remoteContentVO.getVersions().length > 0) { if(!contentVersionVO.getStateId().equals(0)) { contentVersionVO = ContentStateController.changeState(contentVersionVO.getId(), ContentVersionVO.WORKING_STATE, "new working version: " + contentVersionVO.getVersionComment(), false, principal, contentVO.getId(), new ArrayList()); } contentVersionVO.setVersionValue(remoteContentVO.getVersions()[0]); logger.info("Updating :" + contentVersionVO.getContentName() + " with new latest versionValue:" + remoteContentVO.getVersions()[0].length()); contentVersionVO.setStateId(0); if(remoteContentVO.getVersionComments().length > 0) contentVersionVO.setVersionComment(remoteContentVO.getVersionComments()[0]); ContentVersionController.getContentVersionController().update(contentVersionVO.getId(), contentVersionVO); } } } else { Iterator componentsIterator = components.iterator(); while(componentsIterator.hasNext()) { ContentVO contentVO = (ContentVO)componentsIterator.next(); String fullPath = ContentController.getContentController().getContentPath(contentVO.getId(), true, true); logger.info("fullPath:" + fullPath); if(fullPath.equalsIgnoreCase(remoteContentVO.getFullPath())) { LanguageVO languageVO = LanguageController.getController().getMasterLanguage(contentVO.getRepositoryId()); ContentVersionVO contentVersionVO = ContentVersionController.getContentVersionController().getLatestActiveContentVersionVO(contentVO.getId(), languageVO.getId()); if(contentVersionVO != null) { if(remoteContentVO.getVersions() != null && remoteContentVO.getVersions().length > 0) { if(!contentVersionVO.getStateId().equals(0)) { contentVersionVO = ContentStateController.changeState(contentVersionVO.getId(), ContentVersionVO.WORKING_STATE, "new working version: " + contentVersionVO.getVersionComment(), false, principal, contentVO.getId(), new ArrayList()); } contentVersionVO.setVersionValue(remoteContentVO.getVersions()[0]); logger.info("Updating :" + contentVersionVO.getContentName() + " with new latest versionValue:" + remoteContentVO.getVersions()[0].length()); contentVersionVO.setStateId(0); contentVersionVO.setVersionComment(remoteContentVO.getVersionComments()[0]); ContentVersionController.getContentVersionController().update(contentVersionVO.getId(), contentVersionVO); } } } } } } } catch(Throwable t) { status = new Boolean(false); logger.error("En error occurred when we tried to update categories:" + t.getMessage(), t); } updateCaches(); return status; } /** * Gets all workflows from the cms. */ public List<WorkflowDefinitionVO> getWorkflowDefinitions(final String principalName) { if(!ServerNodeController.getController().getIsIPAllowed(getRequest())) { logger.error("A client with IP " + getRequest().getRemoteAddr() + " was denied access to the webservice. Could be a hack attempt or you have just not configured the allowed IP-addresses correct."); return null; } if(logger.isInfoEnabled()) { logger.info("******************************************************"); logger.info("* Getting workflow definitions through webservice *"); logger.info("******************************************************"); } List<WorkflowDefinitionVO> workflowDefinitionVOList = new ArrayList<WorkflowDefinitionVO>(); try { final DynamicWebserviceSerializer serializer = new DynamicWebserviceSerializer(); if(logger.isInfoEnabled()) { logger.info("principalName:" + principalName); } workflowDefinitionVOList = workflowDefinitionController.getWorkflowDefinitionVOList(); } catch(Throwable t) { logger.error("En error occurred when we tried to get the contentVersionVO:" + t.getMessage(), t); } return workflowDefinitionVOList; } /** * Gets all categories from the cms. */ public List<CategoryVO> getAllActiveCategories(final String principalName) { if(!ServerNodeController.getController().getIsIPAllowed(getRequest())) { logger.error("A client with IP " + getRequest().getRemoteAddr() + " was denied access to the webservice. Could be a hack attempt or you have just not configured the allowed IP-addresses correct."); return null; } if(logger.isInfoEnabled()) { logger.info("******************************************"); logger.info("* Getting categies through webservice *"); logger.info("******************************************"); } List<CategoryVO> categoryVOList = new ArrayList<CategoryVO>(); try { final DynamicWebserviceSerializer serializer = new DynamicWebserviceSerializer(); if(logger.isInfoEnabled()) { logger.info("principalName:" + principalName); } categoryVOList = categoryController.findAllActiveCategories(true); } catch(Throwable t) { logger.error("En error occurred when we tried to get the contentVersionVO:" + t.getMessage(), t); } return categoryVOList; } /** * Gets all repository names. */ public List<RepositoryVO> getAllRepositories(final String principalName) { if(!ServerNodeController.getController().getIsIPAllowed(getRequest())) { logger.error("A client with IP " + getRequest().getRemoteAddr() + " was denied access to the webservice. Could be a hack attempt or you have just not configured the allowed IP-addresses correct."); return null; } if(logger.isInfoEnabled()) { logger.info("*******************************************"); logger.info("* Getting repositories through webservice *"); logger.info("*******************************************"); } List<RepositoryVO> repositoryVOList = new ArrayList<RepositoryVO>(); try { final DynamicWebserviceSerializer serializer = new DynamicWebserviceSerializer(); if(logger.isInfoEnabled()) { logger.info("principalName:" + principalName); } repositoryVOList = repositoryController.getRepositoryVOListNotMarkedForDeletion(); } catch(Throwable t) { logger.error("En error occurred when we tried to get the contentVersionVO:" + t.getMessage(), t); } return repositoryVOList; } /** * Gets all component contents from the cms. */ public List<ContentVO> getComponents(final String principalName) { if(!ServerNodeController.getController().getIsIPAllowed(getRequest())) { logger.error("A client with IP " + getRequest().getRemoteAddr() + " was denied access to the webservice. Could be a hack attempt or you have just not configured the allowed IP-addresses correct."); return null; } if(logger.isInfoEnabled()) { logger.info("******************************************************"); logger.info("* Getting components through webservice *"); logger.info("******************************************************"); } List<ContentVO> contentVOList = new ArrayList<ContentVO>(); try { final DynamicWebserviceSerializer serializer = new DynamicWebserviceSerializer(); if(logger.isInfoEnabled()) { logger.info("principalName:" + principalName); } contentVOList = contentControllerProxy.getContentVOWithContentTypeDefinition("HTMLTemplate"); Iterator contentVOListIterator = contentVOList.iterator(); while(contentVOListIterator.hasNext()) { ContentVO contentVO = (ContentVO)contentVOListIterator.next(); LanguageVO languageVO = LanguageController.getController().getMasterLanguage(contentVO.getRepositoryId()); String fullPath = ContentController.getContentController().getContentPath(contentVO.getId(), true, true); ContentVersionVO contentVersionVO = ContentVersionController.getContentVersionController().getLatestActiveContentVersionVO(contentVO.getId(), languageVO.getId()); if(contentVersionVO != null) { contentVO.setContentVersion(contentVersionVO); contentVO.setVersions(new String[]{contentVersionVO.getVersionValue()}); } else { contentVOListIterator.remove(); } //logger.info("Versions on remote:" + contentVO.getContentVersion()); contentVO.setFullPath(fullPath); } } catch(Throwable t) { logger.error("En error occurred when we tried to get the contents:" + t.getMessage(), t); } return contentVOList; } /** * Checks if the principal exists and if the principal is allowed to create the workflow. * * @param userName the name of the user. * @param workflowName the name of the workflow to create. * @throws SystemException if the principal doesn't exists or doesn't have permission to create the workflow. */ private void initializePrincipal(final String userName) throws SystemException { try { principal = UserControllerProxy.getController().getUser(userName); } catch(SystemException e) { throw e; } catch(Exception e) { throw new SystemException(e); } if(principal == null) { throw new SystemException("No such principal [" + userName + "]."); } } }