You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/01/23 03:43:29 UTC
svn commit: r498898 - in
/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config:
AutoConfigAndDeploy.java ConfigurationFactory.java GeronimoMappedName.java
Author: dblevins
Date: Mon Jan 22 18:43:24 2007
New Revision: 498898
URL: http://svn.apache.org/viewvc?view=rev&rev=498898
Log:
Enhanced the AutoConfigAndDeploy so that it can do the job of the AutoDeployer.
Added hack for Geronimo integration.
Added:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/GeronimoMappedName.java
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoConfigAndDeploy.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoConfigAndDeploy.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoConfigAndDeploy.java?view=diff&rev=498898&r1=498897&r2=498898
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoConfigAndDeploy.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AutoConfigAndDeploy.java Mon Jan 22 18:43:24 2007
@@ -40,11 +40,29 @@
public static Logger logger = Logger.getInstance("OpenEJB", "org.apache.openejb.util.resources");
private final ConfigurationFactory configFactory;
+ private boolean autoCreateContainers = true;
+ private boolean autoCreateConnectors = true;
public AutoConfigAndDeploy(ConfigurationFactory configFactory) {
this.configFactory = configFactory;
}
+ public boolean autoCreateConnectors() {
+ return autoCreateConnectors;
+ }
+
+ public void autoCreateConnectors(boolean autoCreateConnectors) {
+ this.autoCreateConnectors = autoCreateConnectors;
+ }
+
+ public boolean autoCreateContainers() {
+ return autoCreateContainers;
+ }
+
+ public void autoCreateContainers(boolean autoCreateContainers) {
+ this.autoCreateContainers = autoCreateContainers;
+ }
+
public void init() throws OpenEJBException {
}
@@ -76,8 +94,7 @@
Bean[] beans = EjbJarUtils.getBeans(ejbModule.getEjbJar());
- for (int i = 0; i < beans.length; i++) {
- final Bean bean = beans[i];
+ for (Bean bean : beans) {
EjbDeployment ejbDeployment = openejbJar.getDeploymentsByEjbName().get(bean.getEjbName());
if (ejbDeployment == null) {
@@ -92,10 +109,14 @@
String containerId = getUsableContainer(containerInfoType);
if (containerId == null){
- ContainerInfo containerInfo = configFactory.configureService(containerInfoType);
- logger.warning("Auto-creating a container for bean " + ejbDeployment.getDeploymentId() + ": Container(type=" + bean.getType() + ", id=" + containerInfo.id + ")");
- configFactory.install(containerInfo);
- containerId = containerInfo.id;
+ if (autoCreateContainers) {
+ ContainerInfo containerInfo = configFactory.configureService(containerInfoType);
+ logger.warning("Auto-creating a container for bean " + ejbDeployment.getDeploymentId() + ": Container(type=" + bean.getType() + ", id=" + containerInfo.id + ")");
+ configFactory.install(containerInfo);
+ containerId = containerInfo.id;
+ } else {
+ throw new OpenEJBException("A container of type " + bean.getType() + " must be declared in the configuration file for bean: "+bean.getEjbName());
+ }
}
ejbDeployment.setContainerId(containerId);
@@ -107,9 +128,13 @@
// create the container if it doesn't exist
if (!configFactory.getContainerIds().contains(ejbDeployment.getContainerId())) {
- ContainerInfo containerInfo = configFactory.configureService(ConfigurationFactory.getContainerInfoType(bean.getType()));
- logger.warning("Auto-creating a container for bean " + ejbDeployment.getDeploymentId() + ": Container(type=" + bean.getType() + ", id=" + containerInfo.id + ")");
- configFactory.install(containerInfo);
+ if (autoCreateContainers){
+ ContainerInfo containerInfo = configFactory.configureService(ConfigurationFactory.getContainerInfoType(bean.getType()));
+ logger.warning("Auto-creating a container for bean " + ejbDeployment.getDeploymentId() + ": Container(type=" + bean.getType() + ", id=" + containerInfo.id + ")");
+ configFactory.install(containerInfo);
+ } else {
+ throw new OpenEJBException("A container of type " + bean.getType() + " must be declared in the configuration file for bean: "+bean.getEjbName());
+ }
}
@@ -129,10 +154,15 @@
if (!connectorMap.contains(resRefName)) {
String name = resRefName.replaceFirst(".*/", "");
if (!connectorMap.contains(name)) {
- ConnectorInfo connectorInfo = configFactory.configureService(ConnectorInfo.class);
- id = connectorInfo.id = name;
- logger.warning("Auto-creating a connector for res-ref-name '" + resRefName + "' in bean '" + ejbDeployment.getDeploymentId() + "': Connector(id=" + id + "). THERE IS LITTLE CHANCE THIS WILL WORK!");
- configFactory.install(connectorInfo);
+
+ if (autoCreateConnectors) {
+ ConnectorInfo connectorInfo = configFactory.configureService(ConnectorInfo.class);
+ id = connectorInfo.id = name;
+ logger.warning("Auto-creating a connector for res-ref-name '" + resRefName + "' in bean '" + ejbDeployment.getDeploymentId() + "': Connector(id=" + id + "). THERE IS LITTLE CHANCE THIS WILL WORK!");
+ configFactory.install(connectorInfo);
+ } else {
+ throw new OpenEJBException("Cannot find a connector named '"+resRefName+"' or '"+name+"' to auto-link for bean: "+bean.getEjbName()+" resource-ref "+resRefName);
+ }
}
}
logger.warning("Auto-linking res-ref-name '" + resRefName + "' in bean " + ejbDeployment.getDeploymentId() + " to Connector(id=" + id + ")");
@@ -143,7 +173,12 @@
List<String> connectorMap = configFactory.getConnectorIds();
if (!connectorMap.contains(link.getResId())) {
- logger.error("Bad resource-link in bean '" + ejbDeployment.getDeploymentId() + "': No such connector with specified res-id: ResourceLink(res-ref-name=" + link.getResRefName() + ", res-id" + link.getResId() + ")");
+ String message = "Bad resource-link in bean '" + ejbDeployment.getDeploymentId() + "': No such connector with specified res-id: ResourceLink(res-ref-name=" + link.getResRefName() + ", res-id" + link.getResId() + ")";
+ if (!autoCreateConnectors){
+ throw new OpenEJBException(message);
+ }
+
+ logger.error(message);
String id = null;
if (connectorMap.size() > 0) {
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java?view=diff&rev=498898&r1=498897&r2=498898
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/ConfigurationFactory.java Mon Jan 22 18:43:24 2007
@@ -96,13 +96,19 @@
DynamicDeployer deployer;
if (offline) {
- deployer = new AutoDeployer(this);
-
+ AutoConfigAndDeploy autoConfigAndDeploy = new AutoConfigAndDeploy(this);
+ autoConfigAndDeploy.autoCreateConnectors(false);
+ autoConfigAndDeploy.autoCreateContainers(false);
+ deployer = autoConfigAndDeploy;
} else {
deployer = new AutoConfigAndDeploy(this);
}
deployer = new AnnotationDeployer(deployer);
+
+ if (System.getProperty("duct tape") != null){
+ deployer = new GeronimoMappedName(deployer);
+ }
boolean shouldValidate = !SystemInstance.get().getProperty("openejb.validation.skip", "false").equalsIgnoreCase("true");
if (shouldValidate) {
Added: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/GeronimoMappedName.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/GeronimoMappedName.java?view=auto&rev=498898
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/GeronimoMappedName.java (added)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/GeronimoMappedName.java Mon Jan 22 18:43:24 2007
@@ -0,0 +1,98 @@
+/**
+ * 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.alt.config;
+
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.EjbRef;
+import org.apache.openejb.jee.EjbLocalRef;
+import org.apache.openejb.jee.MessageDestinationRef;
+import org.apache.openejb.jee.PersistenceContextRef;
+import org.apache.openejb.jee.PersistenceUnitRef;
+import org.apache.openejb.jee.ResourceRef;
+import org.apache.openejb.jee.ResourceEnvRef;
+import org.apache.openejb.jee.ServiceRef;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class GeronimoMappedName implements DynamicDeployer {
+
+ private static final String MAPPED_NAME_PREFIX = "jndi:java:comp/geronimo/env/";
+
+ private final DynamicDeployer deployer;
+
+ public GeronimoMappedName(DynamicDeployer deployer) {
+ this.deployer = deployer;
+ }
+
+ public AppModule deploy(AppModule appModule) throws OpenEJBException {
+ mapReferences(appModule);
+ appModule = deployer.deploy(appModule);
+ mapReferences(appModule);
+ return appModule;
+ }
+
+ private void mapReferences(AppModule appModule) {
+ for (EjbModule ejbModule : appModule.getEjbModules()) {
+ mapReferences(ejbModule.getEjbJar());
+ }
+ }
+
+ private void mapReferences(EjbJar ejbJar) {
+ if (ejbJar == null){
+ return;
+ }
+
+ for (EnterpriseBean enterpriseBean : ejbJar.getEnterpriseBeans()) {
+ for (EjbRef ref : enterpriseBean.getEjbRef()) {
+ String refName = ref.getEjbRefName();
+ ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+ }
+ for (EjbLocalRef ref : enterpriseBean.getEjbLocalRef()) {
+ String refName = ref.getEjbRefName();
+ ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+ }
+ for (MessageDestinationRef ref : enterpriseBean.getMessageDestinationRef()) {
+ String refName = ref.getMessageDestinationRefName();
+ ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+ }
+ for (PersistenceContextRef ref : enterpriseBean.getPersistenceContextRef()) {
+ String refName = ref.getPersistenceContextRefName();
+ ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+ }
+ for (PersistenceUnitRef ref : enterpriseBean.getPersistenceUnitRef()) {
+ String refName = ref.getPersistenceUnitRefName();
+ ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+ }
+ for (ResourceRef ref : enterpriseBean.getResourceRef()) {
+ String refName = ref.getResRefName();
+ ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+ }
+ for (ResourceEnvRef ref : enterpriseBean.getResourceEnvRef()) {
+ String refName = ref.getResourceEnvRefName();
+ ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+ }
+ for (ServiceRef ref : enterpriseBean.getServiceRef()) {
+ String refName = ref.getServiceRefName();
+ ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+ }
+ }
+ }
+
+}