Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2014, Red Hat Middleware LLC, and individual contributors
   * as indicated by the @author tags. See the copyright.txt file in the
   * distribution for a full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jboss.as.webservices.tomcat;
 
 import static org.jboss.as.webservices.WSLogger.ROOT_LOGGER;
 import static org.jboss.as.webservices.WSMessages.MESSAGES;
 
 import java.util.List;
 import java.util.Set;
 
 import  org.jboss.metadata.javaee.spec.ParamValueMetaData;
 import  org.jboss.metadata.web.jboss.JBossWebMetaData;
 import  org.jboss.metadata.web.spec.ServletMetaData;
The modifier of jboss web meta data. It configures WS transport for every webservice endpoint plus propagates WS stack specific context parameters if required.

Author(s):
Richard Opalka
Thomas Diesler
Alessio Soldano
 
 final class WebMetaDataModifier {
 
     WebMetaDataModifier() {
         super();
     }

    
Modifies web meta data to configure webservice stack transport and properties.

Parameters:
dep webservice deployment
 
     void modify(final Deployment dep) {
         final JBossWebMetaData jbossWebMD = WSHelper.getOptionalAttachment(dep, JBossWebMetaData.class);
 
         if (jbossWebMD != null) {
             this.configureEndpoints(depjbossWebMD);
             this.modifyContextRoot(depjbossWebMD);
         }
     }

    
Configures transport servlet class for every found webservice endpoint.

Parameters:
dep webservice deployment
jbossWebMD web meta data
 
     private void configureEndpoints(final Deployment depfinal JBossWebMetaData jbossWebMD) {
         final String transportClassName = this.getTransportClassName(dep);
         .modifyingServlets();
 
         // get a list of the endpoint bean class names
         final Set<StringepNames = new HashSet<String>();
         for (Endpoint ep : dep.getService().getEndpoints()) {
             epNames.add(ep.getTargetBeanName());
         }
 
         // fix servlet class names for endpoints
         for (final ServletMetaData servletMD : jbossWebMD.getServlets()) {
             final String endpointClassName = ASHelper.getEndpointClassName(servletMD);
             if (endpointClassName != null && endpointClassName.length() > 0) { // exclude JSP
                 if (epNames.contains(endpointClassName)) {
                     // set transport servlet
                     servletMD.setServletClass(WSFServlet.class.getName());
                     .settingTransportClass(transportClassNameendpointClassName);
                     final List<ParamValueMetaData> initParams = WebMetaDataHelper.getServletInitParams(servletMD);
                     // configure transport class name
                     WebMetaDataHelper.newParamValue(.transportClassNameinitParams);
                     // configure webservice endpoint
                     WebMetaDataHelper.newParamValue(.endpointClassNameinitParams);
                 }
            }
        }
    }

    
Modifies context root.

Parameters:
dep webservice deployment
jbossWebMD web meta data
    private void modifyContextRoot(final Deployment depfinal JBossWebMetaData jbossWebMD) {
        final String contextRoot = dep.getService().getContextRoot();
        .settingContextRoot(contextRootdep.getSimpleName());
        jbossWebMD.setContextRoot(contextRoot);
    }

    
Returns stack specific transport class name.

Parameters:
dep webservice deployment
Returns:
stack specific transport class name
Throws:
IllegalStateException if transport class name is not found in deployment properties map
    private String getTransportClassName(final Deployment dep) {
        String transportClassName = (Stringdep.getProperty(.);
        if (transportClassName == nullthrow .missingDeploymentProperty(.);
        return transportClassName;
    }
New to GrepCode? Check out our FAQ X