Search in sources :

Example 16 with ServiceRegistry

use of org.alfresco.service.ServiceRegistry in project acs-community-packaging by Alfresco.

the class DownloadContentServlet method doGet.

/**
 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 */
protected void doGet(final HttpServletRequest req, final HttpServletResponse res) throws ServletException, IOException {
    if (logger.isDebugEnabled()) {
        String queryString = req.getQueryString();
        logger.debug("Authenticating (GET) request to URL: " + req.getRequestURI() + ((queryString != null && queryString.length() > 0) ? ("?" + queryString) : ""));
    }
    AuthenticationStatus status = servletAuthenticate(req, res);
    if (status == AuthenticationStatus.Failure) {
        return;
    }
    ServiceRegistry serviceRegistry = getServiceRegistry(getServletContext());
    TransactionService transactionService = serviceRegistry.getTransactionService();
    RetryingTransactionCallback<Void> processCallback = new RetryingTransactionCallback<Void>() {

        public Void execute() throws Throwable {
            processDownloadRequest(req, res, true, true);
            return null;
        }
    };
    transactionService.getRetryingTransactionHelper().doInTransaction(processCallback, true);
}
Also used : TransactionService(org.alfresco.service.transaction.TransactionService) RetryingTransactionCallback(org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback) ServiceRegistry(org.alfresco.service.ServiceRegistry)

Example 17 with ServiceRegistry

use of org.alfresco.service.ServiceRegistry in project acs-community-packaging by Alfresco.

the class DownloadContentServlet method doHead.

/* (non-Javadoc)
    * @see javax.servlet.http.HttpServlet#doHead(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
    */
@Override
protected void doHead(final HttpServletRequest req, final HttpServletResponse res) throws ServletException, IOException {
    if (logger.isDebugEnabled()) {
        String queryString = req.getQueryString();
        logger.debug("Authenticating (HEAD) request to URL: " + req.getRequestURI() + ((queryString != null && queryString.length() > 0) ? ("?" + queryString) : ""));
    }
    AuthenticationStatus status = servletAuthenticate(req, res);
    if (status == AuthenticationStatus.Failure) {
        return;
    }
    ServiceRegistry serviceRegistry = getServiceRegistry(getServletContext());
    TransactionService transactionService = serviceRegistry.getTransactionService();
    RetryingTransactionCallback<Void> processCallback = new RetryingTransactionCallback<Void>() {

        public Void execute() throws Throwable {
            processDownloadRequest(req, res, true, false);
            return null;
        }
    };
    transactionService.getRetryingTransactionHelper().doInTransaction(processCallback, true);
}
Also used : TransactionService(org.alfresco.service.transaction.TransactionService) RetryingTransactionCallback(org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback) ServiceRegistry(org.alfresco.service.ServiceRegistry)

Example 18 with ServiceRegistry

use of org.alfresco.service.ServiceRegistry in project acs-community-packaging by Alfresco.

the class ExternalAccessServlet method service.

/**
 * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 */
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    String uri = req.getRequestURI();
    if (logger.isDebugEnabled())
        logger.debug("Processing URL: " + uri + (req.getQueryString() != null ? ("?" + req.getQueryString()) : ""));
    AuthenticationStatus status = servletAuthenticate(req, res);
    if (status == AuthenticationStatus.Failure) {
        return;
    }
    setNoCacheHeaders(res);
    uri = uri.substring(req.getContextPath().length());
    StringTokenizer t = new StringTokenizer(uri, "/");
    int tokenCount = t.countTokens();
    if (tokenCount < 2) {
        throw new IllegalArgumentException("Externally addressable URL did not contain all required args: " + uri);
    }
    // skip servlet name
    t.nextToken();
    String outcome = t.nextToken();
    // get rest of the tokens arguments
    String[] args = new String[tokenCount - 2];
    for (int i = 0; i < tokenCount - 2; i++) {
        args[i] = t.nextToken();
    }
    if (logger.isDebugEnabled())
        logger.debug("External outcome found: " + outcome);
    // we almost always need this bean reference
    FacesContext fc = FacesHelper.getFacesContext(req, res, getServletContext());
    BrowseBean browseBean = (BrowseBean) FacesHelper.getManagedBean(fc, "BrowseBean");
    // get services we need
    ServiceRegistry serviceRegistry = getServiceRegistry(getServletContext());
    PermissionService permissionService = serviceRegistry.getPermissionService();
    // as we are potentially coming in from an external app reset the view stack
    Stack viewStack = (Stack) fc.getExternalContext().getSessionMap().get("_alfViewStack");
    if (viewStack != null) {
        viewStack.clear();
        if (logger.isDebugEnabled())
            logger.debug("Cleared view stack");
    }
    // setup is required for certain outcome requests
    if (OUTCOME_DOCDETAILS.equals(outcome)) {
        NodeRef nodeRef = null;
        if (args[0].equals(WebDAVServlet.WEBDAV_PREFIX)) {
            nodeRef = resolveWebDAVPath(fc, args);
        } else if (args.length == 3) {
            StoreRef storeRef = new StoreRef(args[0], args[1]);
            nodeRef = new NodeRef(storeRef, args[2]);
        }
        if (nodeRef != null) {
            // check that the user has at least READ access - else redirect to an error or login page
            if (!checkAccess(req, res, nodeRef, PermissionService.READ_CONTENT, true)) {
                return;
            }
            // setup the Document on the browse bean
            browseBean.setupContentAction(nodeRef.getId(), true);
        }
        // perform the appropriate JSF navigation outcome
        NavigationHandler navigationHandler = fc.getApplication().getNavigationHandler();
        navigationHandler.handleNavigation(fc, null, "dialog:" + OUTCOME_DOCDETAILS);
    } else if (OUTCOME_SPACEDETAILS.equals(outcome)) {
        NodeRef nodeRef = null;
        if (args[0].equals(WebDAVServlet.WEBDAV_PREFIX)) {
            nodeRef = resolveWebDAVPath(fc, args);
        } else if (args.length == 3) {
            StoreRef storeRef = new StoreRef(args[0], args[1]);
            nodeRef = new NodeRef(storeRef, args[2]);
        }
        if (nodeRef != null) {
            // check that the user has at least READ access - else redirect to an error or login page
            if (!checkAccess(req, res, nodeRef, PermissionService.READ_CONTENT, true)) {
                return;
            }
            // setup the Space on the browse bean
            browseBean.setupSpaceAction(nodeRef.getId(), true);
        }
        // perform the appropriate JSF navigation outcome
        NavigationHandler navigationHandler = fc.getApplication().getNavigationHandler();
        navigationHandler.handleNavigation(fc, null, "dialog:" + OUTCOME_SPACEDETAILS);
    } else if (OUTCOME_BROWSE.equals(outcome)) {
        NodeRef nodeRef = null;
        if (args.length != 0 && args[0].equals(WebDAVServlet.WEBDAV_PREFIX)) {
            nodeRef = resolveWebDAVPath(fc, args);
        } else if (args.length >= 3) {
            int offset = 0;
            offset = args.length - 3;
            StoreRef storeRef = new StoreRef(args[0 + offset], args[1 + offset]);
            nodeRef = new NodeRef(storeRef, args[2 + offset]);
        }
        if (nodeRef != null) {
            // check that the user has at least READ access - else redirect to an error or login page
            if (!checkAccess(req, res, nodeRef, PermissionService.READ_CONTENT, true)) {
                return;
            }
            // this call sets up the current node Id, and updates or initialises the
            // breadcrumb component with the selected node as appropriate.
            browseBean.updateUILocation(nodeRef);
            // force a "late" refresh of the BrowseBean to handle external servlet access URL
            browseBean.externalAccessRefresh();
            // check for view mode first argument
            if (args[0].equals(ARG_TEMPLATE)) {
                browseBean.setDashboardView(true);
            }
        // the above calls into BrowseBean setup the NavigationHandler automatically
        } else {
            // perform the appropriate JSF navigation outcome
            NavigationHandler navigationHandler = fc.getApplication().getNavigationHandler();
            navigationHandler.handleNavigation(fc, null, outcome);
        }
    } else if (OUTCOME_MYALFRESCO.equals(outcome)) {
        // setup the Dashboard Manager ready for the page we want to display
        if (req.getParameter(ARG_PAGE) != null) {
            DashboardManager manager = (DashboardManager) FacesHelper.getManagedBean(fc, DashboardManager.BEAN_NAME);
            manager.getPageConfig().setCurrentPage(req.getParameter(ARG_PAGE));
        }
        // perform the appropriate JSF navigation outcome
        NavigationHandler navigationHandler = fc.getApplication().getNavigationHandler();
        navigationHandler.handleNavigation(fc, null, outcome);
    } else if (OUTCOME_DIALOG.equals(outcome) || OUTCOME_WIZARD.equals(outcome)) {
        if (args.length != 0) {
            if (args.length > 1) {
                String currentNodeId = null;
                if (args[1].equals(WebDAVServlet.WEBDAV_PREFIX)) {
                    // Drop the first argument
                    String[] args2 = new String[args.length - 1];
                    for (int i = 1; i < args.length; i++) {
                        args2[i - 1] = args[i];
                        if (logger.isDebugEnabled()) {
                            logger.debug("Added segment " + args2[i - 1]);
                        }
                    }
                    NodeRef nodeRef = resolveWebDAVPath(fc, args2);
                    currentNodeId = nodeRef.getId();
                } else {
                    currentNodeId = args[1];
                }
                if (logger.isDebugEnabled()) {
                    logger.debug("currentNodeId: " + currentNodeId);
                }
                // if a GUID was passed, use it to init the NavigationBean current context
                NavigationBean navigator = (NavigationBean) FacesHelper.getManagedBean(fc, NavigationBean.BEAN_NAME);
                navigator.setCurrentNodeId(currentNodeId);
                browseBean.setupSpaceAction(currentNodeId, true);
                // setup the Document on the browse bean
                // avoid java.lang.NullPointerException
                // at org.alfresco.web.bean.content.InviteContentUsersWizard.getPermissionsForType(InviteContentUsersWizard.java:49)
                // at org.alfresco.web.bean.wizard.BaseInviteUsersWizard.getRoles(BaseInviteUsersWizard.java:562)
                browseBean.setupContentAction(currentNodeId, true);
            }
            NavigationHandler navigationHandler = fc.getApplication().getNavigationHandler();
            navigationHandler.handleNavigation(fc, null, outcome + ':' + args[0]);
        }
    } else if (OUTCOME_LOGOUT.equals(outcome)) {
        // special case for logout
        // invalidate ticket and clear the Security context for this thread
        Application.logOut(fc);
        res.sendRedirect(req.getContextPath() + FACES_SERVLET + Application.getLoginPage(getServletContext()));
        return;
    }
    // perform the forward to the page processed by the Faces servlet
    String viewId = fc.getViewRoot().getViewId();
    ViewSequenceUtils.nextViewSequence(fc);
    getServletContext().getRequestDispatcher(FACES_SERVLET + viewId).forward(req, res);
}
Also used : FacesContext(javax.faces.context.FacesContext) StoreRef(org.alfresco.service.cmr.repository.StoreRef) BrowseBean(org.alfresco.web.bean.BrowseBean) AlfrescoNavigationHandler(org.alfresco.web.app.AlfrescoNavigationHandler) NavigationHandler(javax.faces.application.NavigationHandler) Stack(java.util.Stack) PermissionService(org.alfresco.service.cmr.security.PermissionService) NodeRef(org.alfresco.service.cmr.repository.NodeRef) StringTokenizer(java.util.StringTokenizer) DashboardManager(org.alfresco.web.bean.dashboard.DashboardManager) NavigationBean(org.alfresco.web.bean.NavigationBean) ServiceRegistry(org.alfresco.service.ServiceRegistry)

Example 19 with ServiceRegistry

use of org.alfresco.service.ServiceRegistry in project acs-community-packaging by Alfresco.

the class UITemplate method getTemplateModel.

/**
 * By default we return a Map model containing root references to the Company Home Space,
 * the users Home Space and the Person Node for the current user.
 *
 * @param model      Custom model to merge into default model
 * @param template   Optional reference to the template to add to model
 *
 * @return Returns the data model to bind template against.
 */
private Object getTemplateModel(Object model, String template) {
    // create an instance of the default FreeMarker template object model
    FacesContext fc = FacesContext.getCurrentInstance();
    ServiceRegistry services = Repository.getServiceRegistry(fc);
    User user = Application.getCurrentUser(fc);
    // add the template itself to the model
    NodeRef templateRef = null;
    if (template.indexOf(StoreRef.URI_FILLER) != -1) {
        // found a noderef template
        templateRef = new NodeRef(template);
    }
    Map root = DefaultModelHelper.buildDefaultModel(services, user, templateRef);
    root.put("url", new URLHelper(fc.getExternalContext().getRequestContextPath()));
    // merge models
    if (model instanceof Map) {
        if (logger.isDebugEnabled())
            logger.debug("Found valid Map model to merge with FreeMarker: " + model);
        root.putAll((Map) model);
    }
    model = root;
    return model;
}
Also used : FacesContext(javax.faces.context.FacesContext) NodeRef(org.alfresco.service.cmr.repository.NodeRef) User(org.alfresco.web.bean.repository.User) ServiceRegistry(org.alfresco.service.ServiceRegistry) Map(java.util.Map)

Example 20 with ServiceRegistry

use of org.alfresco.service.ServiceRegistry in project acs-community-packaging by Alfresco.

the class BaseContentWizard method getSummaryMimeType.

/**
 * Returns the display label for the mime type currently chosen
 *
 * @param mimeType The mime type to get the display label of
 * @return The human readable version of the content type
 */
protected String getSummaryMimeType(String mimeType) {
    ServiceRegistry registry = Repository.getServiceRegistry(FacesContext.getCurrentInstance());
    MimetypeService mimetypeService = registry.getMimetypeService();
    // get the mime type display name
    Map<String, String> mimeTypes = mimetypeService.getDisplaysByMimetype();
    return mimeTypes.get(mimeType);
}
Also used : MimetypeService(org.alfresco.service.cmr.repository.MimetypeService) ServiceRegistry(org.alfresco.service.ServiceRegistry)

Aggregations

ServiceRegistry (org.alfresco.service.ServiceRegistry)32 NodeRef (org.alfresco.service.cmr.repository.NodeRef)17 NodeService (org.alfresco.service.cmr.repository.NodeService)8 FacesContext (javax.faces.context.FacesContext)7 MimetypeService (org.alfresco.service.cmr.repository.MimetypeService)6 QName (org.alfresco.service.namespace.QName)6 StringTokenizer (java.util.StringTokenizer)5 Serializable (java.io.Serializable)4 HashMap (java.util.HashMap)4 SelectItem (javax.faces.model.SelectItem)4 AlfrescoRuntimeException (org.alfresco.error.AlfrescoRuntimeException)4 ContentService (org.alfresco.service.cmr.repository.ContentService)4 ContentWriter (org.alfresco.service.cmr.repository.ContentWriter)4 StoreRef (org.alfresco.service.cmr.repository.StoreRef)4 PermissionService (org.alfresco.service.cmr.security.PermissionService)4 TransactionService (org.alfresco.service.transaction.TransactionService)4 QuickSort (org.alfresco.web.data.QuickSort)4 SocketException (java.net.SocketException)3 Map (java.util.Map)3 UserTransaction (javax.transaction.UserTransaction)3