Author: richard.opalka(a)jboss.com
Date: 2009-08-06 09:30:09 -0400 (Thu, 06 Aug 2009)
New Revision: 10497
Added:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataCreator.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataHelper.java
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataCreatingDeploymentAspect.java
Log:
[JBWS-2332] another refactoring
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataCreatingDeploymentAspect.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataCreatingDeploymentAspect.java 2009-08-05
15:32:43 UTC (rev 10496)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataCreatingDeploymentAspect.java 2009-08-06
13:30:09 UTC (rev 10497)
@@ -21,31 +21,9 @@
*/
package org.jboss.webservices.integration.tomcat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
-import org.jboss.metadata.web.jboss.JBossServletMetaData;
-import org.jboss.metadata.web.jboss.JBossServletsMetaData;
-import org.jboss.metadata.web.jboss.JBossWebMetaData;
-import org.jboss.metadata.web.spec.AuthConstraintMetaData;
-import org.jboss.metadata.web.spec.LoginConfigMetaData;
-import org.jboss.metadata.web.spec.SecurityConstraintMetaData;
-import org.jboss.metadata.web.spec.ServletMappingMetaData;
-import org.jboss.metadata.web.spec.TransportGuaranteeType;
-import org.jboss.metadata.web.spec.UserDataConstraintMetaData;
-import org.jboss.metadata.web.spec.WebResourceCollectionMetaData;
-import org.jboss.metadata.web.spec.WebResourceCollectionsMetaData;
import org.jboss.wsf.common.integration.WSHelper;
-import org.jboss.wsf.spi.annotation.WebContext;
import org.jboss.wsf.spi.deployment.Deployment;
import org.jboss.wsf.spi.deployment.DeploymentAspect;
-import org.jboss.wsf.spi.deployment.Endpoint;
-import org.jboss.wsf.spi.metadata.j2ee.EJBArchiveMetaData;
-import org.jboss.wsf.spi.metadata.j2ee.EJBMetaData;
-import org.jboss.wsf.spi.metadata.j2ee.EJBSecurityMetaData;
/**
* A deployment aspect that generates web app meta data for EJB endpoints.
@@ -56,12 +34,9 @@
public final class WebMetaDataCreatingDeploymentAspect extends DeploymentAspect
{
- /** EJB 21 security meta data builder. */
- private SecurityMetaDataAccessorEJB ejb21SecurityAccessor = new
SecurityMetaDataAccessorEJB21();
+ /** Web meta data creator. */
+ private WebMetaDataCreator webMetaDataCreator = new WebMetaDataCreator();
- /** EJB 3 security meta data builder. */
- private SecurityMetaDataAccessorEJB ejb3SecurityAccessor = new
SecurityMetaDataAccessorEJB3();
-
/**
* Constructor.
*/
@@ -81,293 +56,8 @@
if (isEjbDeployment)
{
- final DeploymentUnit unit = WSHelper.getRequiredAttachment(dep,
DeploymentUnit.class);
- final JBossWebMetaData jbossWebMD = this.createWebMetaData(dep);
-
- dep.addAttachment(JBossWebMetaData.class, jbossWebMD);
- unit.addAttachment(JBossWebMetaData.class, jbossWebMD);
+ this.webMetaDataCreator.create(dep);
}
}
- /**
- * Creates web meta data for EJB deployment.
- *
- * @param dep webservice deployment
- * @return web meta data for EJB deployment
- */
- private JBossWebMetaData createWebMetaData(final Deployment dep)
- {
- final JBossWebMetaData jbossWebMD = new JBossWebMetaData();
-
- this.createWebAppDescriptor(dep, jbossWebMD);
- this.createJBossWebAppDescriptor(dep, jbossWebMD);
-
- return jbossWebMD;
- }
-
- private void createWebAppDescriptor(final Deployment dep, final JBossWebMetaData
jbossWebMD)
- {
- this.createServlets(dep, jbossWebMD);
- this.createServletMappings(dep, jbossWebMD);
-
- String authMethod = null;
-
- // Add web-app/security-constraint for each port component
- for (Endpoint ep : dep.getService().getEndpoints())
- {
- String ejbName = ep.getShortName();
-
- final SecurityMetaDataAccessorEJB ejbMDAccessor =
this.getEjbSecurityMetaDataAccessor(dep);
- Boolean secureWSDLAccess = ejbMDAccessor.isSecureWsdlAccess(ep);
- String transportGuarantee = ejbMDAccessor.getTransportGuarantee(ep);
- String beanAuthMethod = ejbMDAccessor.getAuthMethod(ep);
-
- if (beanAuthMethod != null || transportGuarantee != null)
- {
- /*
- <security-constraint>
- <web-resource-collection>
- <web-resource-name>TestUnAuthPort</web-resource-name>
- <url-pattern>/HSTestRoot/TestUnAuth/*</url-pattern>
- </web-resource-collection>
- <auth-constraint>
- <role-name>*</role-name>
- </auth-constraint>
- <user-data-constraint>
- <transport-guarantee>NONE</transport-guarantee>
- </user-data-constraint>
- </security-constraint>
- */
- List<SecurityConstraintMetaData> securityContraints =
jbossWebMD.getSecurityContraints();
- if (securityContraints == null)
- {
- securityContraints = new ArrayList<SecurityConstraintMetaData>();
- jbossWebMD.setSecurityContraints(securityContraints);
- }
- SecurityConstraintMetaData securityConstraint = new
SecurityConstraintMetaData();
- securityContraints.add(securityConstraint);
-
- WebResourceCollectionsMetaData resourceCollections =
securityConstraint.getResourceCollections();
- if (resourceCollections == null)
- {
- resourceCollections = new WebResourceCollectionsMetaData();
- securityConstraint.setResourceCollections(resourceCollections);
- }
- WebResourceCollectionMetaData resourceCollection = new
WebResourceCollectionMetaData();
- resourceCollections.add(resourceCollection);
-
- resourceCollection.setWebResourceName(ejbName);
- resourceCollection.setUrlPatterns(Arrays.asList(new String[] {
ep.getURLPattern() }));
- ArrayList<String> httpMethods = new ArrayList<String>();
- resourceCollection.setHttpMethods(httpMethods);
- if (Boolean.TRUE.equals(secureWSDLAccess))
- {
- httpMethods.add("GET");
- }
- httpMethods.add("POST");
-
- // Optional auth-constraint
- if (beanAuthMethod != null)
- {
- // Only the first auth-method gives the war login-config/auth-method
- if (authMethod == null)
- authMethod = beanAuthMethod;
-
- AuthConstraintMetaData authConstraint = new AuthConstraintMetaData();
- authConstraint.setRoleNames(Arrays.asList(new String[] { "*"
}));
- securityConstraint.setAuthConstraint(authConstraint);
- }
- // Optional user-data-constraint
- if (transportGuarantee != null)
- {
- UserDataConstraintMetaData userDataConstraint = new
UserDataConstraintMetaData();
-
userDataConstraint.setTransportGuarantee(TransportGuaranteeType.valueOf(transportGuarantee));
- securityConstraint.setUserDataConstraint(userDataConstraint);
- }
- }
- }
-
- // Optional login-config/auth-method
- if (authMethod != null)
- {
- LoginConfigMetaData loginConfig = jbossWebMD.getLoginConfig();
- if (loginConfig == null)
- {
- loginConfig = new LoginConfigMetaData();
- jbossWebMD.setLoginConfig(loginConfig);
- }
- loginConfig.setAuthMethod(authMethod);
- loginConfig.setRealmName("EJBServiceEndpointServlet Realm");
-
- this.setSecurityRoles(jbossWebMD, dep);
- }
- }
-
- /**
- * Creates jboss-web meta data.
- *
- * <jboss-web>
- * <security-domain>java:/jaas/custom-security-domain</security-domain>
- * <context-root>/custom-context-root</context-root>
- * <virtual-host>custom-virtual-host-1</virtual-host>
- * ...
- * <virtual-host>custom-virtual-host-N</virtual-host>
- * </jboss-web>
- *
- * @param dep webservice deployment
- * @param jbossWebMD jboss web meta data
- */
- private void createJBossWebAppDescriptor(final Deployment dep, final JBossWebMetaData
jbossWebMD)
- {
- // Set security domain
- this.setSecurityDomain(jbossWebMD, dep);
-
- // Set context root
- final String contextRoot = dep.getService().getContextRoot();
- jbossWebMD.setContextRoot(contextRoot);
-
- // Set virtual hosts
- final List<String> virtualHosts = dep.getService().getVirtualHosts();
- jbossWebMD.setVirtualHosts(virtualHosts);
- }
-
- /**
- * Returns security builder associated with EJB deployment.
- *
- * @param dep webservice EJB deployment
- * @return security builder for EJB deployment
- */
- private SecurityMetaDataAccessorEJB getEjbSecurityMetaDataAccessor(final Deployment
dep)
- {
- final boolean isJaxws = WSHelper.isJaxwsDeployment(dep);
-
- return isJaxws ? this.ejb3SecurityAccessor : this.ejb21SecurityAccessor;
- }
-
- /**
- * Creates servlets part of web.xml descriptor.
- *
- * <pre>
- * <servlet>
- * <servlet-name>WSEndpointShortName</servlet-name>
- *
<servlet-class>WSEndpointTargetBeanName</servlet-class>
- * </servlet>
- * </pre>
- *
- * @param dep webservice deployemnt
- * @param jbossWebMD jboss web meta data
- */
- private void createServlets(final Deployment dep, final JBossWebMetaData jbossWebMD)
- {
- final JBossServletsMetaData servlets = this.getServlets(jbossWebMD);
-
- for (final Endpoint endpoint : dep.getService().getEndpoints())
- {
- final JBossServletMetaData servlet = new JBossServletMetaData();
- servlet.setServletName(endpoint.getShortName());
- servlet.setServletClass(endpoint.getTargetBeanName());
-
- servlets.add(servlet);
- }
- }
-
- /**
- * Creates servlet-mapping part of web.xml descriptor.
- *
- * <pre>
- * <servlet-mapping>
- * <servlet-name>WSEndpointShortName</servlet-name>
- * <url-pattern>WSEndpointURLPattern</url-pattern>
- * </servlet-mapping>
- * </pre>
- *
- * @param dep webservice deployemnt
- * @param jbossWebMD jboss web meta data
- */
- private void createServletMappings(final Deployment dep, final JBossWebMetaData
jbossWebMD)
- {
- final List<ServletMappingMetaData> servletMappings =
this.getServletMappings(jbossWebMD);
-
- for (final Endpoint ep : dep.getService().getEndpoints())
- {
- final ServletMappingMetaData servletMapping = new ServletMappingMetaData();
- servletMapping.setServletName(ep.getShortName());
- servletMapping.setUrlPatterns(Arrays.asList(new String[] { ep.getURLPattern()
})); // TODO:
-
- servletMappings.add(servletMapping);
- }
- }
-
- /**
- * Gests servlets meta data from jboss web meta data.
- * If not found it creates new servlets meta data
- * and associates them with jboss web meta data.
- *
- * @param jbossWebMD jboss web meta data
- * @return servlets meta data
- */
- private JBossServletsMetaData getServlets(final JBossWebMetaData jbossWebMD)
- {
- JBossServletsMetaData servlets = jbossWebMD.getServlets();
- if (servlets == null)
- {
- servlets = new JBossServletsMetaData();
- jbossWebMD.setServlets(servlets);
- }
-
- return servlets;
- }
-
- /**
- * Gests servlet mappings meta data from jboss web meta data.
- * If not found it creates new servlet mappings meta data
- * and associates them with jboss web meta data.
- *
- * @param jbossWebMD jboss web meta data
- * @return servlet mappings meta data
- */
- private List<ServletMappingMetaData> getServletMappings(final JBossWebMetaData
jbossWebMD)
- {
- List<ServletMappingMetaData> servletMappings =
jbossWebMD.getServletMappings();
- if (servletMappings == null)
- {
- servletMappings = new ArrayList<ServletMappingMetaData>();
- jbossWebMD.setServletMappings(servletMappings);
- }
-
- return servletMappings;
- }
-
- /**
- * @see
org.jboss.webservices.integration.tomcat.SecurityMetaDataAccessorEJB#addSecurityDomain(JBossWebMetaData,
Deployment)
- *
- * @param jbossWebMD jboss web meta data
- * @param dep webservice deployment
- */
- public final void setSecurityDomain(final JBossWebMetaData jbossWebMD, final
Deployment dep)
- {
- final String securityDomain =
this.getEjbSecurityMetaDataAccessor(dep).getSecurityDomain(dep); // TODO: review
(javadoc)
-
- if (securityDomain != null)
- {
- jbossWebMD.setSecurityDomain(securityDomain);
- }
- }
-
- /**
- * @see
org.jboss.webservices.integration.tomcat.SecurityMetaDataAccessorEJB#addSecurityRoles(JBossWebMetaData,
Deployment)
- *
- * @param jbossWebMD jboss web meta data
- * @param dep webservice deployment
- */
- public final void setSecurityRoles(final JBossWebMetaData jbossWebMD, final Deployment
dep)
- {
- final SecurityRolesMetaData securityRolesMD =
this.getEjbSecurityMetaDataAccessor(dep).getSecurityRoles(dep); // TODO: review (javadoc)
-
- if (securityRolesMD != null)
- {
- jbossWebMD.setSecurityRoles(securityRolesMD);
- }
- }
-
}
Added:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataCreator.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataCreator.java
(rev 0)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataCreator.java 2009-08-06
13:30:09 UTC (rev 10497)
@@ -0,0 +1,298 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.webservices.integration.tomcat;
+
+import java.util.List;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
+import org.jboss.metadata.web.jboss.JBossServletsMetaData;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.metadata.web.spec.LoginConfigMetaData;
+import org.jboss.metadata.web.spec.SecurityConstraintMetaData;
+import org.jboss.metadata.web.spec.ServletMappingMetaData;
+import org.jboss.metadata.web.spec.WebResourceCollectionsMetaData;
+import org.jboss.wsf.common.integration.WSHelper;
+import org.jboss.wsf.spi.deployment.Deployment;
+import org.jboss.wsf.spi.deployment.Endpoint;
+
+/**
+ * Creator of web app meta data for EJB endpoints.
+ *
+ * @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
+ * @author <a href="mailto:tdiesler@redhat.com">Thomas Diesler</a>
+ */
+final class WebMetaDataCreator
+{
+ /** EJB 21 security meta data builder. */
+ private final SecurityMetaDataAccessorEJB ejb21SecurityAccessor = new
SecurityMetaDataAccessorEJB21();
+
+ /** EJB 3 security meta data builder. */
+ private final SecurityMetaDataAccessorEJB ejb3SecurityAccessor = new
SecurityMetaDataAccessorEJB3();
+
+ /**
+ * Constructor.
+ */
+ WebMetaDataCreator()
+ {
+ super();
+ }
+
+ /**
+ * Creates web meta data for EJB deployments.
+ *
+ * @param dep webservice deployment
+ */
+ public void create(final Deployment dep)
+ {
+ final DeploymentUnit unit = WSHelper.getRequiredAttachment(dep,
DeploymentUnit.class);
+ final JBossWebMetaData jbossWebMD = this.createWebMetaData(dep);
+
+ dep.addAttachment(JBossWebMetaData.class, jbossWebMD);
+ unit.addAttachment(JBossWebMetaData.class, jbossWebMD);
+ }
+
+ /**
+ * Creates web meta data for EJB deployment.
+ *
+ * @param dep webservice deployment
+ * @return web meta data for EJB deployment
+ */
+ private JBossWebMetaData createWebMetaData(final Deployment dep)
+ {
+ final JBossWebMetaData jbossWebMD = new JBossWebMetaData();
+
+ this.createWebAppDescriptor(dep, jbossWebMD);
+ this.createJBossWebAppDescriptor(dep, jbossWebMD);
+
+ return jbossWebMD;
+ }
+
+ private void createWebAppDescriptor(final Deployment dep, final JBossWebMetaData
jbossWebMD)
+ {
+ this.createServlets(dep, jbossWebMD);
+ this.createServletMappings(dep, jbossWebMD);
+ this.createSecurityConstraints(dep, jbossWebMD);
+
+ // Optional login-config/auth-method
+ final String authMethod = this.getAuthMethodForDeployment(dep);
+
+ if (authMethod != null)
+ {
+ LoginConfigMetaData loginConfig = jbossWebMD.getLoginConfig();
+ if (loginConfig == null)
+ {
+ loginConfig = new LoginConfigMetaData();
+ jbossWebMD.setLoginConfig(loginConfig);
+ }
+ loginConfig.setAuthMethod(authMethod);
+ loginConfig.setRealmName("EJBServiceEndpointServlet Realm"); // TODO:
review if still necessary and what it means
+
+ final SecurityMetaDataAccessorEJB ejbMDAccessor =
this.getEjbSecurityMetaDataAccessor(dep);
+ final SecurityRolesMetaData securityRolesMD =
ejbMDAccessor.getSecurityRoles(dep);
+
+ if (securityRolesMD != null)
+ {
+ jbossWebMD.setSecurityRoles(securityRolesMD);
+ }
+ }
+ }
+
+ /**
+ * Creates jboss-web meta data.
+ *
+ * <jboss-web>
+ * <security-domain>java:/jaas/custom-security-domain</security-domain>
+ * <context-root>/custom-context-root</context-root>
+ * <virtual-host>custom-virtual-host-1</virtual-host>
+ * ...
+ * <virtual-host>custom-virtual-host-N</virtual-host>
+ * </jboss-web>
+ *
+ * @param dep webservice deployment
+ * @param jbossWebMD jboss web meta data
+ */
+ private void createJBossWebAppDescriptor(final Deployment dep, final JBossWebMetaData
jbossWebMD)
+ {
+ final SecurityMetaDataAccessorEJB ejbMDAccessor =
this.getEjbSecurityMetaDataAccessor(dep);
+
+ // Set security domain
+ final String securityDomain = ejbMDAccessor.getSecurityDomain(dep);
+ final boolean hasSecurityDomain = securityDomain != null;
+
+ if (hasSecurityDomain)
+ {
+ jbossWebMD.setSecurityDomain(securityDomain);
+ }
+
+ // Set context root
+ final String contextRoot = dep.getService().getContextRoot();
+ jbossWebMD.setContextRoot(contextRoot);
+
+ // Set virtual hosts
+ final List<String> virtualHosts = dep.getService().getVirtualHosts();
+ jbossWebMD.setVirtualHosts(virtualHosts);
+ }
+
+ /**
+ * Creates servlets part of web.xml descriptor.
+ *
+ * <pre>
+ * <servlet>
+ * <servlet-name>WSEndpointShortName</servlet-name>
+ *
<servlet-class>WSEndpointTargetBeanName</servlet-class>
+ * </servlet>
+ * </pre>
+ *
+ * @param dep webservice deployment
+ * @param jbossWebMD jboss web meta data
+ */
+ private void createServlets(final Deployment dep, final JBossWebMetaData jbossWebMD)
+ {
+ final JBossServletsMetaData servlets = WebMetaDataHelper.getServlets(jbossWebMD);
+
+ for (final Endpoint endpoint : dep.getService().getEndpoints())
+ {
+ final String endpointName = endpoint.getShortName();
+ final String endpointClassName = endpoint.getTargetBeanName();
+
+ WebMetaDataHelper.newServlet(endpointName, endpointClassName, servlets);
+ }
+ }
+
+ /**
+ * Creates servlet-mapping part of web.xml descriptor.
+ *
+ * <pre>
+ * <servlet-mapping>
+ * <servlet-name>WSEndpointShortName</servlet-name>
+ * <url-pattern>WSEndpointURLPattern</url-pattern>
+ * </servlet-mapping>
+ * </pre>
+ *
+ * @param dep webservice deployment
+ * @param jbossWebMD jboss web meta data
+ */
+ private void createServletMappings(final Deployment dep, final JBossWebMetaData
jbossWebMD)
+ {
+ final List<ServletMappingMetaData> servletMappings =
WebMetaDataHelper.getServletMappings(jbossWebMD);
+
+ for (final Endpoint ep : dep.getService().getEndpoints())
+ {
+ final String endpointName = ep.getShortName();
+ final List<String> urlPatterns =
WebMetaDataHelper.getUrlPatterns(ep.getURLPattern());
+
+ WebMetaDataHelper.newServletMapping(endpointName, urlPatterns,
servletMappings);
+ }
+ }
+
+ /**
+ * Creates security constraints part of web.xml descriptor.
+ *
+ *
+ * <security-constraint>
+ * <web-resource-collection>
+ * <web-resource-name>TestUnAuthPort</web-resource-name>
+ * <url-pattern>/HSTestRoot/TestUnAuth/*</url-pattern>
+ * <http-method>GET</http-method>
+ * <http-method>POST</http-method>
+ * </web-resource-collection>
+ * <auth-constraint>
+ * <role-name>*</role-name>
+ * </auth-constraint>
+ * <user-data-constraint>
+ * <transport-guarantee>NONE</transport-guarantee>
+ * </user-data-constraint>
+ * </security-constraint>
+ *
+ * @param dep webservice deployemnt
+ * @param jbossWebMD jboss web meta data
+ */
+ private void createSecurityConstraints(final Deployment dep, final JBossWebMetaData
jbossWebMD)
+ {
+ final SecurityMetaDataAccessorEJB ejbMDAccessor =
this.getEjbSecurityMetaDataAccessor(dep);
+
+ for (final Endpoint ejbEndpoint : dep.getService().getEndpoints())
+ {
+ final boolean secureWsdlAccess = ejbMDAccessor.isSecureWsdlAccess(ejbEndpoint);
+ final String transportGuarantee =
ejbMDAccessor.getTransportGuarantee(ejbEndpoint);
+ final String beanAuthMethod = ejbMDAccessor.getAuthMethod(ejbEndpoint);
+
+ if (beanAuthMethod != null || transportGuarantee != null)
+ {
+ // Security constraint
+ final List<SecurityConstraintMetaData> securityConstraints =
WebMetaDataHelper.getSecurityConstraints(jbossWebMD);
+ final SecurityConstraintMetaData securityConstraint =
WebMetaDataHelper.newSecurityConstraint(securityConstraints);
+
+ // Resource collection
+ final WebResourceCollectionsMetaData resourceCollections =
WebMetaDataHelper.getWebResourceCollections(securityConstraint);
+ final String endpointName = ejbEndpoint.getShortName();
+ final String urlPattern = ejbEndpoint.getURLPattern();
+ WebMetaDataHelper.newWebResourceCollection(endpointName, urlPattern,
secureWsdlAccess, resourceCollections);
+
+ // Optional auth-constraint
+ if (beanAuthMethod != null)
+ {
+ WebMetaDataHelper.newAuthConstraint(WebMetaDataHelper.getAllRoles(),
securityConstraint);
+ }
+ // Optional user-data-constraint
+ if (transportGuarantee != null)
+ {
+ WebMetaDataHelper.newUserDataConstraint(transportGuarantee,
securityConstraint);
+ }
+ }
+ }
+ }
+
+ // Only the first auth-method gives the war login-config/auth-method
+ private String getAuthMethodForDeployment(final Deployment dep)
+ {
+ final SecurityMetaDataAccessorEJB ejbMDAccessor =
this.getEjbSecurityMetaDataAccessor(dep);
+
+ for (final Endpoint ejbEndpoint : dep.getService().getEndpoints())
+ {
+ final String beanAuthMethod = ejbMDAccessor.getAuthMethod(ejbEndpoint);
+ final boolean hasBeanAuthMethod = beanAuthMethod != null;
+
+ if (hasBeanAuthMethod)
+ {
+ return beanAuthMethod;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns security builder associated with EJB deployment.
+ *
+ * @param dep webservice EJB deployment
+ * @return security builder for EJB deployment
+ */
+ private SecurityMetaDataAccessorEJB getEjbSecurityMetaDataAccessor(final Deployment
dep)
+ {
+ final boolean isJaxws = WSHelper.isJaxwsDeployment(dep);
+
+ return isJaxws ? this.ejb3SecurityAccessor : this.ejb21SecurityAccessor;
+ }
+
+}
Added:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataHelper.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataHelper.java
(rev 0)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/webservices/integration/tomcat/WebMetaDataHelper.java 2009-08-06
13:30:09 UTC (rev 10497)
@@ -0,0 +1,234 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.webservices.integration.tomcat;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.jboss.metadata.web.jboss.JBossServletMetaData;
+import org.jboss.metadata.web.jboss.JBossServletsMetaData;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.metadata.web.spec.AuthConstraintMetaData;
+import org.jboss.metadata.web.spec.SecurityConstraintMetaData;
+import org.jboss.metadata.web.spec.ServletMappingMetaData;
+import org.jboss.metadata.web.spec.TransportGuaranteeType;
+import org.jboss.metadata.web.spec.UserDataConstraintMetaData;
+import org.jboss.metadata.web.spec.WebResourceCollectionMetaData;
+import org.jboss.metadata.web.spec.WebResourceCollectionsMetaData;
+
+/**
+ * Utility class that simplifies work with JBossWebMetaData object structure.
+ *
+ * @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
+ * @author <a href="mailto:tdiesler@redhat.com">Thomas Diesler</a>
+ */
+final class WebMetaDataHelper
+{
+
+ /** Star utility string. */
+ private static final String STAR_STRING = "*";
+ /** GET http method utility string. */
+ private static final String GET_STRING = "GET";
+ /** POST http method utility string. */
+ private static final String POST_STRING = "POST";
+ /** GET and POST methods utility list. */
+ private static List<String> getAndPostMethods;
+ /** POST method utility list. */
+ private static List<String> onlyPostMethod;
+ /** All roles utility list. */
+ private static List<String> allRoles;
+
+ static
+ {
+ final List<String> getAndPostList = new LinkedList<String>();
+ getAndPostList.add(WebMetaDataHelper.GET_STRING);
+ getAndPostList.add(WebMetaDataHelper.POST_STRING);
+ WebMetaDataHelper.getAndPostMethods =
Collections.unmodifiableList(getAndPostList);
+
+ final List<String> onlyPostList = new LinkedList<String>();
+ onlyPostList.add(WebMetaDataHelper.POST_STRING);
+ WebMetaDataHelper.onlyPostMethod = Collections.unmodifiableList(onlyPostList);
+
+ final List<String> roleNamesList = new LinkedList<String>();
+ roleNamesList.add(WebMetaDataHelper.STAR_STRING);
+ WebMetaDataHelper.allRoles = Collections.unmodifiableList(roleNamesList);
+ }
+
+ /**
+ * Constructor.
+ */
+ private WebMetaDataHelper()
+ {
+ super();
+ }
+
+ /**
+ * Gests servlets meta data from jboss web meta data.
+ * If not found it creates new servlets meta data
+ * and associates them with jboss web meta data.
+ *
+ * @param jbossWebMD jboss web meta data
+ * @return servlets meta data
+ */
+ static JBossServletsMetaData getServlets(final JBossWebMetaData jbossWebMD)
+ {
+ JBossServletsMetaData servlets = jbossWebMD.getServlets();
+ if (servlets == null)
+ {
+ servlets = new JBossServletsMetaData();
+ jbossWebMD.setServlets(servlets);
+ }
+
+ return servlets;
+ }
+
+ /**
+ * Gests servlet mappings meta data from jboss web meta data.
+ * If not found it creates new servlet mappings meta data
+ * and associates them with jboss web meta data.
+ *
+ * @param jbossWebMD jboss web meta data
+ * @return servlet mappings meta data
+ */
+ static List<ServletMappingMetaData> getServletMappings(final JBossWebMetaData
jbossWebMD)
+ {
+ List<ServletMappingMetaData> servletMappings =
jbossWebMD.getServletMappings();
+ if (servletMappings == null)
+ {
+ servletMappings = new ArrayList<ServletMappingMetaData>();
+ jbossWebMD.setServletMappings(servletMappings);
+ }
+
+ return servletMappings;
+ }
+
+ /**
+ * Gests security constraints meta data from jboss web meta data.
+ * If not found it creates new security constraints meta data
+ * and associates them with jboss web meta data.
+ *
+ * @param jbossWebMD jboss web meta data
+ * @return security constraints meta data
+ */
+ static List<SecurityConstraintMetaData> getSecurityConstraints(final
JBossWebMetaData jbossWebMD)
+ {
+ List<SecurityConstraintMetaData> securityConstraints =
jbossWebMD.getSecurityContraints();
+ if (securityConstraints == null)
+ {
+ securityConstraints = new ArrayList<SecurityConstraintMetaData>();
+ jbossWebMD.setSecurityContraints(securityConstraints);
+ }
+
+ return securityConstraints;
+ }
+
+ static WebResourceCollectionsMetaData getWebResourceCollections(final
SecurityConstraintMetaData securityConstraint)
+ {
+ WebResourceCollectionsMetaData webResourceCollections =
securityConstraint.getResourceCollections();
+ if (webResourceCollections == null)
+ {
+ webResourceCollections = new WebResourceCollectionsMetaData();
+ securityConstraint.setResourceCollections(webResourceCollections);
+ }
+
+ return webResourceCollections;
+ }
+
+ static SecurityConstraintMetaData newSecurityConstraint(final
List<SecurityConstraintMetaData> securityConstraints)
+ {
+ final SecurityConstraintMetaData securityConstraint = new
SecurityConstraintMetaData();
+ securityConstraints.add(securityConstraint);
+
+ return securityConstraint;
+ }
+
+ static WebResourceCollectionMetaData newWebResourceCollection(final String
servletName, final String urlPattern, final boolean secure,
+ final WebResourceCollectionsMetaData webResourceCollections)
+ {
+ final WebResourceCollectionMetaData webResourceCollection = new
WebResourceCollectionMetaData();
+ webResourceCollection.setWebResourceName(servletName);
+
webResourceCollection.setUrlPatterns(WebMetaDataHelper.getUrlPatterns(urlPattern));
+ webResourceCollection.setHttpMethods(WebMetaDataHelper.getHttpMethods(secure));
+ webResourceCollections.add(webResourceCollection);
+
+ return webResourceCollection;
+ }
+
+ static JBossServletMetaData newServlet(final String servletName, final String
servletClass, final JBossServletsMetaData servlets)
+ {
+ final JBossServletMetaData servlet = new JBossServletMetaData();
+ servlet.setServletName(servletName);
+ servlet.setServletClass(servletClass);
+ servlets.add(servlet);
+
+ return servlet;
+ }
+
+ static ServletMappingMetaData newServletMapping(final String servletName, final
List<String> urlPatterns, final List<ServletMappingMetaData> servletMappings)
+ {
+ final ServletMappingMetaData servletMapping = new ServletMappingMetaData();
+ servletMapping.setServletName(servletName);
+ servletMapping.setUrlPatterns(urlPatterns);
+ servletMappings.add(servletMapping);
+
+ return servletMapping;
+ }
+
+ static AuthConstraintMetaData newAuthConstraint(final List<String> roleNames,
final SecurityConstraintMetaData securityConstraint)
+ {
+ final AuthConstraintMetaData authConstraint = new AuthConstraintMetaData();
+ authConstraint.setRoleNames(roleNames);
+ securityConstraint.setAuthConstraint(authConstraint);
+
+ return authConstraint;
+ }
+
+ static UserDataConstraintMetaData newUserDataConstraint(final String
transportGuarantee, final SecurityConstraintMetaData securityConstraint)
+ {
+ final UserDataConstraintMetaData userDataConstraint = new
UserDataConstraintMetaData();
+ final TransportGuaranteeType transportGuaranteeValue =
TransportGuaranteeType.valueOf(transportGuarantee);
+ userDataConstraint.setTransportGuarantee(transportGuaranteeValue);
+ securityConstraint.setUserDataConstraint(userDataConstraint);
+
+ return userDataConstraint;
+ }
+
+ static List<String> getUrlPatterns(final String urlPattern)
+ {
+ final List<String> linkedList = new LinkedList<String>();
+ linkedList.add(urlPattern);
+ return linkedList;
+ }
+
+ static List<String> getHttpMethods(final boolean secureWsdlAccess)
+ {
+ return secureWsdlAccess ? WebMetaDataHelper.getAndPostMethods :
WebMetaDataHelper.onlyPostMethod;
+ }
+
+ static List<String> getAllRoles()
+ {
+ return WebMetaDataHelper.allRoles;
+ }
+
+}