Author: dblevins
Date: Tue Jun 24 22:11:42 2008
New Revision: 671431
URL: http://svn.apache.org/viewvc?rev=671431&view=rev
Log:
Ability to shut off webservices support. Eliminates all webservice related
material from deployments
Added:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoveWebServices.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=671431&r1=671430&r2=671431&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
Tue Jun 24 22:11:42 2008
@@ -105,6 +105,7 @@
private final DeploymentLoader deploymentLoader;
private final boolean offline;
private static final String CLASSPATH_AS_EAR =
"openejb.deployments.classpath.ear";
+ static final String WEBSERVICES_ENABLED = "openejb.webservices.enabled";
public ConfigurationFactory() {
this(false);
@@ -140,7 +141,12 @@
chain.add(new DebuggableVmHackery());
}
- chain.add(new WsDeployer());
+ String webservicesEnabled =
SystemInstance.get().getProperty(WEBSERVICES_ENABLED, "true");
+ if (Boolean.parseBoolean(webservicesEnabled)){
+ chain.add(new WsDeployer());
+ } else {
+ chain.add(new RemoveWebServices());
+ }
chain.add(new CmpJpaConversion());
chain.add(new OpenEjb2Conversion());
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=671431&r1=671430&r2=671431&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
Tue Jun 24 22:11:42 2008
@@ -46,6 +46,7 @@
import org.apache.openejb.ClassLoaderUtil;
import org.apache.openejb.OpenEJB;
import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.jee.Application;
import org.apache.openejb.jee.ApplicationClient;
import org.apache.openejb.jee.Connector;
@@ -569,6 +570,13 @@
}
private static void addWebservices(WsModule wsModule) throws
OpenEJBException {
+ String webservicesEnabled =
SystemInstance.get().getProperty(ConfigurationFactory.WEBSERVICES_ENABLED,
"true");
+ if (!Boolean.parseBoolean(webservicesEnabled)) {
+ wsModule.getAltDDs().remove("webservices.xml");
+ wsModule.setWebservices(null); // should be null already, but just
for good measure
+ return;
+ }
+
// get location of webservices.xml file
Object webservicesObject = wsModule.getAltDDs().get("webservices.xml");
if (webservicesObject == null || !(webservicesObject instanceof URL)) {
Added:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoveWebServices.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoveWebServices.java?rev=671431&view=auto
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoveWebServices.java
(added)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/RemoveWebServices.java
Tue Jun 24 22:11:42 2008
@@ -0,0 +1,124 @@
+/**
+ * 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.
+ */
+package org.apache.openejb.config;
+
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.jee.AssemblyDescriptor;
+import org.apache.openejb.jee.ContainerTransaction;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.Interceptor;
+import org.apache.openejb.jee.InterceptorBinding;
+import org.apache.openejb.jee.Method;
+import org.apache.openejb.jee.MethodPermission;
+import org.apache.openejb.jee.SessionBean;
+import org.apache.openejb.jee.oejb3.EjbDeployment;
+import org.apache.openejb.jee.oejb3.OpenejbJar;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @version $Rev: 607160 $ $Date: 2007-12-27 18:22:44 -0800 (Thu, 27 Dec 2007)
$
+ */
+class RemoveWebServices implements DynamicDeployer {
+
+ public AppModule deploy(AppModule appModule) throws OpenEJBException {
+
+ for (EjbModule ejbModule : appModule.getEjbModules()) {
+ EjbJar ejbJar = ejbModule.getEjbJar();
+ OpenejbJar openejbJar = ejbModule.getOpenejbJar();
+ Map<String, EjbDeployment> deployments =
openejbJar.getDeploymentsByEjbName();
+
+ for (EnterpriseBean bean : ejbJar.getEnterpriseBeans()) {
+
+ String ejbName = bean.getEjbName();
+ EjbDeployment ejbDeployment = deployments.get(ejbName);
+
+ // Clear any <service-ref> references from ejbs
+ bean.getServiceRef().clear();
+
+ if (!(bean instanceof SessionBean)) {
+ continue;
+ }
+
+ SessionBean sessionBean = (SessionBean) bean;
+
+ if (sessionBean.getServiceEndpoint() == null) continue;
+
+ sessionBean.setServiceEndpoint(null);
+
+ // Now check if the bean has no other interfaces
+ // if not, then we should just delete it
+ if (sessionBean.getHome() != null) continue;
+ if (sessionBean.getLocalHome() != null) continue;
+ if (sessionBean.getBusinessLocal().size() > 0) continue;
+ if (sessionBean.getBusinessRemote().size() > 0) continue;
+
+ // Ok, delete away...
+ ejbJar.removeEnterpriseBean(ejbName);
+ openejbJar.removeEjbDeployment(ejbDeployment);
+
+ // As well, let's get rid of any transaction or security
attributes
+ // associated with the bean we just deleted.
+ AssemblyDescriptor assemblyDescriptor =
ejbJar.getAssemblyDescriptor();
+ if (assemblyDescriptor != null) {
+ for (MethodPermission permission :
copy(assemblyDescriptor.getMethodPermission())) {
+ for (Method method : copy(permission.getMethod())) {
+ if (method.getEjbName().equals(ejbName)) {
+ permission.getMethod().remove(method);
+ }
+ }
+ if (permission.getMethod().size() == 0) {
+
assemblyDescriptor.getMethodPermission().remove(permission);
+ }
+ }
+
+ for (ContainerTransaction transaction :
copy(assemblyDescriptor.getContainerTransaction())) {
+ for (Method method : copy(transaction.getMethod())) {
+ if (method.getEjbName().equals(ejbName)) {
+ transaction.getMethod().remove(method);
+ }
+ }
+ if (transaction.getMethod().size() == 0) {
+
assemblyDescriptor.getContainerTransaction().remove(transaction);
+ }
+ }
+
+ for (InterceptorBinding binding :
copy(assemblyDescriptor.getInterceptorBinding())) {
+ if (binding.getEjbName().equals(ejbName)) {
+
assemblyDescriptor.getInterceptorBinding().remove(binding);
+ }
+ }
+ }
+ }
+
+ // Clear any <service-ref> references from interceptors
+ for (Interceptor interceptor : ejbJar.getInterceptors()) {
+ interceptor.getServiceRef().clear();
+ }
+
+ }
+ return appModule;
+ }
+
+ public <T> List<T> copy(Collection<T> list) {
+ return new ArrayList<T>(list);
+ }
+}