Package org.apache.lenya.cms.usecase

Examples of org.apache.lenya.cms.usecase.UsecaseResolver


            throws SAXException {

        AttributesImpl attributes = new AttributesImpl(attr);
        List messages = null;

        UsecaseResolver usecaseResolver = null;
        try {
            usecaseResolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);

            if (this.authorizer != null && localName.equals(ITEM_ELEMENT)) {
                String usecaseName = attr.getValue(NAMESPACE, USECASE_ATTRIBUTE);

                // filter item if usecase not allowed
                if (usecaseName != null) {
                    if (getLogger().isDebugEnabled()) {
                        getLogger().debug("Found usecase [" + usecaseName + "]");
                    }
                    if (!this.authorizer.authorizeUsecase(usecaseName,
                            this.roles,
                            this.publication)) {
                        if (getLogger().isDebugEnabled()) {
                            getLogger().debug("Usecase not authorized");
                        }
                        removeHrefAttribute(attributes);
                        UsecaseMessage message = new UsecaseMessage("Access denied");
                        messages = Collections.singletonList(message);
                    }
                }

                if (usecaseResolver.isRegistered(this.sourceUrl, usecaseName)) {
                    Usecase usecase = null;
                    try {
                        usecase = usecaseResolver.resolve(this.sourceUrl, usecaseName);
                        usecase.setSourceURL(this.sourceUrl);
                        usecase.setName(usecaseName);
                        String hrefAttribute = attr.getValue(HREF_ATTRIBUTE);
                        if (hrefAttribute != null) {
                            passRequestParameters(usecase, hrefAttribute);
                        }
                        usecase.checkPreconditions();
                        if (usecase.hasErrors()) {
                            if (getLogger().isDebugEnabled()) {
                                getLogger().debug("Usecase preconditions not complied");
                            }
                            removeHrefAttribute(attributes);
                            messages = usecase.getErrorMessages();
                        }
                        else if (hrefAttribute == null) {
                            attributes.addAttribute("", HREF_ATTRIBUTE, HREF_ATTRIBUTE, "CDATA", this.sourceUrl);
                        }
                        setItemState(attributes, usecase);
                    } finally {
                        if (usecase != null) {
                            usecaseResolver.release(usecase);
                        }
                    }
                }
            }
        } catch (final Exception e) {
View Full Code Here


            throws UsecaseException {

        this.errorMessages.clear();
        this.infoMessages.clear();

        UsecaseResolver resolver = null;
        Usecase usecase = null;
        this.result = SUCCESS;
        try {

            resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
            usecase = resolver.resolve(webappUrl, usecaseName);

            Session testSession = getTestSession();
            if (testSession != null) {
                usecase.setTestSession(testSession);
            }

            passParameters(usecase, parameters);

            usecase.checkPreconditions();

            if (succeeded(PRECONDITIONS_FAILED, usecase)) {

                usecase.lockInvolvedObjects();
                usecase.checkExecutionConditions();

                if (succeeded(EXECUTION_CONDITIONS_FAILED, usecase)) {
                    usecase.execute();

                    boolean success = succeeded(EXECUTION_FAILED, usecase);
                    this.targetUrl = usecase.getTargetURL(success);
                    if (success) {
                        usecase.checkPostconditions();
                        succeeded(POSTCONDITIONS_FAILED, usecase);
                    }
                }
            }

        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            if (resolver != null) {
                if (usecase != null) {
                    try {
                        resolver.release(usecase);
                    } catch (ServiceException e) {
                        throw new RuntimeException(e);
                    }
                }
                this.manager.release(resolver);
View Full Code Here

        UsecaseMessage[] messages;

        ServiceSelector selector = null;
        AccessControllerResolver acResolver = null;
        AccessController accessController = null;
        UsecaseResolver usecaseResolver = null;
        UsecaseAuthorizer authorizer = null;
        try {

            selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
                    + "Selector");
            acResolver = (AccessControllerResolver) selector.select(AccessControllerResolver.DEFAULT_RESOLVER);
            accessController = acResolver.resolveAccessController(this.webappUrl);

            Authorizer[] authorizers = accessController.getAuthorizers();
            for (int i = 0; i < authorizers.length; i++) {
                if (authorizers[i] instanceof UsecaseAuthorizer) {
                    authorizer = (UsecaseAuthorizer) authorizers[i];
                }
            }

            usecaseResolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);

            // filter item if usecase not allowed
            if (tab.getUsecase() != null) {
                if (getLogger().isDebugEnabled()) {
                    getLogger().debug("Found usecase [" + tab.getUsecase() + "]");
                }

                DocumentFactory factory;
                ContextUtility util = null;
                try {
                    util = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
                    Request request = util.getRequest();
                    factory = DocumentUtil.getDocumentFactory(this.manager, request);
                } finally {
                    if (util != null) {
                        this.manager.release(util);
                    }
                }

                Publication pub = PublicationUtil.getPublicationFromUrl(this.manager,
                        factory,
                        this.webappUrl);
                if (!authorizer.authorizeUsecase(tab.getUsecase(), this.roles, pub)) {
                    if (getLogger().isDebugEnabled()) {
                        getLogger().debug("Usecase not authorized");
                    }
                    messages = new UsecaseMessage[1];
                    messages[0] = new UsecaseMessage("Access denied");
                }
            }

            if (usecaseResolver.isRegistered(this.webappUrl, tab.getUsecase())) {
                Usecase usecase = null;
                try {
                    usecase = usecaseResolver.resolve(this.webappUrl, tab.getUsecase());
                    usecase.setSourceURL(this.webappUrl);
                    usecase.setName(tab.getUsecase());
                    String[] keys = tab.getParameterNames();
                    for (int i = 0; i < keys.length; i++) {
                        usecase.setParameter(keys[i], tab.getParameter(keys[i]));
                    }
                    usecase.checkPreconditions();
                    if (usecase.hasErrors()) {
                        if (getLogger().isDebugEnabled()) {
                            getLogger().debug("Usecase preconditions not complied");
                        }

                        List msgs = usecase.getErrorMessages();
                        messages = (UsecaseMessage[]) msgs.toArray(new UsecaseMessage[msgs.size()]);
                    } else {
                        messages = new UsecaseMessage[0];
                    }
                } finally {
                    if (usecase != null) {
                        usecaseResolver.release(usecase);
                    }
                }
            } else {
                messages = new UsecaseMessage[1];
                messages[0] = new UsecaseMessage("Usecase [" + tab.getUsecase()
View Full Code Here

            throws SAXException {

        Attributes attributes = attr;
        List messages = null;

        UsecaseResolver usecaseResolver = null;
        try {
            usecaseResolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);

            if (this.authorizer != null && localName.equals(ITEM_ELEMENT)) {
                String usecaseName = attr.getValue(NAMESPACE, USECASE_ATTRIBUTE);

                // filter item if usecase not allowed
                if (usecaseName != null) {
                    if (getLogger().isDebugEnabled()) {
                        getLogger().debug("Found usecase [" + usecaseName + "]");
                    }
                    if (!this.authorizer.authorizeUsecase(usecaseName,
                            this.roles,
                            this.publication)) {
                        if (getLogger().isDebugEnabled()) {
                            getLogger().debug("Usecase not authorized");
                        }
                        attributes = removeHrefAttribute(attr);
                        UsecaseMessage message = new UsecaseMessage("Access denied");
                        messages = Collections.singletonList(message);
                    }
                }

                if (usecaseResolver.isRegistered(this.sourceUrl, usecaseName)) {
                    Usecase usecase = null;
                    try {
                        usecase = usecaseResolver.resolve(this.sourceUrl, usecaseName);
                        usecase.setSourceURL(this.sourceUrl);
                        usecase.setName(usecaseName);
                        if (attr.getValue(HREF_ATTRIBUTE) != null) {
                            passRequestParameters(usecase, attr.getValue(HREF_ATTRIBUTE));
                        }
                        usecase.checkPreconditions();
                        if (usecase.hasErrors()) {
                            if (getLogger().isDebugEnabled()) {
                                getLogger().debug("Usecase preconditions not complied");
                            }

                            attributes = removeHrefAttribute(attr);
                            messages = usecase.getErrorMessages();
                        }
                    } finally {
                        if (usecase != null) {
                            usecaseResolver.release(usecase);
                        }
                    }
                }
            }
        } catch (final Exception e) {
View Full Code Here

public class Usecases extends AccessControlUsecase {

    protected void initParameters() {
        super.initParameters();

        UsecaseResolver resolver = null;
        try {
            resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
            String[] allUsecases = resolver.getUsecaseNames();
            SortedSet rootUsecases = new TreeSet();
            for (int i = 0; i < allUsecases.length; i++) {
                if (allUsecases[i].indexOf("/") == -1) {
                    rootUsecases.add(allUsecases[i]);
                }
View Full Code Here

        else {
            if (getLogger().isDebugEnabled()) {
               getLogger().debug("match() called for request parameter lenya.usecase = [" + usecaseName + "]; note that pattern is not relevant for this matcher");
            }
            // Parameter for usecase is set, see if this is a registered component
            UsecaseResolver resolver = null;
            try {
               resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
               String url = ServletHelper.getWebappURI(request);
               if (resolver.isRegistered(url, usecaseName)) {
                   result = Collections.EMPTY_MAP;
               }
               if (getLogger().isDebugEnabled()) {
                   getLogger().debug("Usecase [" + usecaseName + "] exists: [" + !(result == null) + "]");
               }
View Full Code Here

            this.usecaseNames.add(usecaseConfigs[i].getAttribute("name"));
        }
    }

    public void start() throws Exception {
        UsecaseResolver resolver = null;
        try {
            resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
            for (Iterator i = this.usecaseNames.iterator(); i.hasNext(); ) {
                resolver.register((String) i.next());
            }
        }
        finally {
            if (resolver != null) {
                this.manager.release(resolver);
View Full Code Here

    protected String getTabGroup(Request request) throws ProcessingException {
        String webappUri = ServletHelper.getWebappURI(request);
        String tabGroup = null;
        String usecaseName = request.getParameter("lenya.usecase");
        if (usecaseName != null) {
            UsecaseResolver usecaseResolver = null;
            Usecase usecase = null;
            try {
                usecaseResolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
                usecase = usecaseResolver.resolve(webappUri, usecaseName);
                if (usecase.getView() != null) {
                    Tab tab = usecase.getView().getTab();
                    if (tab != null) {
                        tabGroup = tab.getGroup();
                    }
                }
            } catch (ServiceException e) {
                throw new ProcessingException(e);
            } finally {
                if (usecaseResolver != null) {
                    if (usecase != null) {
                        try {
                            usecaseResolver.release(usecase);
                        } catch (ServiceException e) {
                            throw new RuntimeException(e);
                        }
                    }
                    this.manager.release(usecaseResolver);
View Full Code Here

            throws UsecaseException {

        this.errorMessages.clear();
        this.infoMessages.clear();

        UsecaseResolver resolver = null;
        Usecase usecase = null;
        this.result = SUCCESS;
        try {

            if (!isUsecaseAuthorized(webappUrl, usecaseName)) {
                this.errorMessages.add(new UsecaseMessage("Authorization of usecase " + usecaseName
                        + " failed."));
                this.result = AUTHORIZATION_FAILED;
                return;
            }

            resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
            usecase = resolver.resolve(webappUrl, usecaseName);

            Session testSession = getTestSession();
            if (testSession != null) {
                usecase.setTestSession(testSession);
            }

            usecase.getParameterNames(); // initialize usecase parameters to enable overriding
            passParameters(usecase, parameters);

            usecase.checkPreconditions();

            if (succeeded(PRECONDITIONS_FAILED, usecase)) {

                usecase.lockInvolvedObjects();
                usecase.checkExecutionConditions();

                if (succeeded(EXECUTION_CONDITIONS_FAILED, usecase)) {
                    usecase.execute();

                    boolean success = succeeded(EXECUTION_FAILED, usecase);
                    this.targetUrl = usecase.getTargetURL(success);
                    if (success) {
                        usecase.checkPostconditions();
                        succeeded(POSTCONDITIONS_FAILED, usecase);
                    }
                }
            }

        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            if (resolver != null) {
                if (usecase != null) {
                    try {
                        resolver.release(usecase);
                    } catch (ServiceException e) {
                        throw new RuntimeException(e);
                    }
                }
                this.manager.release(resolver);
View Full Code Here

            String usecaseName = steps[1];
           
            Request request = ObjectModelHelper.getRequest(objectModel);
            String webappUrl = ServletHelper.getWebappURI(request);
           
            UsecaseResolver resolver = null;
            Usecase usecase = null;
            try {
                resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
                usecase = resolver.resolve(webappUrl, usecaseName);
                if (usecase.getView() != null) {
                    Tab tab = usecase.getView().getTab();
                    if (tab != null) {
                        value = tab.getGroup();
                    }
                }
            } catch (ServiceException e) {
                throw new ConfigurationException("Error: ", e);
            }
            finally {
                if (resolver != null) {
                    if (usecase != null) {
                        try {
                            resolver.release(usecase);
                        } catch (ServiceException e) {
                            throw new RuntimeException(e);
                        }
                    }
                    this.manager.release(resolver);
View Full Code Here

TOP

Related Classes of org.apache.lenya.cms.usecase.UsecaseResolver

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.