Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.codehaus.mojo.gwt.webxml;
  
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 import java.io.File;
 import java.io.Writer;
 import java.util.List;
 

Version:
$Id$
 
 public class GwtWebInfProcessor
 {
     private static final String[] BEFORE_SERVLETS =
         { "icon""display-name""description""distributable""context-param""filter""filter-mapping",
             "listener""servlet" };
 
     private static final String[] AFTER_SERVLETS =
         { "servlet-mapping""session-config""mime-mapping""welcome-file-list""error-page""taglib",
             "resource-env-ref""resource-ref""security-constraint""login-config""security-role""env-entry",
             "ejb-ref""ejb-local-ref" };
 
     private static final String[] BEFORE_MAPPINGS =
         { "icon""display-name""description""distributable""context-param""filter""filter-mapping",
             "listener""servlet""servlet-mapping" };
 
     private static final String[] AFTER_MAPPINGS =
         { "session-config""mime-mapping""welcome-file-list""error-page""taglib""resource-env-ref",
             "resource-ref""security-constraint""login-config""security-role""env-entry""ejb-ref",
             "ejb-local-ref" };
 
     public void processFile webXmlCollection<ServletDescriptorservletDescriptors )
         throws Exception
     {
         processwebXmlwebXmlservletDescriptors );
     }
 
     public void processFile sourceWebXmlFile mergeWebXmlCollection<ServletDescriptorservletDescriptors )
         throws Exception
     {
         Document dom = insertServletssourceWebXmlservletDescriptors );
         XMLOutputter xmlOut = new XMLOutputter( Format.getPrettyFormat() );
         Writer writer = WriterFactory.newXmlWritermergeWebXml );
         xmlOut.outputdomwriter );
         writer.flush();
         writer.close();
     }
 
     private Document insertServletsFile webXmlCollection<ServletDescriptorservletDescriptors )
         throws JDOMExceptionIOException
     {
         /*
          * <!ELEMENT web-app (icon?, display-name?, description?, distributable?, context-param*, filter*,
          * filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?,
          * error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*,
          * env-entry*, ejb-ref*, ejb-local-ref*)>
          */
         Document dom = getWebXmlAsDocumentwebXml );
         Element webapp = dom.getRootElement();
         Namespace ns = webapp.getNamespace();
 
         int insertAfter = getInsertPositionwebapp );
         for ( Iterator<ServletDescriptorit = servletDescriptors.iterator(); it.hasNext(); )
         {
             ServletDescriptor d = it.next();
             XPath path = XPath.newInstance"/web-app/servlet/servlet-name[text() = '" + d.getName() + "']" );
            if ( path.selectNodesdom ).size() > 0 )
            {
                // Allready declared in target web.xml
                it.remove();
                continue;
            }
            insertAfter++;
            Element servlet = new Element"servlet"ns );
            Element servletName = new Element"servlet-name"ns );
            servletName.setTextd.getName() );
            servlet.addContentservletName );
            Element servletClass = new Element"servlet-class"ns );
            servletClass.setTextd.getClassName() );
            servlet.addContentservletClass );
            webapp.addContentinsertAfterservlet );
        }
        insertAfter = getInsertPositionwebapp );
        for ( ServletDescriptor d : servletDescriptors )
        {
            insertAfter++;
            Element servletMapping = new Element"servlet-mapping"ns );
            Element servletName = new Element"servlet-name"ns );
            servletName.setTextd.getName() );
            servletMapping.addContentservletName );
            Element urlPattern = new Element"url-pattern"ns );
            String path = d.getPath();
            if ( path.charAt( 0 ) != '/' )
            {
                path = '/' + path;
            }
            urlPattern.setTextpath );
            servletMapping.addContenturlPattern );
            webapp.addContentinsertAfterservletMapping );
        }
        return dom;
    }
    private int getInsertPositionElement webappString[] startAfterString[] stopBefore )
        throws JDOMExceptionIOException
    {
        List children = webapp.getContent();
        Content insertAfter = new Comment"inserted by gwt-maven-plugin" );
        ArrayList<StringnamesBefore = new ArrayList<String>();
        ArrayList<StringnamesAfter = new ArrayList<String>();
        for ( int i = 0; i < startAfter.lengthi++ )
        {
            namesBefore.addstartAfter[i] );
        }
        for ( int i = 0; i < stopBefore.lengthi++ )
        {
            namesAfter.addstopBefore[i] );
        }
        if ( ( children == null ) || ( children.size() == 0 ) )
        {
            webapp.addContentinsertAfter );
        }
        else
        {
            boolean foundPoint = false;
            for ( int i = 0; !foundPoint && i < children.size(); i++ )
            {
                Object o = children.geti );
                if ( !( o instanceof Element ) )
                {
                    continue;
                }
                Element child = (Elemento;
                if ( namesAfter.containschild.getName() ) )
                {
                    webapp.addContentiinsertAfter );
                    foundPoint = true;
                    break;
                }
                if ( !namesBefore.containschild.getName() ) )
                {
                    webapp.addContenti + 1, insertAfter );
                    foundPoint = true;
                    break;
                }
            }
            if ( !foundPoint )
            {
                webapp.addContentinsertAfter );
            }
        }
        return webapp.indexOfinsertAfter );
    }
    private Document getWebXmlAsDocumentFile webXml )
        throws JDOMExceptionIOException
    {
        SAXBuilder builder = new SAXBuilderfalse );
        builder.setFeature"http://apache.org/xml/features/nonvalidating/load-external-dtd"false );
        return builder.buildwebXml.toURI().toURL() );
    }
New to GrepCode? Check out our FAQ X