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


        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);
               if (resolver.isRegistered(usecaseName)) {
                   result = Collections.EMPTY_MAP;
               }
               if (getLogger().isDebugEnabled()) {
                   getLogger().debug("Usecase [" + usecaseName + "] exists: [" + !(result == null) + "]");
               }
View Full Code Here

    public void startElement(String uri, String localName, String raw, Attributes attr)
            throws SAXException {

        Attributes attributes = attr;

        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);
                    }
                }

                if (usecaseResolver.isRegistered(usecaseName)) {
                    Usecase usecase = null;
                    try {
                        usecase = usecaseResolver.resolve(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);
                        }
                    } 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

        String usecaseName = getParameterAsString(USECASE);
        if (usecaseName.equals("")) {
            addErrorMessage("Please enter a usecase name.");
        } else {
            UsecaseResolver resolver = null;
            try {
                resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
                if (!resolver.isRegistered(getSourceURL(), usecaseName)) {
                    addErrorMessage("The usecase '" + usecaseName + "' is not registered.");
                }
            } finally {
                if (resolver != null) {
                    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;
       
        String usecaseName = tab.getUsecase();
        if (usecaseName == null) {
            throw new IllegalArgumentException("The usecase name of the tab [" + tab.getName() + "] is 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(usecaseName, 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, usecaseName)) {
                Usecase usecase = null;
                try {
                    usecase = usecaseResolver.resolve(this.webappUrl, usecaseName);
                    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];
                String[] params = {};
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.