Package org.apache.geronimo.web25.deployment.merge

Examples of org.apache.geronimo.web25.deployment.merge.MergeHelper


    @Override
    public void merge(Servlet srcServlet, Servlet targetServlet, MergeContext mergeContext) throws DeploymentException {
        String servletName = srcServlet.getServletName();
        for (ParamValue paramValue : srcServlet.getInitParam()) {
            MergeItem existedMergeItem = (MergeItem) mergeContext.getAttribute(createServletInitParamKey(servletName, paramValue.getParamName()));
            if (existedMergeItem == null) {
                targetServlet.getInitParam().add(paramValue);
                addServletInitParam(servletName, paramValue, ElementSource.WEB_FRAGMENT, mergeContext.getCurrentJarUrl(), mergeContext);
            } else {
                ParamValue existedParamValue = (ParamValue) existedMergeItem.getValue();
                switch (existedMergeItem.getSourceType()) {
                case WEB_XML:
                    continue;
                case WEB_FRAGMENT:
                    if (existedParamValue.getParamValue().equals(paramValue.getParamValue())
                            || existedMergeItem.getBelongedURL().equals(mergeContext.getCurrentJarUrl())) {
                        break;
                    } else {
                        throw new DeploymentException(WebDeploymentMessageUtils.createDuplicateKeyValueMessage("servlet " + servletName, "param-name", paramValue.getParamName(),
                                "param-value", existedParamValue.getParamValue(), existedMergeItem.getBelongedURL(), paramValue.getParamValue(), mergeContext
                                        .getCurrentJarUrl()));
                    }
                case ANNOTATION:
                    //Spec 8.1.n.iii Init params for servlets and filters defined via annotations, will be
                    //overridden in the descriptor if the name of the init param exactly matches
                    //the name specified via the annotation. Init params are additive between the
                    //annotations and descriptors.
                    //In my understanding, the value of init-param should be overridden even if it is merged from annotation before the current web-fragment.xml file
                    existedParamValue.setParamValue(paramValue.getParamValue());
                    existedMergeItem.setBelongedURL(mergeContext.getCurrentJarUrl());
                    existedMergeItem.setSourceType(ElementSource.WEB_FRAGMENT);
                }
            }
        }
    }
View Full Code Here


    public static boolean isServletInitParamConfigured(String servletName, String paramName, MergeContext mergeContext) {
        return mergeContext.containsAttribute(createServletInitParamKey(servletName, paramName));
    }

    public static void addServletInitParam(String servletName, ParamValue paramValue, ElementSource source, String relativeUrl, MergeContext mergeContext) {
        mergeContext.setAttribute(createServletInitParamKey(servletName, paramValue.getParamName()), new MergeItem(paramValue, relativeUrl, source));
    }
View Full Code Here

            }
        }
    }

    private boolean mergeSingleAttribute(MergeContext mergeContext, String elementName, String key, String value, String jarUrl, ElementSource elementSource) throws DeploymentException {
        MergeItem mergeItem = (MergeItem) mergeContext.getAttribute(key);
        if (mergeItem != null) {
            if (mergeItem.getSourceType().equals(ElementSource.WEB_FRAGMENT)) {
                if (!mergeItem.getValue().equals(value)) {
                    throw new DeploymentException(WebDeploymentMessageUtils.createDuplicateValueMessage("session-config", elementName, (String) mergeItem.getValue(), mergeItem.getBelongedURL(),
                            value, jarUrl));
                }
            }
            return false;
        } else {
            mergeContext.setAttribute(key, new MergeItem(value, jarUrl, elementSource));
            return elementSource.equals(ElementSource.WEB_FRAGMENT);
        }
    }
View Full Code Here

            if (isMimeMappingConfiguredInWebXML(extension, mergeContext)) {
                continue;
            }
            String jarUrl = mergeContext.getCurrentJarUrl();
            String qualifedMimeMappingName = createMimeMappingConfiguredInWebFragmentXMLKey(extension);
            MergeItem existedMimeMapping = (MergeItem) mergeContext.getAttribute(qualifedMimeMappingName);
            if (existedMimeMapping == null) {
                mergeContext.setAttribute(qualifedMimeMappingName, new MergeItem(mimeMapping.getMimeType(), jarUrl, ElementSource.WEB_FRAGMENT));
                webApp.getMimeMapping().add(mimeMapping);
            } else if (!mimeMapping.getMimeType().equals(existedMimeMapping.getValue())) {
                throw new DeploymentException(WebDeploymentMessageUtils.createDuplicateKeyValueMessage("mime-mapping", "extension", extension, "mime-type", (String) existedMimeMapping.getValue(), existedMimeMapping
                        .getBelongedURL(), mimeMapping.getMimeType(), jarUrl));
            }
        }
    }
View Full Code Here

    @Override
    public void merge(Filter srcFilter, Filter targetFilter, MergeContext mergeContext) throws DeploymentException {
        String filterName = srcFilter.getFilterName();
        for (ParamValue paramValue : srcFilter.getInitParam()) {
            MergeItem existedMergeItem = (MergeItem) mergeContext.getAttribute(createFilterInitParamKey(filterName, paramValue.getParamName()));
            if (existedMergeItem == null) {
                targetFilter.getInitParam().add(paramValue);
                addFilterInitParam(filterName, paramValue, ElementSource.WEB_FRAGMENT, mergeContext.getCurrentJarUrl(), mergeContext);
            } else {
                ParamValue existedParamValue = (ParamValue) existedMergeItem.getValue();
                switch (existedMergeItem.getSourceType()) {
                case WEB_XML:
                    continue;
                case WEB_FRAGMENT:
                    if (existedParamValue.getParamValue().equals(paramValue.getParamValue())
                            || existedMergeItem.getBelongedURL().equals(mergeContext.getCurrentJarUrl())) {
                        break;
                    } else {
                        throw new DeploymentException(WebDeploymentMessageUtils.createDuplicateKeyValueMessage("filter " + filterName, "param-name", paramValue.getParamName(),
                                "param-value", existedParamValue.getParamValue(), existedMergeItem.getBelongedURL(), paramValue.getParamValue(), mergeContext
                                        .getCurrentJarUrl()));
                    }
                case ANNOTATION:
                    //Spec 8.1.n.iii Init params for servlets and filters defined via annotations, will be
                    //overridden in the descriptor if the name of the init param exactly matches
                    //the name specified via the annotation. Init params are additive between the
                    //annotations and descriptors.
                    //In my understanding, the value of init-param should be overridden even if it is merged from annotation before the current web-fragment.xml file
                    existedParamValue.setParamValue(paramValue.getParamValue());
                    existedMergeItem.setBelongedURL(mergeContext.getCurrentJarUrl());
                    existedMergeItem.setSourceType(ElementSource.WEB_FRAGMENT);
                }
            }
        }
    }
View Full Code Here

    public static boolean isFilterInitParamConfigured(String filterName, String paramName, MergeContext mergeContext) {
        return mergeContext.containsAttribute(createFilterInitParamKey(filterName, paramName));
    }

    public static void addFilterInitParam(String filterName, ParamValue paramValue, ElementSource source, String relativeUrl, MergeContext mergeContext) {
        mergeContext.setAttribute(createFilterInitParamKey(filterName, paramValue.getParamName()), new MergeItem(paramValue, relativeUrl, source));
    }
View Full Code Here

    @Override
    public void merge(WebFragment webFragment, WebApp webApp, MergeContext mergeContext) throws DeploymentException {
        for (ResourceEnvRef srcResourceEnvRef : webFragment.getResourceEnvRef()) {
            String resourceEnvRefName = srcResourceEnvRef.getResourceEnvRefName();
            String resourceEnvRefKey = createResourceEnvRefKey(resourceEnvRefName);
            MergeItem mergeItem = (MergeItem) mergeContext.getAttribute(resourceEnvRefKey);
            if (mergeItem != null) {
                if (mergeItem.isFromWebFragment()) {
                    throw new DeploymentException(WebDeploymentMessageUtils.createDuplicateJNDIRefMessage("resource-env-ref", resourceEnvRefName, mergeItem.getBelongedURL(), mergeContext.getCurrentJarUrl()));
                } else if (mergeItem.isFromWebXml() && !isResourceEnvRefInjectTargetsConfiguredInInitialWebXML(resourceEnvRefName, mergeContext)) {
                    //Merge InjectTarget
                    ResourceEnvRef resourceEnvRef = (ResourceEnvRef) mergeItem.getValue();
                    for (InjectionTarget injectTarget : srcResourceEnvRef.getInjectionTarget()) {
                        String resourceEnvRefInjectTargetKey = createResourceEnvRefInjectTargetKey(resourceEnvRefName, injectTarget.getInjectionTargetClass(), injectTarget
                                .getInjectionTargetName());
                        if (!mergeContext.containsAttribute(resourceEnvRefInjectTargetKey)) {
                            resourceEnvRef.getInjectionTarget().add(injectTarget);
                            mergeContext.setAttribute(resourceEnvRefInjectTargetKey, Boolean.TRUE);
                        }
                    }
                }
            } else {
                webApp.getResourceEnvRef().add(srcResourceEnvRef);
                mergeContext.setAttribute(resourceEnvRefKey, new MergeItem(srcResourceEnvRef, mergeContext.getCurrentJarUrl(), ElementSource.WEB_FRAGMENT));
                for (InjectionTarget injectionTarget : srcResourceEnvRef.getInjectionTarget()) {
                    mergeContext.setAttribute(createResourceEnvRefInjectTargetKey(resourceEnvRefName, injectionTarget.getInjectionTargetClass(), injectionTarget.getInjectionTargetName()
                            ), Boolean.TRUE);
                }
            }
View Full Code Here

    @Override
    public void preProcessWebXmlElement(WebApp webApp, MergeContext mergeContext) throws DeploymentException {
        for (ResourceEnvRef resourceEnvRef : webApp.getResourceEnvRef()) {
            String resourceEnvRefName = resourceEnvRef.getResourceEnvRefName();
            mergeContext.setAttribute(createResourceEnvRefKey(resourceEnvRefName), new MergeItem(resourceEnvRef, null, ElementSource.WEB_XML));
            //Create an attribute tag to indicate whether injectTarget is configured in web.xml file
            if (!resourceEnvRef.getInjectionTarget().isEmpty()) {
                mergeContext.setAttribute(createResourceEnvRefInjectTargetConfiguredInWebXMLKey(resourceEnvRefName), Boolean.TRUE);
            }
            for (InjectionTarget injectionTarget : resourceEnvRef.getInjectionTarget()) {
View Full Code Here

    @Override
    public void merge(WebFragment webFragment, WebApp webApp, MergeContext mergeContext) throws DeploymentException {
        for (EjbRef srcEjbRef : webFragment.getEjbRef()) {
            String ejbRefName = srcEjbRef.getEjbRefName();
            String ejbRefKey = createEjbRefKey(ejbRefName);
            MergeItem mergeItem = (MergeItem) mergeContext.getAttribute(ejbRefKey);
            if (mergeItem != null) {
                if (mergeItem.isFromWebFragment()) {
                    throw new DeploymentException(WebDeploymentMessageUtils.createDuplicateJNDIRefMessage("ejb-ref", ejbRefName, mergeItem.getBelongedURL(), mergeContext.getCurrentJarUrl()));
                } else if (mergeItem.isFromWebXml() && !isEjbRefInjectTargetsConfiguredInInitialWebXML(ejbRefName, mergeContext)) {
                    //Merge InjectTarget
                    EjbRef ejbRef = (EjbRef) mergeItem.getValue();
                    for (InjectionTarget injectTarget : srcEjbRef.getInjectionTarget()) {
                        String ejbRefInjectTargetKey = createEjbRefInjectTargetKey(ejbRefName, injectTarget.getInjectionTargetClass(), injectTarget
                                .getInjectionTargetName());
                        if (!mergeContext.containsAttribute(ejbRefInjectTargetKey)) {
                            ejbRef.getInjectionTarget().add(injectTarget);
                            mergeContext.setAttribute(ejbRefInjectTargetKey, Boolean.TRUE);
                        }
                    }
                }
            } else {
                webApp.getEjbRef().add(srcEjbRef);
                mergeContext.setAttribute(ejbRefKey, new MergeItem(srcEjbRef, mergeContext.getCurrentJarUrl(), ElementSource.WEB_FRAGMENT));
                for (InjectionTarget injectionTarget : srcEjbRef.getInjectionTarget()) {
                    mergeContext.setAttribute(createEjbRefInjectTargetKey(ejbRefName, injectionTarget.getInjectionTargetClass(), injectionTarget.getInjectionTargetName()
                            ), Boolean.TRUE);
                }
            }
View Full Code Here

    @Override
    public void preProcessWebXmlElement(WebApp webApp, MergeContext mergeContext) throws DeploymentException {
        for (EjbRef ejbRef : webApp.getEjbRef()) {
            String ejbRefName = ejbRef.getEjbRefName();
            mergeContext.setAttribute(createEjbRefKey(ejbRefName), new MergeItem(ejbRef, null, ElementSource.WEB_XML));
            //Create an attribute tag to indicate whether injectTarget is configured in web.xml file
            if (ejbRef.getInjectionTarget().size() > 0) {
                mergeContext.setAttribute(createEjbRefInjectTargetConfiguredInWebXMLKey(ejbRefName), Boolean.TRUE);
            }
            for (InjectionTarget injectionTarget : ejbRef.getInjectionTarget()) {
View Full Code Here

TOP

Related Classes of org.apache.geronimo.web25.deployment.merge.MergeHelper

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.