As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
package org.alfresco.repo.webservice; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.servlet.ServletException; import javax.xml.rpc.server.ServiceLifecycle; import javax.xml.rpc.ServiceException; import javax.xml.rpc.server.ServletEndpointContext; import org.alfresco.jcr.item.NodeImpl; import org.alfresco.jcr.session.SessionImpl; import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.model.FileFolderService; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.model.FileNotFoundException; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.search.SearchService; import org.alfresco.service.cmr.security.AuthenticationService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.transaction.TransactionService; import org.apache.log4j.Logger; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class PlutextWebService implements ServiceLifecycle { WebApplicationContext webAppContext = null; private static Logger log = Logger.getLogger(PlutextWebService.class); // Root node protected NodeRef m_rootNodeRef; FileFolderService m_fileFolderService; AuthenticationService authService; // Init parameter names // In web.xml, you need to copy the init params from the WebDAV servlet // and make them context wide. Reason being, can't seem to get at // the init params for the WebDAV servlet or even the Axis servlet! public static final String KEY_STORE = "store"; public static final String KEY_ROOT_PATH = "rootPath"; public void init(Object servletEndpointContext) throws ServiceException { log.info("init start.."); // Axis 1 servletContext = ((ServletEndpointContext) servletEndpointContext).getServletContext(); // Borrowed from org.alfresco.repo.webdav.WebDAVServlet webAppContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); ServiceRegistry m_serviceRegistry = (ServiceRegistry)webAppContext.getBean(ServiceRegistry.SERVICE_REGISTRY); TransactionService m_transactionService = m_serviceRegistry.getTransactionService(); // We need to be able to convert WebDAV paths to JCR paths // Borrowed from org.alfresco.repo.webdav.WebDAVServlet authService = (AuthenticationService) webAppContext.getBean("authenticationService"); NodeService nodeService = (NodeService) webAppContext.getBean("NodeService"); SearchService searchService = (SearchService) webAppContext.getBean("SearchService"); NamespaceService namespaceService = (NamespaceService) webAppContext.getBean("NamespaceService"); m_fileFolderService = m_serviceRegistry.getFileFolderService(); String storeValue = servletContext.getInitParameter(KEY_STORE); String m_rootPath = servletContext.getInitParameter(KEY_ROOT_PATH); try { AuthenticationComponent authComponent = (AuthenticationComponent) webAppContext.getBean("authenticationComponent"); net.sf.acegisecurity.Authentication savedClientAuth = authComponent.getCurrentAuthentication(); // Will be done as system user m_rootNodeRef = org.alfresco.repo.webdav.WebDAVServlet.getRootNode(storeValue, m_rootPath, webAppContext, nodeService, searchService, namespaceService, m_transactionService); // Log the client back in again authComponent.setCurrentAuthentication(savedClientAuth); } catch (ServletException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } log.info(" .. init done."); } public Session getJcrSession() { try { return getJcrSession(webAppContext, authService); // log.info("JCR root path=" + jcrSession.getRootNode().getPath() ); } catch (RepositoryException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } public javax.jcr.Session getJcrSession(WebApplicationContext context, AuthenticationService authService) throws javax.jcr.RepositoryException { logger.info("Getting JCR Repository and Session" ); // JCR javax.jcr.Repository repository = (javax.jcr.Repository)context.getBean("JCR.Repository"); // construct the session SessionImpl sessionImpl = new SessionImpl((org.alfresco.jcr.repository.RepositoryImpl)repository); // initialise the session String ticket = authService.getCurrentTicket(); String sessionWorkspace = "SpacesStore"; sessionImpl.init(ticket, sessionWorkspace, null); logger.info("JCR Repository and Session .. SUCCESS .. returning Session" ); return (javax.jcr.Session)sessionImpl; }